94 lines
1.7 KiB
JavaScript
Raw Normal View History

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.toCode = toCode;
exports.toString = toString;
function toString(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}`;
}
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;
}