/* * 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 } }