1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org) 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.xbill.DNS; 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.HashMap; 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Constants and functions relating to DNS Types 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Brian Wellington 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic final class Type { 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Address */ 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int A = 1; 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Name server */ 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NS = 2; 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Mail destination */ 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int MD = 3; 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Mail forwarder */ 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int MF = 4; 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Canonical name (alias) */ 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int CNAME = 5; 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Start of authority */ 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int SOA = 6; 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Mailbox domain name */ 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int MB = 7; 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Mail group member */ 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int MG = 8; 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Mail rename name */ 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int MR = 9; 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Null record */ 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NULL = 10; 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Well known services */ 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int WKS = 11; 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Domain name pointer */ 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int PTR = 12; 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Host information */ 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int HINFO = 13; 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Mailbox information */ 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int MINFO = 14; 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Mail routing information */ 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int MX = 15; 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Text strings */ 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int TXT = 16; 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Responsible person */ 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int RP = 17; 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** AFS cell database */ 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int AFSDB = 18; 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** X.25 calling address */ 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int X25 = 19; 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** ISDN calling address */ 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int ISDN = 20; 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Router */ 76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int RT = 21; 77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** NSAP address */ 79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NSAP = 22; 80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Reverse NSAP address (deprecated) */ 82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NSAP_PTR = 23; 83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Signature */ 85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int SIG = 24; 86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Key */ 88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int KEY = 25; 89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** X.400 mail mapping */ 91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int PX = 26; 92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Geographical position (withdrawn) */ 94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int GPOS = 27; 95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 96d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** IPv6 address */ 97d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int AAAA = 28; 98d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 99d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Location */ 100d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int LOC = 29; 101d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 102d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Next valid name in zone */ 103d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NXT = 30; 104d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 105d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Endpoint identifier */ 106d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int EID = 31; 107d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 108d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Nimrod locator */ 109d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NIMLOC = 32; 110d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 111d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Server selection */ 112d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int SRV = 33; 113d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 114d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** ATM address */ 115d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int ATMA = 34; 116d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 117d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Naming authority pointer */ 118d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NAPTR = 35; 119d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 120d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Key exchange */ 121d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int KX = 36; 122d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 123d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Certificate */ 124d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int CERT = 37; 125d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 126d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** IPv6 address (experimental) */ 127d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int A6 = 38; 128d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 129d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Non-terminal name redirection */ 130d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int DNAME = 39; 131d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 132d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Options - contains EDNS metadata */ 133d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int OPT = 41; 134d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 135d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Address Prefix List */ 136d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int APL = 42; 137d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 138d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Delegation Signer */ 139d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int DS = 43; 140d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 141d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** SSH Key Fingerprint */ 142d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int SSHFP = 44; 143d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 144d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** IPSEC key */ 145d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int IPSECKEY = 45; 146d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 147d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Resource Record Signature */ 148d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int RRSIG = 46; 149d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 150d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Next Secure Name */ 151d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NSEC = 47; 152d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 153d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** DNSSEC Key */ 154d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int DNSKEY = 48; 155d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 156d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Dynamic Host Configuration Protocol (DHCP) ID */ 157d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int DHCID = 49; 158d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 159d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Next SECure, 3rd edition, RFC 5155 */ 160d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NSEC3 = 50; 161d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 162d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Next SECure PARAMeter, RFC 5155 */ 163d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NSEC3PARAM = 51; 164d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 165d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Transport Layer Security Authentication, draft-ietf-dane-protocol-23 */ 166d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int TLSA = 52; 167d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 168d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Sender Policy Framework (experimental) */ 169d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int SPF = 99; 170d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 171d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Transaction key - used to compute a shared secret or exchange a key */ 172d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int TKEY = 249; 173d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 174d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Transaction signature */ 175d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int TSIG = 250; 176d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 177d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Incremental zone transfer */ 178d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int IXFR = 251; 179d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 180d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Zone transfer */ 181d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int AXFR = 252; 182d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 183d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Transfer mailbox records */ 184d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int MAILB = 253; 185d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 186d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Transfer mail agent records */ 187d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int MAILA = 254; 188d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 189d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Matches any type */ 190d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int ANY = 255; 191d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 192d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** DNSSEC Lookaside Validation, RFC 4431 . */ 193d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int DLV = 32769; 194d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 195d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 196d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate static class TypeMnemonic extends Mnemonic { 197d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private HashMap objects; 198d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 199d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public 200d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen TypeMnemonic() { 201d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super("Type", CASE_UPPER); 202d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen setPrefix("TYPE"); 203d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen objects = new HashMap(); 204d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 205d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 206d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void 207d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen add(int val, String str, Record proto) { 208d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super.add(val, str); 209d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen objects.put(Mnemonic.toInteger(val), proto); 210d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 211d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 212d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void 213d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen check(int val) { 214d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen Type.check(val); 215d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 216d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 217d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Record 218d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen getProto(int val) { 219d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen check(val); 220d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return (Record) objects.get(toInteger(val)); 221d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 222d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 223d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 224d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate static TypeMnemonic types = new TypeMnemonic(); 225d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 226d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenstatic { 227d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(A, "A", new ARecord()); 228d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(NS, "NS", new NSRecord()); 229d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(MD, "MD", new MDRecord()); 230d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(MF, "MF", new MFRecord()); 231d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(CNAME, "CNAME", new CNAMERecord()); 232d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(SOA, "SOA", new SOARecord()); 233d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(MB, "MB", new MBRecord()); 234d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(MG, "MG", new MGRecord()); 235d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(MR, "MR", new MRRecord()); 236d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(NULL, "NULL", new NULLRecord()); 237d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(WKS, "WKS", new WKSRecord()); 238d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(PTR, "PTR", new PTRRecord()); 239d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(HINFO, "HINFO", new HINFORecord()); 240d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(MINFO, "MINFO", new MINFORecord()); 241d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(MX, "MX", new MXRecord()); 242d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(TXT, "TXT", new TXTRecord()); 243d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(RP, "RP", new RPRecord()); 244d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(AFSDB, "AFSDB", new AFSDBRecord()); 245d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(X25, "X25", new X25Record()); 246d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(ISDN, "ISDN", new ISDNRecord()); 247d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(RT, "RT", new RTRecord()); 248d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(NSAP, "NSAP", new NSAPRecord()); 249d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(NSAP_PTR, "NSAP-PTR", new NSAP_PTRRecord()); 250d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(SIG, "SIG", new SIGRecord()); 251d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(KEY, "KEY", new KEYRecord()); 252d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(PX, "PX", new PXRecord()); 253d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(GPOS, "GPOS", new GPOSRecord()); 254d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(AAAA, "AAAA", new AAAARecord()); 255d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(LOC, "LOC", new LOCRecord()); 256d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(NXT, "NXT", new NXTRecord()); 257d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(EID, "EID"); 258d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(NIMLOC, "NIMLOC"); 259d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(SRV, "SRV", new SRVRecord()); 260d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(ATMA, "ATMA"); 261d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(NAPTR, "NAPTR", new NAPTRRecord()); 262d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(KX, "KX", new KXRecord()); 263d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(CERT, "CERT", new CERTRecord()); 264d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(A6, "A6", new A6Record()); 265d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(DNAME, "DNAME", new DNAMERecord()); 266d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(OPT, "OPT", new OPTRecord()); 267d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(APL, "APL", new APLRecord()); 268d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(DS, "DS", new DSRecord()); 269d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(SSHFP, "SSHFP", new SSHFPRecord()); 270d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(IPSECKEY, "IPSECKEY", new IPSECKEYRecord()); 271d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(RRSIG, "RRSIG", new RRSIGRecord()); 272d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(NSEC, "NSEC", new NSECRecord()); 273d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(DNSKEY, "DNSKEY", new DNSKEYRecord()); 274d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(DHCID, "DHCID", new DHCIDRecord()); 275d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(NSEC3, "NSEC3", new NSEC3Record()); 276d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(NSEC3PARAM, "NSEC3PARAM", new NSEC3PARAMRecord()); 277d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(TLSA, "TLSA", new TLSARecord()); 278d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(SPF, "SPF", new SPFRecord()); 279d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(TKEY, "TKEY", new TKEYRecord()); 280d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(TSIG, "TSIG", new TSIGRecord()); 281d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(IXFR, "IXFR"); 282d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(AXFR, "AXFR"); 283d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(MAILB, "MAILB"); 284d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(MAILA, "MAILA"); 285d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(ANY, "ANY"); 286d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen types.add(DLV, "DLV", new DLVRecord()); 287d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 288d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 289d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate 290d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenType() { 291d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 292d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 293d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 294d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Checks that a numeric Type is valid. 295d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @throws InvalidTypeException The type is out of range. 296d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 297d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static void 298d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chencheck(int val) { 299d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (val < 0 || val > 0xFFFF) 300d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throw new InvalidTypeException(val); 301d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 302d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 303d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 304d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Converts a numeric Type into a String 305d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param val The type value. 306d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return The canonical string representation of the type 307d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @throws InvalidTypeException The type is out of range. 308d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 309d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static String 310d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenstring(int val) { 311d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return types.getText(val); 312d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 313d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 314d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 315d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Converts a String representation of an Type into its numeric value. 316d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param s The string representation of the type 317d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param numberok Whether a number will be accepted or not. 318d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return The type code, or -1 on error. 319d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 320d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static int 321d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvalue(String s, boolean numberok) { 322d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen int val = types.getValue(s); 323d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (val == -1 && numberok) { 324d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen val = types.getValue("TYPE" + s); 325d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 326d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return val; 327d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 328d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 329d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 330d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Converts a String representation of an Type into its numeric value 331d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return The type code, or -1 on error. 332d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 333d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static int 334d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvalue(String s) { 335d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return value(s, false); 336d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 337d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 338d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenstatic Record 339d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetProto(int val) { 340d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return types.getProto(val); 341d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 342d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 343d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Is this type valid for a record (a non-meta type)? */ 344d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static boolean 345d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenisRR(int type) { 346d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen switch (type) { 347d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen case OPT: 348d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen case TKEY: 349d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen case TSIG: 350d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen case IXFR: 351d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen case AXFR: 352d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen case MAILB: 353d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen case MAILA: 354d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen case ANY: 355d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return false; 356d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen default: 357d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return true; 358d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 359d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 360d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 361d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 362