mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
332 lines
10 KiB
C#
332 lines
10 KiB
C#
|
|
/*
|
||
|
|
* http://www.iana.org/assignments/dns-parameters
|
||
|
|
*
|
||
|
|
*
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
|
||
|
|
|
||
|
|
namespace Heijden.DNS
|
||
|
|
{
|
||
|
|
/*
|
||
|
|
* 3.2.2. TYPE values
|
||
|
|
*
|
||
|
|
* TYPE fields are used in resource records.
|
||
|
|
* Note that these types are a subset of QTYPEs.
|
||
|
|
*
|
||
|
|
* TYPE value meaning
|
||
|
|
*/
|
||
|
|
public enum Type : ushort
|
||
|
|
{
|
||
|
|
A = 1, // a IPV4 host address
|
||
|
|
NS = 2, // an authoritative name server
|
||
|
|
MD = 3, // a mail destination (Obsolete - use MX)
|
||
|
|
MF = 4, // a mail forwarder (Obsolete - use MX)
|
||
|
|
CNAME = 5, // the canonical name for an alias
|
||
|
|
SOA = 6, // marks the start of a zone of authority
|
||
|
|
MB = 7, // a mailbox domain name (EXPERIMENTAL)
|
||
|
|
MG = 8, // a mail group member (EXPERIMENTAL)
|
||
|
|
MR = 9, // a mail rename domain name (EXPERIMENTAL)
|
||
|
|
NULL = 10, // a null RR (EXPERIMENTAL)
|
||
|
|
WKS = 11, // a well known service description
|
||
|
|
PTR = 12, // a domain name pointer
|
||
|
|
HINFO = 13, // host information
|
||
|
|
MINFO = 14, // mailbox or mail list information
|
||
|
|
MX = 15, // mail exchange
|
||
|
|
TXT = 16, // text strings
|
||
|
|
|
||
|
|
RP = 17, // The Responsible Person rfc1183
|
||
|
|
AFSDB = 18, // AFS Data Base location
|
||
|
|
X25 = 19, // X.25 address rfc1183
|
||
|
|
ISDN = 20, // ISDN address rfc1183
|
||
|
|
RT = 21, // The Route Through rfc1183
|
||
|
|
|
||
|
|
NSAP = 22, // Network service access point address rfc1706
|
||
|
|
NSAPPTR = 23, // Obsolete, rfc1348
|
||
|
|
|
||
|
|
SIG = 24, // Cryptographic public key signature rfc2931 / rfc2535
|
||
|
|
KEY = 25, // Public key as used in DNSSEC rfc2535
|
||
|
|
|
||
|
|
PX = 26, // Pointer to X.400/RFC822 mail mapping information rfc2163
|
||
|
|
|
||
|
|
GPOS = 27, // Geographical position rfc1712 (obsolete)
|
||
|
|
|
||
|
|
AAAA = 28, // a IPV6 host address, rfc3596
|
||
|
|
|
||
|
|
LOC = 29, // Location information rfc1876
|
||
|
|
|
||
|
|
NXT = 30, // Next Domain, Obsolete rfc2065 / rfc2535
|
||
|
|
|
||
|
|
EID = 31, // *** Endpoint Identifier (Patton)
|
||
|
|
NIMLOC = 32, // *** Nimrod Locator (Patton)
|
||
|
|
|
||
|
|
SRV = 33, // Location of services rfc2782
|
||
|
|
|
||
|
|
ATMA = 34, // *** ATM Address (Dobrowski)
|
||
|
|
|
||
|
|
NAPTR = 35, // The Naming Authority Pointer rfc3403
|
||
|
|
|
||
|
|
KX = 36, // Key Exchange Delegation Record rfc2230
|
||
|
|
|
||
|
|
CERT = 37, // *** CERT RFC2538
|
||
|
|
|
||
|
|
A6 = 38, // IPv6 address rfc3363 (rfc2874 rfc3226)
|
||
|
|
DNAME = 39, // A way to provide aliases for a whole domain, not just a single domain name as with CNAME. rfc2672
|
||
|
|
|
||
|
|
SINK = 40, // *** SINK Eastlake
|
||
|
|
OPT = 41, // *** OPT RFC2671
|
||
|
|
|
||
|
|
APL = 42, // *** APL [RFC3123]
|
||
|
|
|
||
|
|
DS = 43, // Delegation Signer rfc3658
|
||
|
|
|
||
|
|
SSHFP = 44, // SSH Key Fingerprint rfc4255
|
||
|
|
IPSECKEY = 45, // IPSECKEY rfc4025
|
||
|
|
RRSIG = 46, // RRSIG rfc3755
|
||
|
|
NSEC = 47, // NSEC rfc3755
|
||
|
|
DNSKEY = 48, // DNSKEY 3755
|
||
|
|
DHCID = 49, // DHCID rfc4701
|
||
|
|
|
||
|
|
NSEC3 = 50, // NSEC3 rfc5155
|
||
|
|
NSEC3PARAM = 51, // NSEC3PARAM rfc5155
|
||
|
|
|
||
|
|
HIP = 55, // Host Identity Protocol [RFC-ietf-hip-dns-09.txt]
|
||
|
|
|
||
|
|
SPF = 99, // SPF rfc4408
|
||
|
|
|
||
|
|
UINFO = 100, // *** IANA-Reserved
|
||
|
|
UID = 101, // *** IANA-Reserved
|
||
|
|
GID = 102, // *** IANA-Reserved
|
||
|
|
UNSPEC = 103, // *** IANA-Reserved
|
||
|
|
|
||
|
|
TKEY = 249, // Transaction key rfc2930
|
||
|
|
TSIG = 250, // Transaction signature rfc2845
|
||
|
|
|
||
|
|
TA=32768, // DNSSEC Trust Authorities [Weiler] 13 December 2005
|
||
|
|
DLV=32769 // DNSSEC Lookaside Validation [RFC4431]
|
||
|
|
}
|
||
|
|
|
||
|
|
/*
|
||
|
|
* 3.2.3. QTYPE values
|
||
|
|
*
|
||
|
|
* QTYPE fields appear in the question part of a query. QTYPES are a
|
||
|
|
* superset of TYPEs, hence all TYPEs are valid QTYPEs. In addition, the
|
||
|
|
* following QTYPEs are defined:
|
||
|
|
*
|
||
|
|
* QTYPE value meaning
|
||
|
|
*/
|
||
|
|
public enum QType : ushort
|
||
|
|
{
|
||
|
|
A = Type.A, // a IPV4 host address
|
||
|
|
NS = Type.NS, // an authoritative name server
|
||
|
|
MD = Type.MD, // a mail destination (Obsolete - use MX)
|
||
|
|
MF = Type.MF, // a mail forwarder (Obsolete - use MX)
|
||
|
|
CNAME = Type.CNAME, // the canonical name for an alias
|
||
|
|
SOA = Type.SOA, // marks the start of a zone of authority
|
||
|
|
MB = Type.MB, // a mailbox domain name (EXPERIMENTAL)
|
||
|
|
MG = Type.MG, // a mail group member (EXPERIMENTAL)
|
||
|
|
MR = Type.MR, // a mail rename domain name (EXPERIMENTAL)
|
||
|
|
NULL = Type.NULL, // a null RR (EXPERIMENTAL)
|
||
|
|
WKS = Type.WKS, // a well known service description
|
||
|
|
PTR = Type.PTR, // a domain name pointer
|
||
|
|
HINFO = Type.HINFO, // host information
|
||
|
|
MINFO = Type.MINFO, // mailbox or mail list information
|
||
|
|
MX = Type.MX, // mail exchange
|
||
|
|
TXT = Type.TXT, // text strings
|
||
|
|
|
||
|
|
RP = Type.RP, // The Responsible Person rfc1183
|
||
|
|
AFSDB = Type.AFSDB, // AFS Data Base location
|
||
|
|
X25 = Type.X25, // X.25 address rfc1183
|
||
|
|
ISDN = Type.ISDN, // ISDN address rfc1183
|
||
|
|
RT = Type.RT, // The Route Through rfc1183
|
||
|
|
|
||
|
|
NSAP = Type.NSAP, // Network service access point address rfc1706
|
||
|
|
NSAP_PTR = Type.NSAPPTR, // Obsolete, rfc1348
|
||
|
|
|
||
|
|
SIG = Type.SIG, // Cryptographic public key signature rfc2931 / rfc2535
|
||
|
|
KEY = Type.KEY, // Public key as used in DNSSEC rfc2535
|
||
|
|
|
||
|
|
PX = Type.PX, // Pointer to X.400/RFC822 mail mapping information rfc2163
|
||
|
|
|
||
|
|
GPOS = Type.GPOS, // Geographical position rfc1712 (obsolete)
|
||
|
|
|
||
|
|
AAAA = Type.AAAA, // a IPV6 host address
|
||
|
|
|
||
|
|
LOC = Type.LOC, // Location information rfc1876
|
||
|
|
|
||
|
|
NXT = Type.NXT, // Obsolete rfc2065 / rfc2535
|
||
|
|
|
||
|
|
EID = Type.EID, // *** Endpoint Identifier (Patton)
|
||
|
|
NIMLOC = Type.NIMLOC,// *** Nimrod Locator (Patton)
|
||
|
|
|
||
|
|
SRV = Type.SRV, // Location of services rfc2782
|
||
|
|
|
||
|
|
ATMA = Type.ATMA, // *** ATM Address (Dobrowski)
|
||
|
|
|
||
|
|
NAPTR = Type.NAPTR, // The Naming Authority Pointer rfc3403
|
||
|
|
|
||
|
|
KX = Type.KX, // Key Exchange Delegation Record rfc2230
|
||
|
|
|
||
|
|
CERT = Type.CERT, // *** CERT RFC2538
|
||
|
|
|
||
|
|
A6 = Type.A6, // IPv6 address rfc3363
|
||
|
|
DNAME = Type.DNAME, // A way to provide aliases for a whole domain, not just a single domain name as with CNAME. rfc2672
|
||
|
|
|
||
|
|
SINK = Type.SINK, // *** SINK Eastlake
|
||
|
|
OPT = Type.OPT, // *** OPT RFC2671
|
||
|
|
|
||
|
|
APL = Type.APL, // *** APL [RFC3123]
|
||
|
|
|
||
|
|
DS = Type.DS, // Delegation Signer rfc3658
|
||
|
|
|
||
|
|
SSHFP = Type.SSHFP, // *** SSH Key Fingerprint RFC-ietf-secsh-dns
|
||
|
|
IPSECKEY = Type.IPSECKEY, // rfc4025
|
||
|
|
RRSIG = Type.RRSIG, // *** RRSIG RFC-ietf-dnsext-dnssec-2535
|
||
|
|
NSEC = Type.NSEC, // *** NSEC RFC-ietf-dnsext-dnssec-2535
|
||
|
|
DNSKEY = Type.DNSKEY,// *** DNSKEY RFC-ietf-dnsext-dnssec-2535
|
||
|
|
DHCID = Type.DHCID, // rfc4701
|
||
|
|
|
||
|
|
NSEC3 = Type.NSEC3, // RFC5155
|
||
|
|
NSEC3PARAM = Type.NSEC3PARAM, // RFC5155
|
||
|
|
|
||
|
|
HIP = Type.HIP, // RFC-ietf-hip-dns-09.txt
|
||
|
|
|
||
|
|
SPF = Type.SPF, // RFC4408
|
||
|
|
UINFO = Type.UINFO, // *** IANA-Reserved
|
||
|
|
UID = Type.UID, // *** IANA-Reserved
|
||
|
|
GID = Type.GID, // *** IANA-Reserved
|
||
|
|
UNSPEC = Type.UNSPEC,// *** IANA-Reserved
|
||
|
|
|
||
|
|
TKEY = Type.TKEY, // Transaction key rfc2930
|
||
|
|
TSIG = Type.TSIG, // Transaction signature rfc2845
|
||
|
|
|
||
|
|
IXFR = 251, // incremental transfer [RFC1995]
|
||
|
|
AXFR = 252, // transfer of an entire zone [RFC1035]
|
||
|
|
MAILB = 253, // mailbox-related RRs (MB, MG or MR) [RFC1035]
|
||
|
|
MAILA = 254, // mail agent RRs (Obsolete - see MX) [RFC1035]
|
||
|
|
ANY = 255, // A request for all records [RFC1035]
|
||
|
|
|
||
|
|
TA = Type.TA, // DNSSEC Trust Authorities [Weiler] 13 December 2005
|
||
|
|
DLV = Type.DLV // DNSSEC Lookaside Validation [RFC4431]
|
||
|
|
}
|
||
|
|
/*
|
||
|
|
* 3.2.4. CLASS values
|
||
|
|
*
|
||
|
|
* CLASS fields appear in resource records. The following CLASS mnemonics
|
||
|
|
*and values are defined:
|
||
|
|
*
|
||
|
|
* CLASS value meaning
|
||
|
|
*/
|
||
|
|
public enum Class : ushort
|
||
|
|
{
|
||
|
|
IN = 1, // the Internet
|
||
|
|
CS = 2, // the CSNET class (Obsolete - used only for examples in some obsolete RFCs)
|
||
|
|
CH = 3, // the CHAOS class
|
||
|
|
HS = 4 // Hesiod [Dyer 87]
|
||
|
|
}
|
||
|
|
/*
|
||
|
|
* 3.2.5. QCLASS values
|
||
|
|
*
|
||
|
|
* QCLASS fields appear in the question section of a query. QCLASS values
|
||
|
|
* are a superset of CLASS values; every CLASS is a valid QCLASS. In
|
||
|
|
* addition to CLASS values, the following QCLASSes are defined:
|
||
|
|
*
|
||
|
|
* QCLASS value meaning
|
||
|
|
*/
|
||
|
|
public enum QClass : ushort
|
||
|
|
{
|
||
|
|
IN = Class.IN, // the Internet
|
||
|
|
CS = Class.CS, // the CSNET class (Obsolete - used only for examples in some obsolete RFCs)
|
||
|
|
CH = Class.CH, // the CHAOS class
|
||
|
|
HS = Class.HS, // Hesiod [Dyer 87]
|
||
|
|
|
||
|
|
ANY = 255 // any class
|
||
|
|
}
|
||
|
|
|
||
|
|
/*
|
||
|
|
RCODE Response code - this 4 bit field is set as part of
|
||
|
|
responses. The values have the following
|
||
|
|
interpretation:
|
||
|
|
*/
|
||
|
|
public enum RCode
|
||
|
|
{
|
||
|
|
NoError = 0, // No Error [RFC1035]
|
||
|
|
FormErr = 1, // Format Error [RFC1035]
|
||
|
|
ServFail = 2, // Server Failure [RFC1035]
|
||
|
|
NXDomain = 3, // Non-Existent Domain [RFC1035]
|
||
|
|
NotImp = 4, // Not Implemented [RFC1035]
|
||
|
|
Refused = 5, // Query Refused [RFC1035]
|
||
|
|
YXDomain = 6, // Name Exists when it should not [RFC2136]
|
||
|
|
YXRRSet = 7, // RR Set Exists when it should not [RFC2136]
|
||
|
|
NXRRSet = 8, // RR Set that should exist does not [RFC2136]
|
||
|
|
NotAuth = 9, // Server Not Authoritative for zone [RFC2136]
|
||
|
|
NotZone = 10, // Name not contained in zone [RFC2136]
|
||
|
|
|
||
|
|
RESERVED11 = 11, // Reserved
|
||
|
|
RESERVED12 = 12, // Reserved
|
||
|
|
RESERVED13 = 13, // Reserved
|
||
|
|
RESERVED14 = 14, // Reserved
|
||
|
|
RESERVED15 = 15, // Reserved
|
||
|
|
|
||
|
|
BADVERSSIG = 16, // Bad OPT Version [RFC2671]
|
||
|
|
// TSIG Signature Failure [RFC2845]
|
||
|
|
BADKEY = 17, // Key not recognized [RFC2845]
|
||
|
|
BADTIME = 18, // Signature out of time window [RFC2845]
|
||
|
|
BADMODE = 19, // Bad TKEY Mode [RFC2930]
|
||
|
|
BADNAME = 20, // Duplicate key name [RFC2930]
|
||
|
|
BADALG = 21, // Algorithm not supported [RFC2930]
|
||
|
|
BADTRUNC = 22 // Bad Truncation [RFC4635]
|
||
|
|
/*
|
||
|
|
23-3840 available for assignment
|
||
|
|
0x0016-0x0F00
|
||
|
|
3841-4095 Private Use
|
||
|
|
0x0F01-0x0FFF
|
||
|
|
4096-65535 available for assignment
|
||
|
|
0x1000-0xFFFF
|
||
|
|
*/
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
/*
|
||
|
|
OPCODE A four bit field that specifies kind of query in this
|
||
|
|
message. This value is set by the originator of a query
|
||
|
|
and copied into the response. The values are:
|
||
|
|
|
||
|
|
0 a standard query (QUERY)
|
||
|
|
|
||
|
|
1 an inverse query (IQUERY)
|
||
|
|
|
||
|
|
2 a server status request (STATUS)
|
||
|
|
|
||
|
|
3-15 reserved for future use
|
||
|
|
*/
|
||
|
|
public enum OPCode
|
||
|
|
{
|
||
|
|
Query = 0, // a standard query (QUERY)
|
||
|
|
IQUERY = 1, // OpCode Retired (previously IQUERY - No further [RFC3425]
|
||
|
|
// assignment of this code available)
|
||
|
|
Status = 2, // a server status request (STATUS) RFC1035
|
||
|
|
RESERVED3 = 3, // IANA
|
||
|
|
|
||
|
|
Notify = 4, // RFC1996
|
||
|
|
Update = 5, // RFC2136
|
||
|
|
|
||
|
|
RESERVED6 = 6,
|
||
|
|
RESERVED7 = 7,
|
||
|
|
RESERVED8 = 8,
|
||
|
|
RESERVED9 = 9,
|
||
|
|
RESERVED10 = 10,
|
||
|
|
RESERVED11 = 11,
|
||
|
|
RESERVED12 = 12,
|
||
|
|
RESERVED13 = 13,
|
||
|
|
RESERVED14 = 14,
|
||
|
|
RESERVED15 = 15,
|
||
|
|
}
|
||
|
|
|
||
|
|
public enum TransportType
|
||
|
|
{
|
||
|
|
Udp,
|
||
|
|
Tcp
|
||
|
|
}
|
||
|
|
}
|