forked from mafintosh/dns-packet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
optioncodes.ts
64 lines (52 loc) · 1.36 KB
/
optioncodes.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/// export
export function toString(type) {
switch(type) {
// https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-11
case 1: return "LLQ";
case 2: return "UL";
case 3: return "NSID";
case 5: return "DAU";
case 6: return "DHU";
case 7: return "N3U";
case 8: return "CLIENT_SUBNET";
case 9: return "EXPIRE";
case 10: return "COOKIE";
case 11: return "TCP_KEEPALIVE";
case 12: return "PADDING";
case 13: return "CHAIN";
case 14: return "KEY_TAG";
case 26946: return "DEVICEID";
}
if (type < 0)
return null;
return `OPTION_${type}`;
}
export function toCode(name) {
if (typeof name === "number")
return name;
if (!name)
return -1;
switch(name.toUpperCase()) {
case "OPTION_0": return 0;
case "LLQ": return 1;
case "UL": return 2;
case "NSID": return 3;
case "OPTION_4": return 4;
case "DAU": return 5;
case "DHU": return 6;
case "N3U": return 7;
case "CLIENT_SUBNET": return 8;
case "EXPIRE": return 9;
case "COOKIE": return 10;
case "TCP_KEEPALIVE": return 11;
case "PADDING": return 12;
case "CHAIN": return 13;
case "KEY_TAG": return 14;
case "DEVICEID": return 26946;
case "OPTION_65535": return 65535;
}
const m = name.match(/_(\d+)$/);
if (m)
return parseInt(m[1], 10);
return -1;
}