aboutsummaryrefslogtreecommitdiff
path: root/src/org/xbill/DNS/Type.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/xbill/DNS/Type.java')
-rw-r--r--src/org/xbill/DNS/Type.java361
1 files changed, 361 insertions, 0 deletions
diff --git a/src/org/xbill/DNS/Type.java b/src/org/xbill/DNS/Type.java
new file mode 100644
index 0000000..df84e83
--- /dev/null
+++ b/src/org/xbill/DNS/Type.java
@@ -0,0 +1,361 @@
+// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org)
+
+package org.xbill.DNS;
+
+import java.util.HashMap;
+
+/**
+ * Constants and functions relating to DNS Types
+ *
+ * @author Brian Wellington
+ */
+
+public final class Type {
+
+/** Address */
+public static final int A = 1;
+
+/** Name server */
+public static final int NS = 2;
+
+/** Mail destination */
+public static final int MD = 3;
+
+/** Mail forwarder */
+public static final int MF = 4;
+
+/** Canonical name (alias) */
+public static final int CNAME = 5;
+
+/** Start of authority */
+public static final int SOA = 6;
+
+/** Mailbox domain name */
+public static final int MB = 7;
+
+/** Mail group member */
+public static final int MG = 8;
+
+/** Mail rename name */
+public static final int MR = 9;
+
+/** Null record */
+public static final int NULL = 10;
+
+/** Well known services */
+public static final int WKS = 11;
+
+/** Domain name pointer */
+public static final int PTR = 12;
+
+/** Host information */
+public static final int HINFO = 13;
+
+/** Mailbox information */
+public static final int MINFO = 14;
+
+/** Mail routing information */
+public static final int MX = 15;
+
+/** Text strings */
+public static final int TXT = 16;
+
+/** Responsible person */
+public static final int RP = 17;
+
+/** AFS cell database */
+public static final int AFSDB = 18;
+
+/** X.25 calling address */
+public static final int X25 = 19;
+
+/** ISDN calling address */
+public static final int ISDN = 20;
+
+/** Router */
+public static final int RT = 21;
+
+/** NSAP address */
+public static final int NSAP = 22;
+
+/** Reverse NSAP address (deprecated) */
+public static final int NSAP_PTR = 23;
+
+/** Signature */
+public static final int SIG = 24;
+
+/** Key */
+public static final int KEY = 25;
+
+/** X.400 mail mapping */
+public static final int PX = 26;
+
+/** Geographical position (withdrawn) */
+public static final int GPOS = 27;
+
+/** IPv6 address */
+public static final int AAAA = 28;
+
+/** Location */
+public static final int LOC = 29;
+
+/** Next valid name in zone */
+public static final int NXT = 30;
+
+/** Endpoint identifier */
+public static final int EID = 31;
+
+/** Nimrod locator */
+public static final int NIMLOC = 32;
+
+/** Server selection */
+public static final int SRV = 33;
+
+/** ATM address */
+public static final int ATMA = 34;
+
+/** Naming authority pointer */
+public static final int NAPTR = 35;
+
+/** Key exchange */
+public static final int KX = 36;
+
+/** Certificate */
+public static final int CERT = 37;
+
+/** IPv6 address (experimental) */
+public static final int A6 = 38;
+
+/** Non-terminal name redirection */
+public static final int DNAME = 39;
+
+/** Options - contains EDNS metadata */
+public static final int OPT = 41;
+
+/** Address Prefix List */
+public static final int APL = 42;
+
+/** Delegation Signer */
+public static final int DS = 43;
+
+/** SSH Key Fingerprint */
+public static final int SSHFP = 44;
+
+/** IPSEC key */
+public static final int IPSECKEY = 45;
+
+/** Resource Record Signature */
+public static final int RRSIG = 46;
+
+/** Next Secure Name */
+public static final int NSEC = 47;
+
+/** DNSSEC Key */
+public static final int DNSKEY = 48;
+
+/** Dynamic Host Configuration Protocol (DHCP) ID */
+public static final int DHCID = 49;
+
+/** Next SECure, 3rd edition, RFC 5155 */
+public static final int NSEC3 = 50;
+
+/** Next SECure PARAMeter, RFC 5155 */
+public static final int NSEC3PARAM = 51;
+
+/** Transport Layer Security Authentication, draft-ietf-dane-protocol-23 */
+public static final int TLSA = 52;
+
+/** Sender Policy Framework (experimental) */
+public static final int SPF = 99;
+
+/** Transaction key - used to compute a shared secret or exchange a key */
+public static final int TKEY = 249;
+
+/** Transaction signature */
+public static final int TSIG = 250;
+
+/** Incremental zone transfer */
+public static final int IXFR = 251;
+
+/** Zone transfer */
+public static final int AXFR = 252;
+
+/** Transfer mailbox records */
+public static final int MAILB = 253;
+
+/** Transfer mail agent records */
+public static final int MAILA = 254;
+
+/** Matches any type */
+public static final int ANY = 255;
+
+/** DNSSEC Lookaside Validation, RFC 4431 . */
+public static final int DLV = 32769;
+
+
+private static class TypeMnemonic extends Mnemonic {
+ private HashMap objects;
+
+ public
+ TypeMnemonic() {
+ super("Type", CASE_UPPER);
+ setPrefix("TYPE");
+ objects = new HashMap();
+ }
+
+ public void
+ add(int val, String str, Record proto) {
+ super.add(val, str);
+ objects.put(Mnemonic.toInteger(val), proto);
+ }
+
+ public void
+ check(int val) {
+ Type.check(val);
+ }
+
+ public Record
+ getProto(int val) {
+ check(val);
+ return (Record) objects.get(toInteger(val));
+ }
+}
+
+private static TypeMnemonic types = new TypeMnemonic();
+
+static {
+ types.add(A, "A", new ARecord());
+ types.add(NS, "NS", new NSRecord());
+ types.add(MD, "MD", new MDRecord());
+ types.add(MF, "MF", new MFRecord());
+ types.add(CNAME, "CNAME", new CNAMERecord());
+ types.add(SOA, "SOA", new SOARecord());
+ types.add(MB, "MB", new MBRecord());
+ types.add(MG, "MG", new MGRecord());
+ types.add(MR, "MR", new MRRecord());
+ types.add(NULL, "NULL", new NULLRecord());
+ types.add(WKS, "WKS", new WKSRecord());
+ types.add(PTR, "PTR", new PTRRecord());
+ types.add(HINFO, "HINFO", new HINFORecord());
+ types.add(MINFO, "MINFO", new MINFORecord());
+ types.add(MX, "MX", new MXRecord());
+ types.add(TXT, "TXT", new TXTRecord());
+ types.add(RP, "RP", new RPRecord());
+ types.add(AFSDB, "AFSDB", new AFSDBRecord());
+ types.add(X25, "X25", new X25Record());
+ types.add(ISDN, "ISDN", new ISDNRecord());
+ types.add(RT, "RT", new RTRecord());
+ types.add(NSAP, "NSAP", new NSAPRecord());
+ types.add(NSAP_PTR, "NSAP-PTR", new NSAP_PTRRecord());
+ types.add(SIG, "SIG", new SIGRecord());
+ types.add(KEY, "KEY", new KEYRecord());
+ types.add(PX, "PX", new PXRecord());
+ types.add(GPOS, "GPOS", new GPOSRecord());
+ types.add(AAAA, "AAAA", new AAAARecord());
+ types.add(LOC, "LOC", new LOCRecord());
+ types.add(NXT, "NXT", new NXTRecord());
+ types.add(EID, "EID");
+ types.add(NIMLOC, "NIMLOC");
+ types.add(SRV, "SRV", new SRVRecord());
+ types.add(ATMA, "ATMA");
+ types.add(NAPTR, "NAPTR", new NAPTRRecord());
+ types.add(KX, "KX", new KXRecord());
+ types.add(CERT, "CERT", new CERTRecord());
+ types.add(A6, "A6", new A6Record());
+ types.add(DNAME, "DNAME", new DNAMERecord());
+ types.add(OPT, "OPT", new OPTRecord());
+ types.add(APL, "APL", new APLRecord());
+ types.add(DS, "DS", new DSRecord());
+ types.add(SSHFP, "SSHFP", new SSHFPRecord());
+ types.add(IPSECKEY, "IPSECKEY", new IPSECKEYRecord());
+ types.add(RRSIG, "RRSIG", new RRSIGRecord());
+ types.add(NSEC, "NSEC", new NSECRecord());
+ types.add(DNSKEY, "DNSKEY", new DNSKEYRecord());
+ types.add(DHCID, "DHCID", new DHCIDRecord());
+ types.add(NSEC3, "NSEC3", new NSEC3Record());
+ types.add(NSEC3PARAM, "NSEC3PARAM", new NSEC3PARAMRecord());
+ types.add(TLSA, "TLSA", new TLSARecord());
+ types.add(SPF, "SPF", new SPFRecord());
+ types.add(TKEY, "TKEY", new TKEYRecord());
+ types.add(TSIG, "TSIG", new TSIGRecord());
+ types.add(IXFR, "IXFR");
+ types.add(AXFR, "AXFR");
+ types.add(MAILB, "MAILB");
+ types.add(MAILA, "MAILA");
+ types.add(ANY, "ANY");
+ types.add(DLV, "DLV", new DLVRecord());
+}
+
+private
+Type() {
+}
+
+/**
+ * Checks that a numeric Type is valid.
+ * @throws InvalidTypeException The type is out of range.
+ */
+public static void
+check(int val) {
+ if (val < 0 || val > 0xFFFF)
+ throw new InvalidTypeException(val);
+}
+
+/**
+ * Converts a numeric Type into a String
+ * @param val The type value.
+ * @return The canonical string representation of the type
+ * @throws InvalidTypeException The type is out of range.
+ */
+public static String
+string(int val) {
+ return types.getText(val);
+}
+
+/**
+ * Converts a String representation of an Type into its numeric value.
+ * @param s The string representation of the type
+ * @param numberok Whether a number will be accepted or not.
+ * @return The type code, or -1 on error.
+ */
+public static int
+value(String s, boolean numberok) {
+ int val = types.getValue(s);
+ if (val == -1 && numberok) {
+ val = types.getValue("TYPE" + s);
+ }
+ return val;
+}
+
+/**
+ * Converts a String representation of an Type into its numeric value
+ * @return The type code, or -1 on error.
+ */
+public static int
+value(String s) {
+ return value(s, false);
+}
+
+static Record
+getProto(int val) {
+ return types.getProto(val);
+}
+
+/** Is this type valid for a record (a non-meta type)? */
+public static boolean
+isRR(int type) {
+ switch (type) {
+ case OPT:
+ case TKEY:
+ case TSIG:
+ case IXFR:
+ case AXFR:
+ case MAILB:
+ case MAILA:
+ case ANY:
+ return false;
+ default:
+ return true;
+ }
+}
+
+}