diff options
author | Rene Treffer <treffer@measite.de> | 2014-07-30 22:38:02 +0200 |
---|---|---|
committer | Rene Treffer <treffer@measite.de> | 2014-07-30 22:38:02 +0200 |
commit | 9e42bff01440c1351946a432126d5a1b87fb7c78 (patch) | |
tree | 470e0a5082086454172ee76547b4f40779f8bb39 /src/main/java/de/measite | |
parent | 858251d52c2ab04b3026573fa3e14b19579cac19 (diff) |
Allow mdns multicast / unicast reply queries
Diffstat (limited to 'src/main/java/de/measite')
-rw-r--r-- | src/main/java/de/measite/minidns/Question.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/main/java/de/measite/minidns/Question.java b/src/main/java/de/measite/minidns/Question.java index 88300356..3b2fa1a1 100644 --- a/src/main/java/de/measite/minidns/Question.java +++ b/src/main/java/de/measite/minidns/Question.java @@ -31,6 +31,11 @@ public class Question { private final CLASS clazz; /** + * UnicastQueries have the highest bit of the CLASS field set to 1. + */ + private final boolean unicastQuery; + + /** * Cache for the serialized object. */ private byte[] byteArray; @@ -41,10 +46,21 @@ public class Question { * @param type The type, e.g. A. * @param clazz The class, usually IN (internet). */ - public Question(String name, TYPE type, CLASS clazz) { + public Question(String name, TYPE type, CLASS clazz, boolean unicastQuery) { this.name = name; this.type = type; this.clazz = clazz; + this.unicastQuery = unicastQuery; + } + + /** + * Create a dns question for the given name/type/class. + * @param name The name e.g. "measite.de". + * @param type The type, e.g. A. + * @param clazz The class, usually IN (internet). + */ + public Question(String name, TYPE type, CLASS clazz) { + this(name, type, clazz, false); } /** @@ -106,7 +122,7 @@ public class Question { try { dos.write(NameUtil.toByteArray(this.name)); dos.writeShort(type.getValue()); - dos.writeShort(clazz.getValue()); + dos.writeShort(clazz.getValue() | (unicastQuery ? (1 << 15) : 0)); dos.flush(); } catch (IOException e) { // Should never happen |