UNPKG

dns-packet-typescript

Version:

An abstract-encoding compliant module for encoding / decoding DNS packets

55 lines 1.65 kB
"use strict"; 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