From 9e42bff01440c1351946a432126d5a1b87fb7c78 Mon Sep 17 00:00:00 2001 From: Rene Treffer Date: Wed, 30 Jul 2014 22:38:02 +0200 Subject: [PATCH] Allow mdns multicast / unicast reply queries --- .../java/de/measite/minidns/Question.java | 20 +++++++++++++++++-- 1 file 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 @@ -30,6 +30,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. */ @@ -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