diff --git a/packer/type.ns.js b/packer/type.ns.js new file mode 100644 index 0000000..6c68dcf --- /dev/null +++ b/packer/type.ns.js @@ -0,0 +1,39 @@ +(function (exports) { +'use strict'; + + +// NS name for the supplied domain. May be label, pointer or any combination + +exports.DNS_PACKER_TYPE_NS = function (ab, dv, total, record) { + if(!record.data){ + throw new Error("no data on NS record"); + } + + + var nsLen = 0; + var rdLenIndex = total; + total +=2; + + // RDATA + // a sequence of labels + + record.data.split('.').forEach(function(label) { + nsLen += 1 + label.length; + + dv.setUint8(total, label.length, false); + total += 1; + + label.split('').forEach(function (ch){ + dv.setUint8(total, ch.charCodeAt(0), false); + total += 1; + }); + }); + + // RDLENGTH + dv.setUint16(rdLenIndex, record.data.length + 1, false); + + + return total; +}; + +}('undefined' !== typeof window ? window : exports));