--- netselect.c.orig Wed Jan 14 16:13:00 2004 +++ netselect.c Wed Jan 14 16:24:00 2004 @@ -39,8 +39,10 @@ * hey, great! Let me know. -- apenwarr */ -#ifdef __EMX__ -# include +#if defined(__EMX__) || 1 /* XXX BSD */ +# ifdef __EMX__ +# include +# endif # include # include # include @@ -152,6 +154,7 @@ extern int optind; int hostcount, startcount, endcount = 0, sent_one, lag, min_lag = 100; int ch, seq, ttl, max_ttl = 30, min_tries = 10, num_score = 1; + int on = 1; struct timeval now; struct timezone tz; OPacket outpacket; /* last output (udp) packet */ @@ -235,6 +238,10 @@ fprintf(stderr, "Running netselect to choose %d out of %d address%s.\n", num_score, numhosts, numhosts==1 ? "" : "es"); + if (setsockopt(sndsock, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0) { + perror("IP_HDRINCL"); + exit(1); + } /* keep going until most of the hosts have been finished */ must_continue = numhosts; while (must_continue && must_continue >= numhosts/2) @@ -712,7 +719,7 @@ ip->ip_off = 0; ip->ip_hl = sizeof(*ip) >> 2; ip->ip_p = IPPROTO_UDP; - ip->ip_len = 0; /* kernel fills this in */ + ip->ip_len = sizeof(OPacket); ip->ip_ttl = ttl; ip->ip_v = IPVERSION; ip->ip_id = htons(ident + seq);