New way of polling, added comments on magic numbers

This commit is contained in:
Erik Ekman 2006-06-06 11:09:13 +00:00
parent f6bff7242d
commit 4bcc25da64

View file

@ -35,6 +35,11 @@
#define FRAMESIZE (64*1024) #define FRAMESIZE (64*1024)
#define POLL_MAX 4
static int poll_sec[] = {1, 0, 0, 0, 0};
static int poll_usec[] = {0, 400000, 200000, 100000, 50000};
int running = 1; int running = 1;
static void static void
@ -56,15 +61,12 @@ tunnel(int tun_fd, int dns_fd)
fastpoll = 0; fastpoll = 0;
while (running) { while (running) {
if (fastpoll) { if (fastpoll > 0) {
tv.tv_sec = 0; fastpoll--;
tv.tv_usec = 55000; printf("Fast poll %d\n", fastpoll);
fastpoll = 0;
printf("Fast poll\n");
} else {
tv.tv_sec = 1;
tv.tv_usec = 0;
} }
tv.tv_sec = poll_sec[fastpoll];
tv.tv_usec = poll_usec[fastpoll];
FD_ZERO(&fds); FD_ZERO(&fds);
if (!dns_sending()) if (!dns_sending())
@ -95,14 +97,15 @@ tunnel(int tun_fd, int dns_fd)
if (read > 0) { if (read > 0) {
printf("Got data on dns! %d bytes\n", read); printf("Got data on dns! %d bytes\n", read);
frame->flags = htons(0x0000);
#ifdef LINUX #ifdef LINUX
frame->proto = htons(0x0800); frame->proto = htons(0x0800); // Linux wants ETH_P_IP
#else #else
frame->proto = htons(0x0002); frame->proto = htons(0x0002); // BSD wants AF_INET as long word
#endif #endif
write_tun(tun_fd, frame, read + 4); write_tun(tun_fd, frame, read + 4);
fastpoll = 1; // make sure we send packet real soon fastpoll = POLL_MAX;
} }
} }
} }
@ -134,7 +137,7 @@ main(int argc, char **argv)
printf("Closing tunnel\n"); printf("Closing tunnel\n");
close_dns(dns_fd); close_dns(dns_fd);
close_tun(tun_fd); close_tun(tun_fd);
return 0; return 0;
} }