60 lines
1.4 KiB
JavaScript
60 lines
1.4 KiB
JavaScript
|
'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 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 'DEVICEID': return 26946
|
||
|
case 'OPTION_65535': return 65535
|
||
|
}
|
||
|
const m = name.match(/_(\d+)$/)
|
||
|
if (m) {
|
||
|
return parseInt(m[1], 10)
|
||
|
}
|
||
|
return -1
|
||
|
}
|