Refactored Dns classes
This commit is contained in:
parent
71c8d017ca
commit
e8491617c6
7 changed files with 163 additions and 166 deletions
115
src/zutil/net/dns/DnsConstants.java
Executable file
115
src/zutil/net/dns/DnsConstants.java
Executable file
|
|
@ -0,0 +1,115 @@
|
||||||
|
package zutil.net.dns;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public final class DnsConstants {
|
||||||
|
|
||||||
|
public static final class OPCODE {
|
||||||
|
/** a standard query (QUERY) */
|
||||||
|
public static final int QUERY = 0;
|
||||||
|
/** an inverse query (IQUERY) */
|
||||||
|
public static final int IQUERY = 1;
|
||||||
|
/** a server status request (STATUS) */
|
||||||
|
public static final int STATUS = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** DNS Response Codes */
|
||||||
|
public static final class RCODE {
|
||||||
|
/**
|
||||||
|
* No error condition
|
||||||
|
*/
|
||||||
|
public static final int NO_ERROR = 0;
|
||||||
|
/**
|
||||||
|
* Format error - The name server was
|
||||||
|
* unable to interpret the query.
|
||||||
|
*/
|
||||||
|
public static final int FORMAT_ERROR = 1;
|
||||||
|
/**
|
||||||
|
* Server failure - The name server was
|
||||||
|
* unable to process this query due to a
|
||||||
|
* problem with the name server.
|
||||||
|
*/
|
||||||
|
public static final int SERVER_FAILURE = 2;
|
||||||
|
/**
|
||||||
|
* Name Error - Meaningful only for
|
||||||
|
* responses from an authoritative name
|
||||||
|
* server, this code signifies that the
|
||||||
|
* domain name referenced in the query does
|
||||||
|
* not exist.
|
||||||
|
*/
|
||||||
|
public static final int NAME_ERROR = 3;
|
||||||
|
/**
|
||||||
|
* Not Implemented - The name server does
|
||||||
|
* not support the requested kind of query.
|
||||||
|
*/
|
||||||
|
public static final int NOT_IMPLEMENTED = 4;
|
||||||
|
/**
|
||||||
|
* Refused - The name server refuses to
|
||||||
|
* perform the specified operation for
|
||||||
|
* policy reasons.
|
||||||
|
*/
|
||||||
|
public static final int REFUSED = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static final class TYPE {
|
||||||
|
/** a host address */
|
||||||
|
public static final int A = 1;
|
||||||
|
/** an authoritative name server */
|
||||||
|
public static final int NS = 2;
|
||||||
|
/** a mail destination (Obsolete - use MX) */
|
||||||
|
public static final int MD = 3;
|
||||||
|
/** a mail forwarder (Obsolete - use MX) */
|
||||||
|
public static final int MF = 4;
|
||||||
|
/** the canonical name for an alias */
|
||||||
|
public static final int CNAME = 5;
|
||||||
|
/** marks the start of a zone of authority */
|
||||||
|
public static final int SOA = 6;
|
||||||
|
/** a mailbox domain name (EXPERIMENTAL) */
|
||||||
|
public static final int MB = 7;
|
||||||
|
/** a mail group member (EXPERIMENTAL) */
|
||||||
|
public static final int MG = 8;
|
||||||
|
/** a mail rename domain name (EXPERIMENTAL) */
|
||||||
|
public static final int MR = 9;
|
||||||
|
/** a null RR (EXPERIMENTAL) */
|
||||||
|
public static final int NULL = 10;
|
||||||
|
/** a well known service description */
|
||||||
|
public static final int WKS = 11;
|
||||||
|
/** a domain name pointer */
|
||||||
|
public static final int PTR = 12;
|
||||||
|
/** host information */
|
||||||
|
public static final int HINFO = 13;
|
||||||
|
/** mailbox or mail list information */
|
||||||
|
public static final int MINFO = 14;
|
||||||
|
/** mail exchange */
|
||||||
|
public static final int MX = 15;
|
||||||
|
/** text strings */
|
||||||
|
public static final int TXT = 16;
|
||||||
|
/** service location record in format {Instance}.{Service}.{Domain}*/
|
||||||
|
public static final int SRV = 33;
|
||||||
|
/** A request for a transfer of an entire zone */
|
||||||
|
public static final int AXFR = 252;
|
||||||
|
/** A request for mailbox-related records (MB, MG or MR) */
|
||||||
|
public static final int MAILB = 253;
|
||||||
|
/** A request for mail agent RRs (Obsolete - see MX) */
|
||||||
|
public static final int MAILA = 254;
|
||||||
|
/** A request for all records */
|
||||||
|
public static final int ANY = 255;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static final class CLASS {
|
||||||
|
/** the Internet */
|
||||||
|
public static final int IN = 1;
|
||||||
|
/** the CSNET class (Obsolete - used only for examples in some obsolete RFCs) */
|
||||||
|
public static final int CS = 2;
|
||||||
|
/** the CHAOS class */
|
||||||
|
public static final int CH = 3;
|
||||||
|
/** Hesiod [Dyer 87] */
|
||||||
|
public static final int HS = 4;
|
||||||
|
/** any class */
|
||||||
|
public static final int ANY = 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -11,7 +11,7 @@ import java.util.List;
|
||||||
/**
|
/**
|
||||||
* This class is a general wrapper for a whole DNS packet.
|
* This class is a general wrapper for a whole DNS packet.
|
||||||
*
|
*
|
||||||
* @see <a href="https://tools.ietf.org/html/rfc1035">rfc1035</a>
|
* @see <a href="https://tools.ietf.org/html/rfc1035">DNS Spec (rfc1035)</a>
|
||||||
* @author Ziver on 2016-04-11.
|
* @author Ziver on 2016-04-11.
|
||||||
*/
|
*/
|
||||||
public class DnsPacket {
|
public class DnsPacket {
|
||||||
|
|
|
||||||
|
|
@ -27,20 +27,10 @@ package zutil.net.dns;
|
||||||
import zutil.parser.binary.BinaryStruct;
|
import zutil.parser.binary.BinaryStruct;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Ziver on 2016-02-09.
|
* @see <a href="http://tools.ietf.org/html/rfc1035">DNS Spec (rfc1035)</a>
|
||||||
* Reference: http://tools.ietf.org/html/rfc1035
|
* @author Ziver
|
||||||
*/
|
*/
|
||||||
public class DnsPacketHeader implements BinaryStruct {
|
public class DnsPacketHeader implements BinaryStruct {
|
||||||
public static final int OPCODE_QUERY = 0;
|
|
||||||
public static final int OPCODE_IQUERY = 1;
|
|
||||||
public static final int OPCODE_STATUS = 2;
|
|
||||||
|
|
||||||
public static final int RCODE_NO_ERROR = 0;
|
|
||||||
public static final int RCODE_FORMAT_ERROR = 1;
|
|
||||||
public static final int RCODE_SERVER_FAILURE = 2;
|
|
||||||
public static final int RCODE_NAME_ERROR = 3;
|
|
||||||
public static final int RCODE_NOT_IMPLEMENTED = 4;
|
|
||||||
public static final int RCODE_REFUSED = 5;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Header section format
|
Header section format
|
||||||
|
|
@ -81,11 +71,8 @@ public class DnsPacketHeader implements BinaryStruct {
|
||||||
public boolean flagQueryResponse;
|
public boolean flagQueryResponse;
|
||||||
/**
|
/**
|
||||||
* A four bit field that specifies kind of query in this message.
|
* A four bit field that specifies kind of query in this message.
|
||||||
* <pre>
|
*
|
||||||
* 0 a standard query (QUERY)
|
* @see DnsConstants.OPCODE
|
||||||
* 1 an inverse query (IQUERY)
|
|
||||||
* 2 a server status request (STATUS)
|
|
||||||
* </pre>
|
|
||||||
*/
|
*/
|
||||||
@BinaryField(index=11, length=4)
|
@BinaryField(index=11, length=4)
|
||||||
public int flagOperationCode;
|
public int flagOperationCode;
|
||||||
|
|
@ -127,24 +114,8 @@ public class DnsPacketHeader implements BinaryStruct {
|
||||||
/**
|
/**
|
||||||
* this field is set as part of responses.
|
* this field is set as part of responses.
|
||||||
* The values have the following interpretation:
|
* The values have the following interpretation:
|
||||||
* <pre>
|
*
|
||||||
* 0 No error condition
|
* @see DnsConstants.RCODE
|
||||||
* 1 Format error - The name server was
|
|
||||||
* unable to interpret the query.
|
|
||||||
* 2 Server failure - The name server was
|
|
||||||
* unable to process this query due to a
|
|
||||||
* problem with the name server.
|
|
||||||
* 3 Name Error - Meaningful only for
|
|
||||||
* responses from an authoritative name
|
|
||||||
* server, this code signifies that the
|
|
||||||
* domain name referenced in the query does
|
|
||||||
* not exist.
|
|
||||||
* 4 Not Implemented - The name server does
|
|
||||||
* not support the requested kind of query.
|
|
||||||
* 5 Refused - The name server refuses to
|
|
||||||
* perform the specified operation for
|
|
||||||
* policy reasons.
|
|
||||||
*</pre>
|
|
||||||
*/
|
*/
|
||||||
@BinaryField(index=17, length=4)
|
@BinaryField(index=17, length=4)
|
||||||
public int flagResponseCode;
|
public int flagResponseCode;
|
||||||
|
|
|
||||||
|
|
@ -33,63 +33,10 @@ import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Ziver on 2016-02-09.
|
* @see <a href="http://tools.ietf.org/html/rfc1035">DNS Spec (rfc1035)</a>
|
||||||
* Reference: http://tools.ietf.org/html/rfc1035
|
* @author Ziver
|
||||||
*/
|
*/
|
||||||
public class DnsPacketQuestion implements BinaryStruct {
|
public class DnsPacketQuestion implements BinaryStruct {
|
||||||
/** a host address */
|
|
||||||
public static final int QTYPE_A = 1;
|
|
||||||
/** an authoritative name server */
|
|
||||||
public static final int QTYPE_NS = 2;
|
|
||||||
/** a mail destination (Obsolete - use MX) */
|
|
||||||
public static final int QTYPE_MD = 3;
|
|
||||||
/** a mail forwarder (Obsolete - use MX) */
|
|
||||||
public static final int QTYPE_MF = 4;
|
|
||||||
/** the canonical name for an alias */
|
|
||||||
public static final int QTYPE_CNAME = 5;
|
|
||||||
/** marks the start of a zone of authority */
|
|
||||||
public static final int QTYPE_SOA = 6;
|
|
||||||
/** a mailbox domain name (EXPERIMENTAL) */
|
|
||||||
public static final int QTYPE_MB = 7;
|
|
||||||
/** a mail group member (EXPERIMENTAL) */
|
|
||||||
public static final int QTYPE_MG = 8;
|
|
||||||
/** a mail rename domain name (EXPERIMENTAL) */
|
|
||||||
public static final int QTYPE_MR = 9;
|
|
||||||
/** a null RR (EXPERIMENTAL) */
|
|
||||||
public static final int QTYPE_NULL = 10;
|
|
||||||
/** a well known service description */
|
|
||||||
public static final int QTYPE_WKS = 11;
|
|
||||||
/** a domain name pointer */
|
|
||||||
public static final int QTYPE_PTR = 12;
|
|
||||||
/** host information */
|
|
||||||
public static final int QTYPE_HINFO = 13;
|
|
||||||
/** mailbox or mail list information */
|
|
||||||
public static final int QTYPE_MINFO = 14;
|
|
||||||
/** mail exchange */
|
|
||||||
public static final int QTYPE_MX = 15;
|
|
||||||
/** text strings */
|
|
||||||
public static final int QTYPE_TXT = 16;
|
|
||||||
/** service location record */
|
|
||||||
public static final int QTYPE_SRV = 33;
|
|
||||||
/** A request for a transfer of an entire zone */
|
|
||||||
public static final int QTYPE_AXFR = 252;
|
|
||||||
/** A request for mailbox-related records (MB, MG or MR) */
|
|
||||||
public static final int QTYPE_MAILB = 253;
|
|
||||||
/** A request for mail agent RRs (Obsolete - see MX) */
|
|
||||||
public static final int QTYPE_MAILA = 254;
|
|
||||||
/** A request for all records */
|
|
||||||
public static final int QTYPE_ANY = 255;
|
|
||||||
|
|
||||||
/** the Internet */
|
|
||||||
public static final int QCLASS_IN = 1;
|
|
||||||
/** the CSNET class (Obsolete - used only for examples in some obsolete RFCs) */
|
|
||||||
public static final int QCLASS_CS = 2;
|
|
||||||
/** the CHAOS class */
|
|
||||||
public static final int QCLASS_CH = 3;
|
|
||||||
/** Hesiod [Dyer 87] */
|
|
||||||
public static final int QCLASS_HS = 4;
|
|
||||||
/** any class */
|
|
||||||
public static final int QCLASS_ANY = 255;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Question section format
|
Question section format
|
||||||
|
|
@ -117,31 +64,35 @@ public class DnsPacketQuestion implements BinaryStruct {
|
||||||
* padding is used.
|
* padding is used.
|
||||||
*/
|
*/
|
||||||
@CustomBinaryField(index=10, serializer=FQDNStringSerializer.class)
|
@CustomBinaryField(index=10, serializer=FQDNStringSerializer.class)
|
||||||
public String qName;
|
public String name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* a two octet code which specifies the type of the query.
|
* a two octet code which specifies the type of the query.
|
||||||
* The values for this field include all codes valid for a
|
* The values for this field include all codes valid for a
|
||||||
* TYPE field, together with some more general codes which
|
* TYPE field, together with some more general codes which
|
||||||
* can match more than one type of RR.
|
* can match more than one type of RR.
|
||||||
|
*
|
||||||
|
* @see DnsConstants.TYPE
|
||||||
*/
|
*/
|
||||||
@BinaryField(index=10, length=16)
|
@BinaryField(index=10, length=16)
|
||||||
public int qType;
|
public int type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* a two octet code that specifies the class of the query.
|
* a two octet code that specifies the class of the query.
|
||||||
* For example, the QCLASS field is IN for the Internet.
|
* For example, the QCLASS field is IN for the Internet.
|
||||||
|
*
|
||||||
|
* @see DnsConstants.CLASS
|
||||||
*/
|
*/
|
||||||
@BinaryField(index=20, length=16)
|
@BinaryField(index=20, length=16)
|
||||||
public int qClass;
|
public int clazz;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public DnsPacketQuestion() {}
|
public DnsPacketQuestion() {}
|
||||||
public DnsPacketQuestion(String qName, int qType, int qClass) {
|
public DnsPacketQuestion(String name, int type, int clazz) {
|
||||||
this.qName = qName;
|
this.name = name;
|
||||||
this.qType = qType;
|
this.type = type;
|
||||||
this.qClass = qClass;
|
this.clazz = clazz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,56 +28,11 @@ import zutil.parser.binary.BinaryStruct;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Ziver on 2016-02-09.
|
* @see <a href="http://tools.ietf.org/html/rfc1035">DNS Spec (rfc1035)</a>
|
||||||
* Reference: http://tools.ietf.org/html/rfc1035
|
* @author Ziver
|
||||||
*/
|
*/
|
||||||
public class DnsPacketResource implements BinaryStruct {
|
public class DnsPacketResource implements BinaryStruct {
|
||||||
|
|
||||||
/** a host address */
|
|
||||||
public static final int TYPE_A = 1;
|
|
||||||
/** an authoritative name server */
|
|
||||||
public static final int TYPE_NS = 2;
|
|
||||||
/** a mail destination (Obsolete - use MX) */
|
|
||||||
public static final int TYPE_MD = 3;
|
|
||||||
/** a mail forwarder (Obsolete - use MX) */
|
|
||||||
public static final int TYPE_MF = 4;
|
|
||||||
/** the canonical name for an alias */
|
|
||||||
public static final int TYPE_CNAME = 5;
|
|
||||||
/** marks the start of a zone of authority */
|
|
||||||
public static final int TYPE_SOA = 6;
|
|
||||||
/** a mailbox domain name (EXPERIMENTAL) */
|
|
||||||
public static final int TYPE_MB = 7;
|
|
||||||
/** a mail group member (EXPERIMENTAL) */
|
|
||||||
public static final int TYPE_MG = 8;
|
|
||||||
/** a mail rename domain name (EXPERIMENTAL) */
|
|
||||||
public static final int TYPE_MR = 9;
|
|
||||||
/** a null RR (EXPERIMENTAL) */
|
|
||||||
public static final int TYPE_NULL = 10;
|
|
||||||
/** a well known service description */
|
|
||||||
public static final int TYPE_WKS = 11;
|
|
||||||
/** a domain name pointer */
|
|
||||||
public static final int TYPE_PTR = 12;
|
|
||||||
/** host information */
|
|
||||||
public static final int TYPE_HINFO = 13;
|
|
||||||
/** mailbox or mail list information */
|
|
||||||
public static final int TYPE_MINFO = 14;
|
|
||||||
/** mail exchange */
|
|
||||||
public static final int TYPE_MX = 15;
|
|
||||||
/** text strings */
|
|
||||||
public static final int TYPE_TXT = 16;
|
|
||||||
|
|
||||||
/** the Internet */
|
|
||||||
public static final int CLASS_IN = 1;
|
|
||||||
/** the CSNET class (Obsolete - used only for examples in some obsolete RFCs) */
|
|
||||||
public static final int CLASS_CS = 2;
|
|
||||||
/** the CHAOS class */
|
|
||||||
public static final int CLASS_CH = 3;
|
|
||||||
/** Hesiod [Dyer 87] */
|
|
||||||
public static final int CLASS_HS = 4;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The answer, authority, and additional sections all share the same
|
The answer, authority, and additional sections all share the same
|
||||||
format: a variable number of resource records, where the number of
|
format: a variable number of resource records, where the number of
|
||||||
|
|
@ -117,6 +72,8 @@ public class DnsPacketResource implements BinaryStruct {
|
||||||
* two octets containing one of the RR type codes. This
|
* two octets containing one of the RR type codes. This
|
||||||
* field specifies the meaning of the data in the RDATA
|
* field specifies the meaning of the data in the RDATA
|
||||||
* field.
|
* field.
|
||||||
|
*
|
||||||
|
* @see DnsConstants.TYPE
|
||||||
*/
|
*/
|
||||||
@BinaryField(index=20, length=16)
|
@BinaryField(index=20, length=16)
|
||||||
public int type;
|
public int type;
|
||||||
|
|
@ -124,6 +81,8 @@ public class DnsPacketResource implements BinaryStruct {
|
||||||
/**
|
/**
|
||||||
* two octets which specify the class of the data in the
|
* two octets which specify the class of the data in the
|
||||||
* RDATA field.
|
* RDATA field.
|
||||||
|
*
|
||||||
|
* @see DnsConstants.CLASS
|
||||||
*/
|
*/
|
||||||
@BinaryField(index=30, length=16)
|
@BinaryField(index=30, length=16)
|
||||||
public int clazz;
|
public int clazz;
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@ import java.util.logging.Logger;
|
||||||
* This class implements a MDNS Client. MDNS is a version
|
* This class implements a MDNS Client. MDNS is a version
|
||||||
* of the DNS protocol but used a Zeroconf application.
|
* of the DNS protocol but used a Zeroconf application.
|
||||||
*
|
*
|
||||||
* Created by Ziver
|
* @see <a href="http://tools.ietf.org/html/rfc1035">DNS Spec (rfc1035)</a>
|
||||||
|
* @see <a href="https://tools.ietf.org/html/rfc6763">DNS-SD Spec (rfc6763)</a>
|
||||||
|
* @author Ziver
|
||||||
*/
|
*/
|
||||||
public class MulticastDnsClient extends ThreadedUDPNetwork implements ThreadedUDPNetworkThread{
|
public class MulticastDnsClient extends ThreadedUDPNetwork implements ThreadedUDPNetworkThread{
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
@ -70,7 +72,7 @@ public class MulticastDnsClient extends ThreadedUDPNetwork implements ThreadedUD
|
||||||
|
|
||||||
|
|
||||||
public void sendProbe(String domain) throws IOException {
|
public void sendProbe(String domain) throws IOException {
|
||||||
int id = 0;//(int)(Math.random() * 0xFFFF);
|
int id = 0; // Needs to be zero when doing multicast
|
||||||
activeProbes.add(id);
|
activeProbes.add(id);
|
||||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||||
BinaryStructOutputStream out = new BinaryStructOutputStream(buffer);
|
BinaryStructOutputStream out = new BinaryStructOutputStream(buffer);
|
||||||
|
|
@ -80,8 +82,8 @@ public class MulticastDnsClient extends ThreadedUDPNetwork implements ThreadedUD
|
||||||
dnsPacket.getHeader().setDefaultQueryData();
|
dnsPacket.getHeader().setDefaultQueryData();
|
||||||
dnsPacket.addQuestion(new DnsPacketQuestion(
|
dnsPacket.addQuestion(new DnsPacketQuestion(
|
||||||
domain,
|
domain,
|
||||||
DnsPacketQuestion.QTYPE_SRV,
|
DnsConstants.TYPE.SRV,
|
||||||
DnsPacketQuestion.QCLASS_IN));
|
DnsConstants.CLASS.IN));
|
||||||
dnsPacket.write(out);
|
dnsPacket.write(out);
|
||||||
|
|
||||||
DatagramPacket udpPacket = new DatagramPacket(
|
DatagramPacket udpPacket = new DatagramPacket(
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,6 @@ import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
import static zutil.net.dns.DnsPacketQuestion.*;
|
|
||||||
import static zutil.net.dns.DnsPacketResource.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Ziver
|
* Created by Ziver
|
||||||
|
|
@ -94,7 +92,8 @@ public class DnsPacketTest {
|
||||||
public void writeRequestDnsPacketTest() throws IOException {
|
public void writeRequestDnsPacketTest() throws IOException {
|
||||||
DnsPacket packet = new DnsPacket();
|
DnsPacket packet = new DnsPacket();
|
||||||
packet.getHeader().setDefaultQueryData();
|
packet.getHeader().setDefaultQueryData();
|
||||||
packet.addQuestion(new DnsPacketQuestion("appletv.local", QTYPE_A, QCLASS_IN));
|
packet.addQuestion(new DnsPacketQuestion(
|
||||||
|
"appletv.local", DnsConstants.TYPE.A, DnsConstants.CLASS.IN));
|
||||||
|
|
||||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||||
BinaryStructOutputStream out = new BinaryStructOutputStream(buffer);
|
BinaryStructOutputStream out = new BinaryStructOutputStream(buffer);
|
||||||
|
|
@ -167,8 +166,8 @@ public class DnsPacketTest {
|
||||||
assertEquals("No Of Answer records", 1, packet.getAnswerRecords().size());
|
assertEquals("No Of Answer records", 1, packet.getAnswerRecords().size());
|
||||||
DnsPacketResource answer = packet.getAnswerRecords().get(0);
|
DnsPacketResource answer = packet.getAnswerRecords().get(0);
|
||||||
assertEquals("NAME", "appletv.local", answer.name);
|
assertEquals("NAME", "appletv.local", answer.name);
|
||||||
assertEquals("TYPE", TYPE_A, answer.type);
|
assertEquals("TYPE", DnsConstants.TYPE.A, answer.type);
|
||||||
assertEquals("CLASS", CLASS_IN, answer.clazz);
|
assertEquals("CLASS", DnsConstants.CLASS.IN, answer.clazz);
|
||||||
assertEquals("TTL", 30720, answer.ttl);
|
assertEquals("TTL", 30720, answer.ttl);
|
||||||
assertEquals("IPv4", new String(new char[]{0x99, 0x6d, 0x07, 0x5a}), answer.data);
|
assertEquals("IPv4", new String(new char[]{0x99, 0x6d, 0x07, 0x5a}), answer.data);
|
||||||
}
|
}
|
||||||
|
|
@ -212,9 +211,9 @@ Domain Name System (query)
|
||||||
header.countQuestion = 1;
|
header.countQuestion = 1;
|
||||||
|
|
||||||
DnsPacketQuestion question = new DnsPacketQuestion();
|
DnsPacketQuestion question = new DnsPacketQuestion();
|
||||||
question.qName = "www.google.com";
|
question.name = "www.google.com";
|
||||||
question.qType = QTYPE_A;
|
question.type = DnsConstants.TYPE.A;
|
||||||
question.qClass = QCLASS_IN;
|
question.clazz = DnsConstants.CLASS.IN;
|
||||||
packet.addQuestion(question);
|
packet.addQuestion(question);
|
||||||
|
|
||||||
ByteArrayOutputStream buff = new ByteArrayOutputStream();
|
ByteArrayOutputStream buff = new ByteArrayOutputStream();
|
||||||
|
|
@ -309,27 +308,27 @@ Domain Name System (response)
|
||||||
|
|
||||||
// Query
|
// Query
|
||||||
DnsPacketQuestion question = packet.getQuestions().get(0);
|
DnsPacketQuestion question = packet.getQuestions().get(0);
|
||||||
assertEquals("qNAME", "www.google.com", question.qName);
|
assertEquals("qNAME", "www.google.com", question.name);
|
||||||
assertEquals("qType", DnsPacketQuestion.QTYPE_A, question.qType);
|
assertEquals("type", DnsConstants.TYPE.A, question.type);
|
||||||
assertEquals("qClass", DnsPacketQuestion.QCLASS_IN, question.qClass);
|
assertEquals("clazz", DnsConstants.CLASS.IN, question.clazz);
|
||||||
|
|
||||||
// Answer
|
// Answer
|
||||||
DnsPacketResource answer = packet.getAnswerRecords().get(0);
|
DnsPacketResource answer = packet.getAnswerRecords().get(0);
|
||||||
assertEquals("NAME", "12", answer.name);
|
assertEquals("NAME", "12", answer.name);
|
||||||
assertEquals("TYPE", TYPE_CNAME, answer.type);
|
assertEquals("TYPE", DnsConstants.TYPE.CNAME, answer.type);
|
||||||
assertEquals("CLASS", CLASS_IN, answer.clazz);
|
assertEquals("CLASS", DnsConstants.CLASS.IN, answer.clazz);
|
||||||
assertEquals("TTL", 337977, answer.ttl);
|
assertEquals("TTL", 337977, answer.ttl);
|
||||||
|
|
||||||
answer = packet.getAnswerRecords().get(1);
|
answer = packet.getAnswerRecords().get(1);
|
||||||
assertEquals("NAME", "44", answer.name);
|
assertEquals("NAME", "44", answer.name);
|
||||||
assertEquals("TYPE", TYPE_A, answer.type);
|
assertEquals("TYPE", DnsConstants.TYPE.A, answer.type);
|
||||||
assertEquals("CLASS", CLASS_IN, answer.clazz);
|
assertEquals("CLASS", DnsConstants.CLASS.IN, answer.clazz);
|
||||||
assertEquals("TTL", 227, answer.ttl);
|
assertEquals("TTL", 227, answer.ttl);
|
||||||
|
|
||||||
answer = packet.getAnswerRecords().get(2);
|
answer = packet.getAnswerRecords().get(2);
|
||||||
assertEquals("NAME", "44", answer.name);
|
assertEquals("NAME", "44", answer.name);
|
||||||
assertEquals("TYPE", TYPE_A, answer.type);
|
assertEquals("TYPE", DnsConstants.TYPE.A, answer.type);
|
||||||
assertEquals("CLASS", CLASS_IN, answer.clazz);
|
assertEquals("CLASS", DnsConstants.CLASS.IN, answer.clazz);
|
||||||
assertEquals("TTL", 227, answer.ttl);
|
assertEquals("TTL", 227, answer.ttl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue