1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- '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
- }
|