[BusyBox-cvs] svn commit: trunk/busybox/networking

pgf at busybox.net pgf at busybox.net
Wed Jul 20 11:55:09 UTC 2005


Author: pgf
Date: 2005-07-20 05:55:08 -0600 (Wed, 20 Jul 2005)
New Revision: 10870

Log:
much more concise fix for bug #45.  just align the packet...


Modified:
   trunk/busybox/networking/traceroute.c


Changeset:
Modified: trunk/busybox/networking/traceroute.c
===================================================================
--- trunk/busybox/networking/traceroute.c	2005-07-20 07:20:27 UTC (rev 10869)
+++ trunk/busybox/networking/traceroute.c	2005-07-20 11:55:08 UTC (rev 10870)
@@ -77,7 +77,6 @@
 
 
 #define MAXPACKET       65535   /* max ip packet size */
-#define MAXPACKET_ICMP  512
 #ifndef MAXHOSTNAMELEN
 #define MAXHOSTNAMELEN  64
 #endif
@@ -102,6 +101,8 @@
 
 #include "busybox.h"
 
+                                       /* last inbound (icmp) packet */
+static u_char  packet[512] __attribute__ ((aligned));
 static struct opacket  *outpacket;     /* last output (udp) packet */
 
 static int s;                          /* receive (icmp) socket file descriptor */
@@ -185,7 +186,7 @@
 }
 
 static inline int
-wait_for_reply(int sock, struct sockaddr_in *from, int reset_timer, u_char *packet, int size)
+wait_for_reply(int sock, struct sockaddr_in *from, int reset_timer)
 {
 	fd_set fds;
 	static struct timeval wait;
@@ -212,7 +213,7 @@
 	}
 
 	if (select(sock+1, &fds, (fd_set *)0, (fd_set *)0, &wait) > 0)
-		cc=recvfrom(s, (char *)packet, size, 0,
+		cc=recvfrom(s, (char *)packet, sizeof(packet), 0,
 			    (struct sockaddr *)from, &fromlen);
 
 	return(cc);
@@ -339,12 +340,10 @@
 	struct hostent *hp;
 	struct sockaddr_in from, *to;
 	int ch, i, on, probe, seq, tos, ttl;
-	u_char *packet;
 
 	int options = 0;                /* socket options */
 	char *source = 0;
 	int nprobes = 3;
-	packet = xmalloc (MAXPACKET_ICMP);
 
 	on = 1;
 	seq = tos = 0;
@@ -496,7 +495,7 @@
 			(void) gettimeofday(&t1, &tz);
 			send_probe(++seq, ttl);
 			reset_timer = 1;
-			while ((cc = wait_for_reply(s, &from, reset_timer, packet, MAXPACKET_ICMP)) != 0) {
+			while ((cc = wait_for_reply(s, &from, reset_timer)) != 0) {
 				(void) gettimeofday(&t2, &tz);
 				if ((i = packet_ok(packet, cc, &from, seq))) {
 					reset_timer = 1;




More information about the busybox-cvs mailing list