1 /** 2 * 3 */ 4 package javax.jmdns.impl.constants; 5 6 import java.util.logging.Logger; 7 8 /** 9 * DNS Record Type 10 * 11 * @author Arthur van Hoff, Jeff Sonstein, Werner Randelshofer, Pierre Frisch, Rick Blair 12 */ 13 public enum DNSRecordType { 14 /** 15 * Address 16 */ 17 TYPE_IGNORE("ignore", 0), 18 /** 19 * Address 20 */ 21 TYPE_A("a", 1), 22 /** 23 * Name Server 24 */ 25 TYPE_NS("ns", 2), 26 /** 27 * Mail Destination 28 */ 29 TYPE_MD("md", 3), 30 /** 31 * Mail Forwarder 32 */ 33 TYPE_MF("mf", 4), 34 /** 35 * Canonical Name 36 */ 37 TYPE_CNAME("cname", 5), 38 /** 39 * Start of Authority 40 */ 41 TYPE_SOA("soa", 6), 42 /** 43 * Mailbox 44 */ 45 TYPE_MB("mb", 7), 46 /** 47 * Mail Group 48 */ 49 TYPE_MG("mg", 8), 50 /** 51 * Mail Rename 52 */ 53 TYPE_MR("mr", 9), 54 /** 55 * NULL RR 56 */ 57 TYPE_NULL("null", 10), 58 /** 59 * Well-known-service 60 */ 61 TYPE_WKS("wks", 11), 62 /** 63 * Domain Name pointer 64 */ 65 TYPE_PTR("ptr", 12), 66 /** 67 * Host information 68 */ 69 TYPE_HINFO("hinfo", 13), 70 /** 71 * Mailbox information 72 */ 73 TYPE_MINFO("minfo", 14), 74 /** 75 * Mail exchanger 76 */ 77 TYPE_MX("mx", 15), 78 /** 79 * Arbitrary text string 80 */ 81 TYPE_TXT("txt", 16), 82 /** 83 * for Responsible Person [RFC1183] 84 */ 85 TYPE_RP("rp", 17), 86 /** 87 * for AFS Data Base location [RFC1183] 88 */ 89 TYPE_AFSDB("afsdb", 18), 90 /** 91 * for X.25 PSDN address [RFC1183] 92 */ 93 TYPE_X25("x25", 19), 94 /** 95 * for ISDN address [RFC1183] 96 */ 97 TYPE_ISDN("isdn", 20), 98 /** 99 * for Route Through [RFC1183] 100 */ 101 TYPE_RT("rt", 21), 102 /** 103 * for NSAP address, NSAP style A record [RFC1706] 104 */ 105 TYPE_NSAP("nsap", 22), 106 /** 107 * 108 */ 109 TYPE_NSAP_PTR("nsap-otr", 23), 110 /** 111 * for security signature [RFC2931] 112 */ 113 TYPE_SIG("sig", 24), 114 /** 115 * for security key [RFC2535] 116 */ 117 TYPE_KEY("key", 25), 118 /** 119 * X.400 mail mapping information [RFC2163] 120 */ 121 TYPE_PX("px", 26), 122 /** 123 * Geographical Position [RFC1712] 124 */ 125 TYPE_GPOS("gpos", 27), 126 /** 127 * IP6 Address [Thomson] 128 */ 129 TYPE_AAAA("aaaa", 28), 130 /** 131 * Location Information [Vixie] 132 */ 133 TYPE_LOC("loc", 29), 134 /** 135 * Next Domain - OBSOLETE [RFC2535, RFC3755] 136 */ 137 TYPE_NXT("nxt", 30), 138 /** 139 * Endpoint Identifier [Patton] 140 */ 141 TYPE_EID("eid", 31), 142 /** 143 * Nimrod Locator [Patton] 144 */ 145 TYPE_NIMLOC("nimloc", 32), 146 /** 147 * Server Selection [RFC2782] 148 */ 149 TYPE_SRV("srv", 33), 150 /** 151 * ATM Address [Dobrowski] 152 */ 153 TYPE_ATMA("atma", 34), 154 /** 155 * Naming Authority Pointer [RFC2168, RFC2915] 156 */ 157 TYPE_NAPTR("naptr", 35), 158 /** 159 * Key Exchanger [RFC2230] 160 */ 161 TYPE_KX("kx", 36), 162 /** 163 * CERT [RFC2538] 164 */ 165 TYPE_CERT("cert", 37), 166 /** 167 * A6 [RFC2874] 168 */ 169 TYPE_A6("a6", 38), 170 /** 171 * DNAME [RFC2672] 172 */ 173 TYPE_DNAME("dname", 39), 174 /** 175 * SINK [Eastlake] 176 */ 177 TYPE_SINK("sink", 40), 178 /** 179 * OPT [RFC2671] 180 */ 181 TYPE_OPT("opt", 41), 182 /** 183 * APL [RFC3123] 184 */ 185 TYPE_APL("apl", 42), 186 /** 187 * Delegation Signer [RFC3658] 188 */ 189 TYPE_DS("ds", 43), 190 /** 191 * SSH Key Fingerprint [RFC-ietf-secsh-dns-05.txt] 192 */ 193 TYPE_SSHFP("sshfp", 44), 194 /** 195 * RRSIG [RFC3755] 196 */ 197 TYPE_RRSIG("rrsig", 46), 198 /** 199 * NSEC [RFC3755] 200 */ 201 TYPE_NSEC("nsec", 47), 202 /** 203 * DNSKEY [RFC3755] 204 */ 205 TYPE_DNSKEY("dnskey", 48), 206 /** 207 * [IANA-Reserved] 208 */ 209 TYPE_UINFO("uinfo", 100), 210 /** 211 * [IANA-Reserved] 212 */ 213 TYPE_UID("uid", 101), 214 /** 215 * [IANA-Reserved] 216 */ 217 TYPE_GID("gid", 102), 218 /** 219 * [IANA-Reserved] 220 */ 221 TYPE_UNSPEC("unspec", 103), 222 /** 223 * Transaction Key [RFC2930] 224 */ 225 TYPE_TKEY("tkey", 249), 226 /** 227 * Transaction Signature [RFC2845] 228 */ 229 TYPE_TSIG("tsig", 250), 230 /** 231 * Incremental transfer [RFC1995] 232 */ 233 TYPE_IXFR("ixfr", 251), 234 /** 235 * Transfer of an entire zone [RFC1035] 236 */ 237 TYPE_AXFR("axfr", 252), 238 /** 239 * Mailbox-related records (MB, MG or MR) [RFC1035] 240 */ 241 TYPE_MAILA("mails", 253), 242 /** 243 * Mail agent RRs (Obsolete - see MX) [RFC1035] 244 */ 245 TYPE_MAILB("mailb", 254), 246 /** 247 * Request for all records [RFC1035] 248 */ 249 TYPE_ANY("any", 255); 250 251 private static Logger logger = Logger.getLogger(DNSRecordType.class.getName()); 252 253 private final String _externalName; 254 255 private final int _index; 256 257 DNSRecordType(String name, int index) { 258 _externalName = name; 259 _index = index; 260 } 261 262 /** 263 * Return the string representation of this type 264 * 265 * @return String 266 */ 267 public String externalName() { 268 return _externalName; 269 } 270 271 /** 272 * Return the numeric value of this type 273 * 274 * @return String 275 */ 276 public int indexValue() { 277 return _index; 278 } 279 280 /** 281 * @param name 282 * @return type for name 283 */ 284 public static DNSRecordType typeForName(String name) { 285 if (name != null) { 286 String aName = name.toLowerCase(); 287 for (DNSRecordType aType : DNSRecordType.values()) { 288 if (aType._externalName.equals(aName)) return aType; 289 } 290 } 291 logger.severe("Could not find record type for name: " + name); 292 return TYPE_IGNORE; 293 } 294 295 /** 296 * @param index 297 * @return type for name 298 */ 299 public static DNSRecordType typeForIndex(int index) { 300 for (DNSRecordType aType : DNSRecordType.values()) { 301 if (aType._index == index) return aType; 302 } 303 logger.severe("Could not find record type for index: " + index); 304 return TYPE_IGNORE; 305 } 306 307 @Override 308 public String toString() { 309 return this.name() + " index " + this.indexValue(); 310 } 311 312 } 313