Gave packet a header class
This commit is contained in:
parent
e3f2551889
commit
ffac12f700
|
@ -7,7 +7,7 @@ var classes = exports.DNS_CLASSES || require('./dns.classes.js').DNS_CLASSES;
|
||||||
var types = exports.DNS_TYPES || require('./dns.types.js').DNS_TYPES;
|
var types = exports.DNS_TYPES || require('./dns.types.js').DNS_TYPES;
|
||||||
|
|
||||||
// Order http://www.zytrax.com/books/dns/ch15/
|
// Order http://www.zytrax.com/books/dns/ch15/
|
||||||
|
var packet = {};
|
||||||
pdns.unpackHeader = function (i) {
|
pdns.unpackHeader = function (i) {
|
||||||
// i is one element from a Uint16Array (as a 16-bit unsigned integer)
|
// i is one element from a Uint16Array (as a 16-bit unsigned integer)
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ pdns.unpack = function (ab) {
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView
|
||||||
var dv = new DataView(ab);
|
var dv = new DataView(ab);
|
||||||
var id = dv.getUint16(0, false);
|
var id = dv.getUint16(0, false);
|
||||||
var header = pdns.unpackHeader(dv.getUint16(2, false));
|
packet.header = pdns.unpackHeader(dv.getUint16(2, false));
|
||||||
var qdcount = dv.getUint16(4, false); // query count
|
var qdcount = dv.getUint16(4, false); // query count
|
||||||
var ancount = dv.getUint16(6, false); // answer count
|
var ancount = dv.getUint16(6, false); // answer count
|
||||||
var nscount = dv.getUint16(8, false); // authority count
|
var nscount = dv.getUint16(8, false); // authority count
|
||||||
|
@ -168,38 +168,39 @@ pdns.unpack = function (ab) {
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
|
|
||||||
header.id = id;
|
packet.header.id = id;
|
||||||
|
|
||||||
|
|
||||||
console.log('qdcount', qdcount);
|
console.log('qdcount', qdcount);
|
||||||
header.question = [];
|
packet.question = [];
|
||||||
for (i = 0; i < qdcount; i += 1) {
|
for (i = 0; i < qdcount; i += 1) {
|
||||||
rec = unpackQuestion(ab, dv, ui8, total);
|
rec = unpackQuestion(ab, dv, ui8, total);
|
||||||
total += rec.byteLength;
|
total += rec.byteLength;
|
||||||
header.question.push(rec);
|
packet.question.push(rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('ancount', ancount);
|
console.log('ancount', ancount);
|
||||||
header.answer = [];
|
packet.answer = [];
|
||||||
for (i = 0; i < ancount; i += 1) {
|
for (i = 0; i < ancount; i += 1) {
|
||||||
rec = unpackAnswer(ab, dv, ui8, total);
|
rec = unpackAnswer(ab, dv, ui8, total);
|
||||||
total += rec.byteLength;
|
total += rec.byteLength;
|
||||||
header.answer.push(rec);
|
packet.answer.push(rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('nscount', nscount);
|
console.log('nscount', nscount);
|
||||||
header.authority = [];
|
packet.authority = [];
|
||||||
for (i = 0; i < nscount; i += 1) {
|
for (i = 0; i < nscount; i += 1) {
|
||||||
rec = unpackAnswer(ab, dv, ui8, total);
|
rec = unpackAnswer(ab, dv, ui8, total);
|
||||||
total += rec.byteLength;
|
total += rec.byteLength;
|
||||||
header.authority.push(rec);
|
packet.authority.push(rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('arcount', arcount);
|
console.log('arcount', arcount);
|
||||||
header.additional = [];
|
packet.additional = [];
|
||||||
for (i = 0; i < arcount; i += 1) {
|
for (i = 0; i < arcount; i += 1) {
|
||||||
rec = unpackAnswer(ab, dv, ui8, total);
|
rec = unpackAnswer(ab, dv, ui8, total);
|
||||||
total += rec.byteLength;
|
total += rec.byteLength;
|
||||||
header.additional.push(rec);
|
packet.additional.push(rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ab.byteLength !== total) {
|
if (ab.byteLength !== total) {
|
||||||
|
@ -207,8 +208,8 @@ pdns.unpack = function (ab) {
|
||||||
"Parsed " + total + " bytes, but packet is " + ab.byteLength + " bytes."
|
"Parsed " + total + " bytes, but packet is " + ab.byteLength + " bytes."
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
header.byteLength = total;
|
packet.byteLength = total;
|
||||||
return header;
|
return packet;
|
||||||
};
|
};
|
||||||
pdns.unpackRdata = exports.DNS_RDATA_PARSE || require('./dns.rdata.parse.js').DNS_RDATA_PARSE;
|
pdns.unpackRdata = exports.DNS_RDATA_PARSE || require('./dns.rdata.parse.js').DNS_RDATA_PARSE;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue