aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/measite/minidns
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/measite/minidns')
-rw-r--r--src/main/java/de/measite/minidns/Question.java20
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