From f13813186f7d106ff32e525b2517227108651dd9 Mon Sep 17 00:00:00 2001 From: Rene Treffer Date: Tue, 22 Jul 2014 23:22:35 +0200 Subject: Add PTR record parsing --- src/main/java/de/measite/minidns/Record.java | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/main/java/de/measite/minidns/Record.java') diff --git a/src/main/java/de/measite/minidns/Record.java b/src/main/java/de/measite/minidns/Record.java index 8f8d0d0e..f14aa0b8 100644 --- a/src/main/java/de/measite/minidns/Record.java +++ b/src/main/java/de/measite/minidns/Record.java @@ -9,6 +9,7 @@ import de.measite.minidns.record.AAAA; import de.measite.minidns.record.CNAME; import de.measite.minidns.record.Data; import de.measite.minidns.record.NS; +import de.measite.minidns.record.PTR; import de.measite.minidns.record.SRV; import de.measite.minidns.util.NameUtil; @@ -250,6 +251,9 @@ public class Record { case CNAME: this.payloadData = new CNAME(); break; + case PTR: + this.payloadData = new PTR(); + break; default: System.out.println("Unparsed type " + type); this.payloadData = null; -- cgit v1.2.3 From b0f8bec1cbfa6d21e0873c63d5213bd12d429bd8 Mon Sep 17 00:00:00 2001 From: Rene Treffer Date: Wed, 23 Jul 2014 00:00:55 +0200 Subject: Add TXT record --- src/main/java/de/measite/minidns/Record.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/main/java/de/measite/minidns/Record.java') diff --git a/src/main/java/de/measite/minidns/Record.java b/src/main/java/de/measite/minidns/Record.java index f14aa0b8..6aaf4f7d 100644 --- a/src/main/java/de/measite/minidns/Record.java +++ b/src/main/java/de/measite/minidns/Record.java @@ -11,6 +11,7 @@ import de.measite.minidns.record.Data; import de.measite.minidns.record.NS; import de.measite.minidns.record.PTR; import de.measite.minidns.record.SRV; +import de.measite.minidns.record.TXT; import de.measite.minidns.util.NameUtil; /** @@ -231,7 +232,11 @@ public class Record { public void parse(DataInputStream dis, byte[] data) throws IOException { this.name = NameUtil.parse(dis, data); this.type = TYPE.getType(dis.readUnsignedShort()); - this.clazz = CLASS.getClass(dis.readUnsignedShort()); + int clazzValue = dis.readUnsignedShort(); + this.clazz = CLASS.getClass(clazzValue); + if (this.clazz == null) { + System.out.println("Unknown class " + clazzValue); + } this.ttl = (((long)dis.readUnsignedShort()) << 32) + dis.readUnsignedShort(); int payloadLength = dis.readUnsignedShort(); @@ -254,6 +259,9 @@ public class Record { case PTR: this.payloadData = new PTR(); break; + case TXT: + this.payloadData = new TXT(); + break; default: System.out.println("Unparsed type " + type); this.payloadData = null; -- cgit v1.2.3 From 2bddcc9f997e5b1e565478e99c55488c86a85e76 Mon Sep 17 00:00:00 2001 From: Rene Treffer Date: Wed, 23 Jul 2014 22:43:12 +0200 Subject: Add parsing for mdns QU records (RFC6762) --- src/main/java/de/measite/minidns/Record.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/main/java/de/measite/minidns/Record.java') diff --git a/src/main/java/de/measite/minidns/Record.java b/src/main/java/de/measite/minidns/Record.java index 6aaf4f7d..26af4711 100644 --- a/src/main/java/de/measite/minidns/Record.java +++ b/src/main/java/de/measite/minidns/Record.java @@ -222,6 +222,11 @@ public class Record { */ protected Data payloadData; + /** + * MDNS defines the highest bit of the class as the unicast query bit. + */ + protected boolean unicastQuery; + /** * Parse a given record based on the full message data and the current * stream position. @@ -233,7 +238,8 @@ public class Record { this.name = NameUtil.parse(dis, data); this.type = TYPE.getType(dis.readUnsignedShort()); int clazzValue = dis.readUnsignedShort(); - this.clazz = CLASS.getClass(clazzValue); + this.clazz = CLASS.getClass(clazzValue & 0x7fff); + this.unicastQuery = (clazzValue & 0x8000) > 0; if (this.clazz == null) { System.out.println("Unknown class " + clazzValue); } @@ -298,6 +304,14 @@ public class Record { (q.getName().equals(name)); } + /** + * See if this query/response was a unicast query (highest class bit set). + * @return True if it is a unicast query/response record. + */ + public boolean isUnicastQuery() { + return unicastQuery; + } + /** * The generic record name, e.g. "measite.de". * @return The record name. -- cgit v1.2.3