1/**
2 *
3 */
4package javax.jmdns.impl.constants;
5
6/**
7 * DNS option code.
8 *
9 * @author Arthur van Hoff, Pierre Frisch, Rick Blair
10 */
11public enum DNSOptionCode {
12
13    /**
14     * Token
15     */
16    Unknown("Unknown", 65535),
17    /**
18     * Long-Lived Queries Option [http://files.dns-sd.org/draft-sekar-dns-llq.txt]
19     */
20    LLQ("LLQ", 1),
21    /**
22     * Update Leases Option [http://files.dns-sd.org/draft-sekar-dns-ul.txt]
23     */
24    UL("UL", 2),
25    /**
26     * Name Server Identifier Option [RFC5001]
27     */
28    NSID("NSID", 3),
29    /**
30     * Owner Option [draft-cheshire-edns0-owner-option]
31     */
32    Owner("Owner", 4);
33
34    private final String _externalName;
35
36    private final int    _index;
37
38    DNSOptionCode(String name, int index) {
39        _externalName = name;
40        _index = index;
41    }
42
43    /**
44     * Return the string representation of this type
45     *
46     * @return String
47     */
48    public String externalName() {
49        return _externalName;
50    }
51
52    /**
53     * Return the numeric value of this type
54     *
55     * @return String
56     */
57    public int indexValue() {
58        return _index;
59    }
60
61    /**
62     * @param optioncode
63     * @return label
64     */
65    public static DNSOptionCode resultCodeForFlags(int optioncode) {
66        int maskedIndex = optioncode;
67        for (DNSOptionCode aCode : DNSOptionCode.values()) {
68            if (aCode._index == maskedIndex) return aCode;
69        }
70        return Unknown;
71    }
72
73    @Override
74    public String toString() {
75        return this.name() + " index " + this.indexValue();
76    }
77
78}
79