summaryrefslogtreecommitdiffstats
path: root/testing/xpcshell/dns-packet/optioncodes.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/xpcshell/dns-packet/optioncodes.js')
-rw-r--r--testing/xpcshell/dns-packet/optioncodes.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/testing/xpcshell/dns-packet/optioncodes.js b/testing/xpcshell/dns-packet/optioncodes.js
new file mode 100644
index 0000000000..a683ce81e6
--- /dev/null
+++ b/testing/xpcshell/dns-packet/optioncodes.js
@@ -0,0 +1,61 @@
+'use strict'
+
+exports.toString = function (type) {
+ switch (type) {
+ // list at
+ // 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 15: return 'EDNS_ERROR'
+ case 26946: return 'DEVICEID'
+ }
+ if (type < 0) {
+ return null
+ }
+ return `OPTION_${type}`
+}
+
+exports.toCode = function (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 'EDNS_ERROR': return 15
+ case 'DEVICEID': return 26946
+ case 'OPTION_65535': return 65535
+ }
+ const m = name.match(/_(\d+)$/)
+ if (m) {
+ return parseInt(m[1], 10)
+ }
+ return -1
+}