add qd, an, ns, and ar counts
This commit is contained in:
		
							parent
							
								
									af89bfa000
								
							
						
					
					
						commit
						abf11b7205
					
				
							
								
								
									
										25
									
								
								dns.pack.js
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								dns.pack.js
									
									
									
									
									
								
							| @ -1,25 +0,0 @@ | ||||
| (function (exports) { | ||||
| 'use strict'; | ||||
| 
 | ||||
| var pdns = exports.DNS_PACK = function () { | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| pdns.packHeader = function(h) { | ||||
|   var val = 0; | ||||
| 
 | ||||
|   val += (h.qr     << 15) & 0x8000; | ||||
|   val += (h.opcode << 11) & 0x7800; | ||||
|   val += (h.aa     << 10) &  0x400; | ||||
|   val += (h.tc     <<  9) &  0x200; | ||||
|   val += (h.rd     <<  8) &  0x100; | ||||
|   val += (h.ra     <<  7) &   0x80; | ||||
|   val += (h.res1   <<  6) &   0x40; | ||||
|   val += (h.res2   <<  5) &   0x20; | ||||
|   val += (h.res3   <<  4) &   0x10; | ||||
|   val += h.rcode          &    0xF; | ||||
| 
 | ||||
|   return val; | ||||
| }; | ||||
| 
 | ||||
| }('undefined' !== typeof window ? window : exports)); | ||||
| @ -5,14 +5,18 @@ var dnspack = exports.DNS_PACKER = { | ||||
|   pack: function (packet) { | ||||
|     var total = 0; | ||||
|     var id = packet.header.id;                      // 2 bytes
 | ||||
|     total += 2; | ||||
|     var header = dnspack.packHeader(packet.header); // 2 bytes
 | ||||
|     total += 2; | ||||
|     total = 12;                                     // 2+2+2+2 bytes ({qd,an,ns,ar}count)
 | ||||
| 
 | ||||
|     var ab = new ArrayBuffer(total); | ||||
|     var dv = new DataView(ab); | ||||
|     dv.setUint16(0, id, false); | ||||
|     dv.setUint16(2, header, false); | ||||
|     dv.setUint16(4, packet.question.length, false); | ||||
|     dv.setUint16(6, packet.answer.length, false); | ||||
|     dv.setUint16(8, packet.authority.length, false); | ||||
|     // EDNS is added as an additional with TYPE 41 (OPT, 0x29)
 | ||||
|     dv.setUint16(10, packet.additional.length + (packet.payload ? 1 : 0), false); | ||||
| 
 | ||||
|     return ab; | ||||
|   } | ||||
|  | ||||
| @ -26,14 +26,14 @@ | ||||
|     var lead = bytecount.toString(16); | ||||
|     bytecount += 10; | ||||
| 
 | ||||
|     while (lead.length < 8) { | ||||
|     while (lead.length < 7) { | ||||
|       lead = '0' + lead; | ||||
|     } | ||||
| 
 | ||||
|     return lead + ' ' + str; | ||||
|   }).join('\n'); | ||||
|   var trail = ab.byteLength.toString(16); | ||||
|   while (trail.length < 8) { | ||||
|   while (trail.length < 7) { | ||||
|     trail = '0' + trail; | ||||
|   } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user