dns-packet-typescript
Version:
An abstract-encoding compliant module for encoding / decoding DNS packets
55 lines • 1.65 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.encodingLength = exports.decode = exports.encode = exports.NOT_QU_MASK = exports.QU_MASK = void 0;
var types = require("./types");
var classes = require("./classes");
var name = require("./name");
exports.QU_MASK = 1 << 15;
exports.NOT_QU_MASK = ~exports.QU_MASK;
function encode(q, buf, offset) {
if (offset === void 0) { offset = 0; }
if (!buf) {
buf = Buffer.allocUnsafe(encodingLength(q));
}
if (!offset) {
offset = 0;
}
var oldOffset = offset;
name.encode(q.name, buf, offset);
offset += name.encode.bytes;
buf.writeUInt16BE(types.toType(q.type), offset);
offset += 2;
buf.writeUInt16BE(classes.toClass(q.class === undefined ? 'IN' : q.class), offset);
offset += 2;
encode.bytes = offset - oldOffset;
return q;
}
exports.encode = encode;
encode.bytes = 0;
function decode(buf, offset) {
if (offset === void 0) { offset = 0; }
if (!offset) {
offset = 0;
}
var oldOffset = offset;
var q = {};
q.name = name.decode(buf, offset);
offset += name.decode.bytes;
q.type = types.toString(buf.readUInt16BE(offset));
offset += 2;
q.class = classes.toString(buf.readUInt16BE(offset));
offset += 2;
var qu = !!(q.class & exports.QU_MASK);
if (qu) {
q.class &= exports.NOT_QU_MASK;
}
decode.bytes = offset - oldOffset;
return q;
}
exports.decode = decode;
decode.bytes = 0;
function encodingLength(q) {
return name.encodingLength(q.name) + 4;
}
exports.encodingLength = encodingLength;
//# sourceMappingURL=question.js.map
;