13742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman/**
23742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman *
33742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */
43742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanpackage javax.jmdns.impl.constants;
53742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
63742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport java.util.logging.Logger;
73742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
83742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman/**
93742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * DNS Record Type
103742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman *
113742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * @author Arthur van Hoff, Jeff Sonstein, Werner Randelshofer, Pierre Frisch, Rick Blair
123742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */
133742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanpublic enum DNSRecordType {
143742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
153742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Address
163742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
173742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_IGNORE("ignore", 0),
183742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
193742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Address
203742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
213742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_A("a", 1),
223742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
233742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Name Server
243742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
253742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_NS("ns", 2),
263742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
273742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Mail Destination
283742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
293742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_MD("md", 3),
303742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
313742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Mail Forwarder
323742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
333742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_MF("mf", 4),
343742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
353742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Canonical Name
363742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
373742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_CNAME("cname", 5),
383742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
393742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Start of Authority
403742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
413742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_SOA("soa", 6),
423742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
433742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Mailbox
443742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
453742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_MB("mb", 7),
463742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
473742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Mail Group
483742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
493742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_MG("mg", 8),
503742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
513742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Mail Rename
523742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
533742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_MR("mr", 9),
543742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
553742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * NULL RR
563742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
573742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_NULL("null", 10),
583742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
593742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Well-known-service
603742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
613742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_WKS("wks", 11),
623742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
633742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Domain Name pointer
643742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
653742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_PTR("ptr", 12),
663742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
673742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Host information
683742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
693742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_HINFO("hinfo", 13),
703742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
713742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Mailbox information
723742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
733742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_MINFO("minfo", 14),
743742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
753742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Mail exchanger
763742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
773742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_MX("mx", 15),
783742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
793742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Arbitrary text string
803742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
813742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_TXT("txt", 16),
823742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
833742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * for Responsible Person [RFC1183]
843742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
853742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_RP("rp", 17),
863742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
873742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * for AFS Data Base location [RFC1183]
883742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
893742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_AFSDB("afsdb", 18),
903742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
913742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * for X.25 PSDN address [RFC1183]
923742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
933742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_X25("x25", 19),
943742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
953742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * for ISDN address [RFC1183]
963742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
973742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_ISDN("isdn", 20),
983742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
993742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * for Route Through [RFC1183]
1003742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1013742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_RT("rt", 21),
1023742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1033742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * for NSAP address, NSAP style A record [RFC1706]
1043742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1053742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_NSAP("nsap", 22),
1063742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1073742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *
1083742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1093742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_NSAP_PTR("nsap-otr", 23),
1103742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1113742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * for security signature [RFC2931]
1123742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1133742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_SIG("sig", 24),
1143742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1153742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * for security key [RFC2535]
1163742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1173742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_KEY("key", 25),
1183742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1193742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * X.400 mail mapping information [RFC2163]
1203742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1213742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_PX("px", 26),
1223742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1233742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Geographical Position [RFC1712]
1243742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1253742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_GPOS("gpos", 27),
1263742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1273742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * IP6 Address [Thomson]
1283742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1293742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_AAAA("aaaa", 28),
1303742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1313742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Location Information [Vixie]
1323742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1333742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_LOC("loc", 29),
1343742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1353742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Next Domain - OBSOLETE [RFC2535, RFC3755]
1363742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1373742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_NXT("nxt", 30),
1383742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1393742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Endpoint Identifier [Patton]
1403742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1413742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_EID("eid", 31),
1423742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1433742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Nimrod Locator [Patton]
1443742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1453742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_NIMLOC("nimloc", 32),
1463742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1473742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Server Selection [RFC2782]
1483742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1493742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_SRV("srv", 33),
1503742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1513742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * ATM Address [Dobrowski]
1523742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1533742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_ATMA("atma", 34),
1543742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1553742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Naming Authority Pointer [RFC2168, RFC2915]
1563742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1573742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_NAPTR("naptr", 35),
1583742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1593742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Key Exchanger [RFC2230]
1603742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1613742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_KX("kx", 36),
1623742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1633742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * CERT [RFC2538]
1643742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1653742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_CERT("cert", 37),
1663742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1673742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * A6 [RFC2874]
1683742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1693742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_A6("a6", 38),
1703742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1713742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * DNAME [RFC2672]
1723742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1733742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_DNAME("dname", 39),
1743742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1753742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * SINK [Eastlake]
1763742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1773742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_SINK("sink", 40),
1783742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1793742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * OPT [RFC2671]
1803742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1813742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_OPT("opt", 41),
1823742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1833742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * APL [RFC3123]
1843742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1853742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_APL("apl", 42),
1863742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1873742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Delegation Signer [RFC3658]
1883742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1893742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_DS("ds", 43),
1903742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1913742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * SSH Key Fingerprint [RFC-ietf-secsh-dns-05.txt]
1923742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1933742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_SSHFP("sshfp", 44),
1943742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1953742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * RRSIG [RFC3755]
1963742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1973742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_RRSIG("rrsig", 46),
1983742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
1993742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * NSEC [RFC3755]
2003742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2013742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_NSEC("nsec", 47),
2023742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2033742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * DNSKEY [RFC3755]
2043742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2053742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_DNSKEY("dnskey", 48),
2063742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2073742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * [IANA-Reserved]
2083742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2093742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_UINFO("uinfo", 100),
2103742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2113742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * [IANA-Reserved]
2123742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2133742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_UID("uid", 101),
2143742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2153742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * [IANA-Reserved]
2163742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2173742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_GID("gid", 102),
2183742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2193742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * [IANA-Reserved]
2203742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2213742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_UNSPEC("unspec", 103),
2223742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2233742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Transaction Key [RFC2930]
2243742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2253742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_TKEY("tkey", 249),
2263742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2273742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Transaction Signature [RFC2845]
2283742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2293742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_TSIG("tsig", 250),
2303742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2313742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Incremental transfer [RFC1995]
2323742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2333742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_IXFR("ixfr", 251),
2343742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2353742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Transfer of an entire zone [RFC1035]
2363742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2373742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_AXFR("axfr", 252),
2383742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2393742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Mailbox-related records (MB, MG or MR) [RFC1035]
2403742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2413742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_MAILA("mails", 253),
2423742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2433742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Mail agent RRs (Obsolete - see MX) [RFC1035]
2443742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2453742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_MAILB("mailb", 254),
2463742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2473742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Request for all records [RFC1035]
2483742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2493742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    TYPE_ANY("any", 255);
2503742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
2513742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private static Logger logger = Logger.getLogger(DNSRecordType.class.getName());
2523742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
2533742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private final String  _externalName;
2543742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
2553742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private final int     _index;
2563742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
2573742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    DNSRecordType(String name, int index) {
2583742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        _externalName = name;
2593742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        _index = index;
2603742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
2613742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
2623742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2633742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Return the string representation of this type
2643742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *
2653742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @return String
2663742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2673742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public String externalName() {
2683742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return _externalName;
2693742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
2703742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
2713742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2723742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Return the numeric value of this type
2733742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *
2743742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @return String
2753742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2763742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public int indexValue() {
2773742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return _index;
2783742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
2793742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
2803742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2813742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @param name
2823742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @return type for name
2833742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2843742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public static DNSRecordType typeForName(String name) {
2853742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        if (name != null) {
2863742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman            String aName = name.toLowerCase();
2873742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman            for (DNSRecordType aType : DNSRecordType.values()) {
2883742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman                if (aType._externalName.equals(aName)) return aType;
2893742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman            }
2903742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        }
2913742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        logger.severe("Could not find record type for name: " + name);
2923742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return TYPE_IGNORE;
2933742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
2943742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
2953742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
2963742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @param index
2973742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @return type for name
2983742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
2993742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public static DNSRecordType typeForIndex(int index) {
3003742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        for (DNSRecordType aType : DNSRecordType.values()) {
3013742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman            if (aType._index == index) return aType;
3023742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        }
3033742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        logger.severe("Could not find record type for index: " + index);
3043742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return TYPE_IGNORE;
3053742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
3063742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
3073742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
3083742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public String toString() {
3093742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return this.name() + " index " + this.indexValue();
3103742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
3113742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
3123742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman}
313