13742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman/**
23742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman *
33742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */
43742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanpackage javax.jmdns.impl.constants;
53742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
63742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman/**
73742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * DNS option code.
83742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman *
93742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * @author Arthur van Hoff, Pierre Frisch, Rick Blair
103742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */
113742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanpublic enum DNSOptionCode {
123742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
133742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
143742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Token
153742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
163742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    Unknown("Unknown", 65535),
173742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
183742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Long-Lived Queries Option [http://files.dns-sd.org/draft-sekar-dns-llq.txt]
193742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
203742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    LLQ("LLQ", 1),
213742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
223742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Update Leases Option [http://files.dns-sd.org/draft-sekar-dns-ul.txt]
233742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
243742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    UL("UL", 2),
253742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
263742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Name Server Identifier Option [RFC5001]
273742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
283742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    NSID("NSID", 3),
293742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
303742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Owner Option [draft-cheshire-edns0-owner-option]
313742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
323742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    Owner("Owner", 4);
333742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
343742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private final String _externalName;
353742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
363742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private final int    _index;
373742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
383742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    DNSOptionCode(String name, int index) {
393742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        _externalName = name;
403742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        _index = index;
413742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
423742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
433742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
443742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Return the string representation of this type
453742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *
463742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @return String
473742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
483742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public String externalName() {
493742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return _externalName;
503742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
513742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
523742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
533742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Return the numeric value of this type
543742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *
553742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @return String
563742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
573742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public int indexValue() {
583742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return _index;
593742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
603742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
613742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
623742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @param optioncode
633742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @return label
643742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
653742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public static DNSOptionCode resultCodeForFlags(int optioncode) {
663742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        int maskedIndex = optioncode;
673742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        for (DNSOptionCode aCode : DNSOptionCode.values()) {
683742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman            if (aCode._index == maskedIndex) return aCode;
693742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        }
703742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return Unknown;
713742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
723742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
733742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
743742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public String toString() {
753742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return this.name() + " index " + this.indexValue();
763742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
773742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
783742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman}
79