All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.jmdns.impl.constants.DNSResultCode Maven / Gradle / Ivy

Go to download

JmDNS is a Java implementation of multi-cast DNS and can be used for service registration and discovery in local area networks. JmDNS is fully compatible with Apple's Bonjour. The project was originally started in December 2002 by Arthur van Hoff at Strangeberry. In November 2003 the project was moved to SourceForge, and the name was changed from JRendezvous to JmDNS for legal reasons. Many thanks to Stuart Cheshire for help and moral support.

The newest version!
/**
 *
 */
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();
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy