Please forget my last message, I pressed send too quicly :) After a little digging in ResourceRecordImpl you have :
public String get( String id ) { return ( String ) attributes.get( id.toLowerCase() ); } Which return null for my address, due to the "toLowerCase()". Am I supposed to build my Attribute Set using .toLowerCase() for keys ? Like : attr.put(DnsAttribute.IP_ADDRESS.toLowerCase(),"192.168.66.66"); Julien Le mercredi 13 juin 2007 à 11:27 +0200, Julien Vermillard a écrit : > in > > /** > * Returns the raw IP address of this <code>InetAddress</code> > * object. The result is in network byte order: the highest order > * byte of the address is in <code>getAddress()[0]</code>. > * > * @return the raw IP address of this object. > */ > public byte[] getAddress() { > return null; > } > Le mercredi 13 juin 2007 à 11:10 +0200, Julien Vermillard a écrit : > > Le mardi 12 juin 2007 à 14:15 -0700, Enrique Rodriguez a écrit : > > > On 6/12/07, Julien Vermillard <[EMAIL PROTECTED]> wrote: > > > > ... > > > > 1# > > > > In DNS protocol, the RecordStore interface > > > > http://tinyurl.com/2prg84 > > > > > > I added your suggestion, re: generics and some minor Javadocs. I > > > recently completed a Javadoc run on Kerberos and Change Password and > > > DNS was on my TODO list. I'll step it up. > > > > > > > 2# > > > > I made my minimal RecordStore for just resolving few hostname to IP > > > > address. Be carefull, my knowledge of DNS is very low :) > > > > > > > > public Set getRecords(QuestionRecord question) throws Exception > > > > System.err.println("My store ! : "+question); > > > > Set<ResourceRecord> set=new HashSet<ResourceRecord>(); > > > > HashMap<String, Object> attr= new HashMap<String, Object>(); > > > > attr.put(DnsAttribute.DOMAIN_NAME,"mydomaine.net"); > > > > attr.put(DnsAttribute.IP_ADDRESS,"192.168.66.66"); > > > > attr.put(DnsAttribute.TYPE,"IN"); > > > > attr.put(DnsAttribute.CLASS,"A"); > > > > ResourceRecord rr=new ResourceRecordImpl("totoz.net", > > > > RecordType.A,RecordClass.IN,10000,attr); > > > > set.add(rr); > > > > return set; > > > > } > > > > > > > > dig report me "corrupted reply". > > > > > > > > Any idea of what I'm doing wrong ? > > > > > > Just eyeballing it, the only thing in 'attr' should be IP address. > > > The rest is redundant (and domain name conflicts) with the info put > > > into the RR constructor. > > > > > > What is your dig statement? If you query for "mydomaine.net" but are > > > returning "totoz.net" that could give you a problem. With the above > > > code you should be dig'ing: > > > > > > $ dig totoz.net > > > > > > and getting "192.168.66.66". > > > > > > Your reply could also be corrupted if UDP/TCP isn't being handled > > > properly. Our DNS provider doesn't have TCP support, though it is > > > trivial to add with MINA. TCP uses a 2-byte pre-pended size, which > > > could be throwing off the client-side decode. > > > > > > Enrique > > > > I use a DatagramAcceptor > > > > I made that test : > > Set<ResourceRecord> set=new HashSet<ResourceRecord>(); > > HashMap<String, Object> attr= new HashMap<String, Object>(); > > > > attr.put(DnsAttribute.IP_ADDRESS,"192.168.66.66"); > > ResourceRecord rr=new > > ResourceRecordImpl("totoz.net",RecordType.A,RecordClass.IN,10000,attr); > > set.add(rr); > > return set; > > > > dig result : > > > > :~$ dig @192.168.0.228 -p 10053 www.totoz.net > > Warning: Message parser reports malformed message packet. > > > > ; <<>> DiG 9.3.4 <<>> @192.168.0.228 -p 10053 www.totoz.net > > ; (1 server found) > > ;; global options: printcmd > > ;; Got answer: > > ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23978 > > ;; flags: qr rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 > > > > ;; QUESTION SECTION: > > ;www.totoz.net. IN A > > > > ;; Query time: 11 msec > > ;; SERVER: 192.168.0.228#10053(192.168.0.228) > > ;; WHEN: Wed Jun 13 11:04:24 2007 > > ;; > > > > The binary dump of query and the reply : > > > > http://rafb.net/p/Qb1QSm95.html > > > > Julien > > > > I'm going to look in the codec, I prolly missed something. > >