diff options
Diffstat (limited to 'src/javax/jmdns/impl/constants/DNSResultCode.java')
-rw-r--r-- | src/javax/jmdns/impl/constants/DNSResultCode.java | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/src/javax/jmdns/impl/constants/DNSResultCode.java b/src/javax/jmdns/impl/constants/DNSResultCode.java new file mode 100644 index 0000000..aa089f4 --- /dev/null +++ b/src/javax/jmdns/impl/constants/DNSResultCode.java @@ -0,0 +1,149 @@ +/** + * + */ +package javax.jmdns.impl.constants; + +/** + * DNS result code. + * + * @author Arthur van Hoff, Jeff Sonstein, Werner Randelshofer, Pierre Frisch, Rick Blair + */ +public enum DNSResultCode { + /** + * Token + */ + Unknown("Unknown", 65535), + /** + * No Error [RFC1035] + */ + NoError("No Error", 0), + /** + * Format Error [RFC1035] + */ + FormErr("Format Error", 1), + /** + * Server Failure [RFC1035] + */ + ServFail("Server Failure", 2), + /** + * Non-Existent Domain [RFC1035] + */ + NXDomain("Non-Existent Domain", 3), + /** + * Not Implemented [RFC1035] + */ + NotImp("Not Implemented", 4), + /** + * Query Refused [RFC1035] + */ + Refused("Query Refused", 5), + /** + * Name Exists when it should not [RFC2136] + */ + YXDomain("Name Exists when it should not", 6), + /** + * RR Set Exists when it should not [RFC2136] + */ + YXRRSet("RR Set Exists when it should not", 7), + /** + * RR Set that should exist does not [RFC2136] + */ + NXRRSet("RR Set that should exist does not", 8), + /** + * Server Not Authoritative for zone [RFC2136]] + */ + NotAuth("Server Not Authoritative for zone", 9), + /** + * Name not contained in zone [RFC2136] + */ + NotZone("NotZone Name not contained in zone", 10), + + ; + + // 0 NoError No Error [RFC1035] + // 1 FormErr Format Error [RFC1035] + // 2 ServFail Server Failure [RFC1035] + // 3 NXDomain Non-Existent Domain [RFC1035] + // 4 NotImp Not Implemented [RFC1035] + // 5 Refused Query Refused [RFC1035] + // 6 YXDomain Name Exists when it should not [RFC2136] + // 7 YXRRSet RR Set Exists when it should not [RFC2136] + // 8 NXRRSet RR Set that should exist does not [RFC2136] + // 9 NotAuth Server Not Authoritative for zone [RFC2136] + // 10 NotZone Name not contained in zone [RFC2136] + // 11-15 Unassigned + // 16 BADVERS Bad OPT Version [RFC2671] + // 16 BADSIG TSIG Signature Failure [RFC2845] + // 17 BADKEY Key not recognized [RFC2845] + // 18 BADTIME Signature out of time window [RFC2845] + // 19 BADMODE Bad TKEY Mode [RFC2930] + // 20 BADNAME Duplicate key name [RFC2930] + // 21 BADALG Algorithm not supported [RFC2930] + // 22 BADTRUNC Bad Truncation [RFC4635] + // 23-3840 Unassigned + // 3841-4095 Reserved for Private Use [RFC5395] + // 4096-65534 Unassigned + // 65535 Reserved, can be allocated by Standards Action [RFC5395] + + /** + * DNS Result Code types are encoded on the last 4 bits + */ + final static int RCode_MASK = 0x0F; + /** + * DNS Extended Result Code types are encoded on the first 8 bits + */ + final static int ExtendedRCode_MASK = 0xFF; + + private final String _externalName; + + private final int _index; + + DNSResultCode(String name, int index) { + _externalName = name; + _index = index; + } + + /** + * Return the string representation of this type + * + * @return String + */ + public String externalName() { + return _externalName; + } + + /** + * Return the numeric value of this type + * + * @return String + */ + public int indexValue() { + return _index; + } + + /** + * @param flags + * @return label + */ + public static DNSResultCode resultCodeForFlags(int flags) { + int maskedIndex = flags & RCode_MASK; + for (DNSResultCode aCode : DNSResultCode.values()) { + if (aCode._index == maskedIndex) return aCode; + } + return Unknown; + } + + public static DNSResultCode resultCodeForFlags(int flags, int extendedRCode) { + int maskedIndex = ((extendedRCode >> 28) & ExtendedRCode_MASK) | (flags & RCode_MASK); + for (DNSResultCode aCode : DNSResultCode.values()) { + if (aCode._index == maskedIndex) return aCode; + } + return Unknown; + } + + @Override + public String toString() { + return this.name() + " index " + this.indexValue(); + } + +} |