wm: dnsparser

Download patch

ref: 24acc31508fd9964b812962a0ff2c52864cb212f
parent: 824bfaa30889ec9b56e9ab9704bce616a5129f0a
author: mkf <mkf@cloud9p.org>
date: Wed Jul 31 09:01:22 EDT 2024

pkt: small fixes

--- a/pkt.c
+++ b/pkt.c
@@ -16,7 +16,7 @@
 		case IPPROTO_TCP:
 			return "TCP";
 		default:
-			err(1, "pktTypeToStr(%d): unkown type", pkt);
+			err(0, "pktTypeToStr(%d): unkown type", pkt);
 			return NULL;
 	}
 }
@@ -24,17 +24,35 @@
 int
 parsePkt(const u_char *pkt, Pkt *p)
 {
-	p->version = IP4_V(pkt[0]);
-	p->headerlen = IP4_HL(pkt[0]) * 4;
+	int pos = 0;
+	p->version = IP4_V(pkt[pos]);
+	p->headerlen = IP4_HL(pkt[pos]) * 4;
+	pos += PKT_VHL;
 
-	p->len = get2(pkt + PKT_LEN);
-	p->ttl = pkt[PKT_TTL];
-	p->proto = pkt[PKT_PROTO];
-	p->sum = get2(pkt + PKT_SUM);
-
-	p->srcip = get4(pkt + PKT_SRC);
-	p->dstip = get4(pkt + PKT_DST);
+	p->dsfield = pkt[pos];
+	pos += PKT_DSFIELD;
 	
+	p->len = get2(pkt + pos);
+	pos += PKT_LEN;
+	
+	p->id = get2(pkt + pos);
+	pos += PKT_ID;
+	
+	p->ttl = pkt[pos];
+	pos += PKT_TTL;
+	
+	p->proto = pkt[pos];
+	pos += PKT_PROTO;
+	
+	p->sum = get2(pkt + pos);
+	pos += PKT_SUM;
+
+	p->srcip = get4(pkt + pos);
+	pos += PKT_SRC;
+
+	p->dstip = get4(pkt + pos);
+	pos += PKT_DST;
+
 	return 1;
 }
 
@@ -42,9 +60,11 @@
 printPkt(Pkt p)
 {
 	printf("ip packet info:\n"
-	"\tversion: 0x%x\theaderlen: 0x%x\tlen: 0x%x\n",
-	p.version, p.headerlen, p.len);
+	"\tversion: 0x%x\theaderlen: 0x%x\tdsfield: %b\n",
+	p.version, p.headerlen, p.dsfield);
 
+	printf("\tlen: %d (%x)\tid: %x (%d)\n",
+	p.len, p.len, p.id, p.id);
 	printf("\tttl: 0%x (%d)\tproto 0%x (%s)\tsum: 0x%x\n",
 	p.ttl, p.ttl, p.proto, pktTypeToStr(p.proto), p.sum);