1 /**
2 *
3 */
4 package javax.jmdns.impl.constants;
5
6 /**
7 * DNS option code.
8 *
9 * @author Arthur van Hoff, Pierre Frisch, Rick Blair
10 */
11 public 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 }