From 82b5d23788e747a830b0410b174eac5002304a8b Mon Sep 17 00:00:00 2001 From: Erik Ekman Date: Tue, 6 Jun 2006 15:40:06 +0000 Subject: [PATCH] Send P in ping packets --- dns.c | 14 +++++++++----- dns.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/dns.c b/dns.c index 88c1220..026fa25 100644 --- a/dns.c +++ b/dns.c @@ -165,7 +165,7 @@ dns_send_chunk(int fd) p = activepacket; p += packetpos; avail = packetlen - packetpos; - lastlen = dns_write(fd, ++chunkid, p, avail); + lastlen = dns_write(fd, ++chunkid, p, avail, 0); printf("Sent %d bytes of %d remaining\n", lastlen, avail); } @@ -191,7 +191,7 @@ dns_ping(int dns_fd) packetlen = 0; } snprintf(data, 3, "%02X", pingid); - dns_write(dns_fd, ++pingid, data, 2); + dns_write(dns_fd, ++pingid, data, 2, 1); } void @@ -253,7 +253,7 @@ put_hex(char *p, char h) } int -dns_write(int fd, int id, char *buf, int len) +dns_write(int fd, int id, char *buf, int len, int ping) { int avail; int i; @@ -275,8 +275,12 @@ dns_write(int fd, int id, char *buf, int len) bzero(data, sizeof(data)); d = data; - // First byte is 0 for middle packet and 1 for last packet - *d = '0' + final; + if (ping) { + *d = 'P'; + } else { + // First byte is 0 for middle packet and 1 for last packet + *d = '0' + final; + } d++; if (len > 0) { diff --git a/dns.h b/dns.h index 3678076..8fc447d 100644 --- a/dns.h +++ b/dns.h @@ -24,7 +24,7 @@ int dns_sending(); void dns_handle_tun(int, char *, int); void dns_ping(int); void dns_query(int, int, char *, int); -int dns_write(int, int, char *, int); +int dns_write(int, int, char *, int, int); int dns_read(int, char *, int);