Send P in ping packets

This commit is contained in:
Erik Ekman 2006-06-06 15:40:06 +00:00
parent 5c1bb035ca
commit 82b5d23788
2 changed files with 10 additions and 6 deletions

14
dns.c
View file

@ -165,7 +165,7 @@ dns_send_chunk(int fd)
p = activepacket; p = activepacket;
p += packetpos; p += packetpos;
avail = packetlen - 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); printf("Sent %d bytes of %d remaining\n", lastlen, avail);
} }
@ -191,7 +191,7 @@ dns_ping(int dns_fd)
packetlen = 0; packetlen = 0;
} }
snprintf(data, 3, "%02X", pingid); snprintf(data, 3, "%02X", pingid);
dns_write(dns_fd, ++pingid, data, 2); dns_write(dns_fd, ++pingid, data, 2, 1);
} }
void void
@ -253,7 +253,7 @@ put_hex(char *p, char h)
} }
int 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 avail;
int i; int i;
@ -275,8 +275,12 @@ dns_write(int fd, int id, char *buf, int len)
bzero(data, sizeof(data)); bzero(data, sizeof(data));
d = data; d = data;
// First byte is 0 for middle packet and 1 for last packet if (ping) {
*d = '0' + final; *d = 'P';
} else {
// First byte is 0 for middle packet and 1 for last packet
*d = '0' + final;
}
d++; d++;
if (len > 0) { if (len > 0) {

2
dns.h
View file

@ -24,7 +24,7 @@ int dns_sending();
void dns_handle_tun(int, char *, int); void dns_handle_tun(int, char *, int);
void dns_ping(int); void dns_ping(int);
void dns_query(int, int, char *, 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); int dns_read(int, char *, int);