Merge branch 'v0.1'

Rene Treffer created

Conflicts:
	src/main/java/de/measite/minidns/Record.java

Change summary

src/main/java/de/measite/minidns/DNSMessage.java |  5 ++++-
src/main/java/de/measite/minidns/Question.java   |  5 +++++
src/main/java/de/measite/minidns/Record.java     | 16 +++++++++++++++-
3 files changed, 24 insertions(+), 2 deletions(-)

Detailed changes

src/main/java/de/measite/minidns/DNSMessage.java 🔗

@@ -515,7 +515,10 @@ public class DNSMessage {
 
     public String toString() {
         return "-- DNSMessage " + id + " --\n" +
-               Arrays.toString(answers);
+               "Q" + Arrays.toString(questions) +
+               "NS" + Arrays.toString(nameserverRecords) +
+               "A" + Arrays.toString(answers) +
+               "ARR" + Arrays.toString(additionalResourceRecords);
     }
 
 }

src/main/java/de/measite/minidns/Question.java 🔗

@@ -134,4 +134,9 @@ public class Question {
         byte o[] = ((Question)other).toByteArray();
         return Arrays.equals(t, o);
     }
+
+    @Override
+    public String toString() {
+        return "Question/" + clazz + "/" + type + ": " + name;
+    }
 }

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.