@homebridge/ciao
Version:
ciao is a RFC 6763 compliant dns-sd library, advertising on multicast dns (RFC 6762) implemented in plain Typescript/JavaScript
62 lines • 2.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AAAARecord = void 0;
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const net_1 = tslib_1.__importDefault(require("net"));
const domain_formatter_1 = require("../../util/domain-formatter");
const ResourceRecord_1 = require("../ResourceRecord");
class AAAARecord extends ResourceRecord_1.ResourceRecord {
constructor(name, ipAddress, flushFlag, ttl) {
if (typeof name === "string") {
super(name, 28 /* RType.AAAA */, ttl || AAAARecord.DEFAULT_TTL, flushFlag);
}
else {
(0, assert_1.default)(name.type === 28 /* RType.AAAA */);
super(name);
}
(0, assert_1.default)(net_1.default.isIPv6(ipAddress), "IP address is not in v6 format!");
this.ipAddress = ipAddress;
}
getRDataEncodingLength() {
return 16; // 16 byte ipv6 address
}
encodeRData(coder, buffer, offset) {
const oldOffset = offset;
const address = (0, domain_formatter_1.enlargeIPv6)(this.ipAddress);
const hextets = address.split(":");
(0, assert_1.default)(hextets.length === 8, "invalid IP address");
for (const hextet of hextets) {
const number = parseInt(hextet, 16);
buffer.writeUInt16BE(number, offset);
offset += 2;
}
return offset - oldOffset; // written bytes
}
static decodeData(coder, header, buffer, offset) {
const oldOffset = offset;
const ipBytes = new Array(8);
for (let i = 0; i < 8; i++) {
const number = buffer.readUInt16BE(offset);
offset += 2;
ipBytes[i] = number.toString(16);
}
const ipAddress = (0, domain_formatter_1.shortenIPv6)(ipBytes.join(":"));
return {
data: new AAAARecord(header, ipAddress),
readBytes: offset - oldOffset,
};
}
clone() {
return new AAAARecord(this.getRecordRepresentation(), this.ipAddress);
}
dataAsString() {
return this.ipAddress;
}
dataEquals(record) {
return this.ipAddress === record.ipAddress;
}
}
exports.AAAARecord = AAAARecord;
AAAARecord.DEFAULT_TTL = AAAARecord.RR_DEFAULT_TTL_SHORT;
//# sourceMappingURL=AAAARecord.js.map