All of lore.kernel.org
 help / color / mirror / Atom feed
From: jacmet at uclibc.org <jacmet@uclibc.org>
To: buildroot@busybox.net
Subject: [Buildroot] svn commit: trunk/buildroot/package/busybox
Date: Thu, 15 Mar 2007 01:36:20 -0700 (PDT)	[thread overview]
Message-ID: <20070315083620.34B0E48022@busybox.net> (raw)

Author: jacmet
Date: 2007-03-15 01:36:18 -0700 (Thu, 15 Mar 2007)
New Revision: 18117

Log:
tftp patch

Added:
   trunk/buildroot/package/busybox/busybox-1.4.1-tftp.patch


Changeset:
Added: trunk/buildroot/package/busybox/busybox-1.4.1-tftp.patch
===================================================================
--- trunk/buildroot/package/busybox/busybox-1.4.1-tftp.patch	                        (rev 0)
+++ trunk/buildroot/package/busybox/busybox-1.4.1-tftp.patch	2007-03-15 08:36:18 UTC (rev 18117)
@@ -0,0 +1,112 @@
+--- busybox-1.4.1/include/libbb.h	Wed Jan 24 22:34:48 2007
++++ busybox-1.4.1-tftp/include/libbb.h	Sat Mar  3 00:02:34 2007
+@@ -290,7 +290,7 @@
+ 
+ /* "new" (ipv4+ipv6) API */
+ typedef struct len_and_sockaddr {
+-	int len;
++	socklen_t len;
+ 	union {
+ 		struct sockaddr sa;
+ 		struct sockaddr_in sin;
+--- busybox-1.4.1/networking/tftp.c	Wed Jan 24 22:34:34 2007
++++ busybox-1.4.1-tftp/networking/tftp.c	Sat Mar  3 00:02:56 2007
+@@ -132,7 +132,7 @@
+ #if ENABLE_FEATURE_TFTP_GET && ENABLE_FEATURE_TFTP_PUT
+ 		const int cmd,
+ #endif
+-		const len_and_sockaddr *peer_lsa,
++		len_and_sockaddr *peer_lsa,
+ 		const char *remotefile, const int localfd,
+ 		unsigned port, int tftp_bufsize)
+ {
+@@ -149,6 +149,9 @@
+ 
+ 	USE_FEATURE_TFTP_BLOCKSIZE(int want_option_ack = 0;)
+ 
++	unsigned org_port;
++	len_and_sockaddr *const from = alloca(offsetof(len_and_sockaddr, sa) + peer_lsa->len);
++
+ 	/* Can't use RESERVE_CONFIG_BUFFER here since the allocation
+ 	 * size varies meaning BUFFERS_GO_ON_STACK would fail */
+ 	/* We must keep the transmit and receive buffers seperate */
+@@ -156,7 +159,7 @@
+ 	char *xbuf = xmalloc(tftp_bufsize += 4);
+ 	char *rbuf = xmalloc(tftp_bufsize);
+ 
+-	port = htons(port);
++	port = org_port = htons(port);
+ 
+ 	socketfd = xsocket(peer_lsa->sa.sa_family, SOCK_DGRAM, 0);
+ 
+@@ -167,10 +170,10 @@
+ 	}
+ 
+ 	while (1) {
+-
+ 		cp = xbuf;
+ 
+ 		/* first create the opcode part */
++		/* (this 16bit store is aligned) */
+ 		*((uint16_t*)cp) = htons(opcode);
+ 		cp += 2;
+ 
+@@ -222,6 +225,7 @@
+ 		/* add ack and data */
+ 
+ 		if (CMD_GET(cmd) ? (opcode == TFTP_ACK) : (opcode == TFTP_DATA)) {
++			/* TODO: unaligned access! */
+ 			*((uint16_t*)cp) = htons(block_nr);
+ 			cp += 2;
+ 			block_nr++;
+@@ -273,28 +277,26 @@
+ 			FD_SET(socketfd, &rfds);
+ 
+ 			switch (select(socketfd + 1, &rfds, NULL, NULL, &tv)) {
+-				struct sockaddr *from;
+-				socklen_t fromlen;
+-
++				unsigned from_port;
+ 			case 1:
+-				fromlen = peer_lsa->len;
+-				from = alloca(fromlen);
+-				memset(from, 0, fromlen);
+-
++				from->len = peer_lsa->len;
++				memset(&from->sa, 0, peer_lsa->len);
+ 				len = recvfrom(socketfd, rbuf, tftp_bufsize, 0,
+-							from, &fromlen);
++							&from->sa, &from->len);
+ 				if (len < 0) {
+ 					bb_perror_msg("recvfrom");
+ 					break;
+ 				}
+-#if ENABLE_FEATURE_IPV6
+-				if (from->sa_family == AF_INET6)
+-					if (((struct sockaddr_in6*)from)->sin6_port != port)
+-						goto recv_again;
+-#endif
+-				if (from->sa_family == AF_INET)
+-					if (((struct sockaddr_in*)from)->sin_port != port)
+-						goto recv_again;
++				from_port = get_nport(from);
++				if (port == org_port) {
++					/* Our first query went to port 69
++					 * but reply will come from different one.
++					 * Remember and use this new port */
++					port = from_port;
++					set_nport(peer_lsa, from_port);
++				}
++				if (port != from_port)
++					goto recv_again;
+ 				timeout = 0;
+ 				break;
+ 			case 0:
+@@ -317,6 +319,7 @@
+ 		}
+ 
+ 		/* process received packet */
++		/* (both accesses seems to be aligned) */
+ 
+ 		opcode = ntohs( ((uint16_t*)rbuf)[0] );
+ 		tmp = ntohs( ((uint16_t*)rbuf)[1] );

             reply	other threads:[~2007-03-15  8:36 UTC|newest]

Thread overview: 161+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-15  8:36 jacmet at uclibc.org [this message]
  -- strict thread matches above, loose matches on Subject: below --
2009-03-02 15:33 [Buildroot] svn commit: trunk/buildroot/package/busybox jacmet at uclibc.org
2009-02-18 14:16 jacmet at uclibc.org
2009-02-01 19:36 jacmet at uclibc.org
2009-01-29 11:29 jacmet at uclibc.org
2009-01-29 11:27 jacmet at uclibc.org
2009-01-20 19:26 jacmet at uclibc.org
2009-01-19 12:34 jacmet at uclibc.org
2009-01-12  9:36 jacmet at uclibc.org
2008-12-31  9:35 jacmet at uclibc.org
2008-12-30 19:15 jacmet at uclibc.org
2008-12-29 10:09 jacmet at uclibc.org
2008-12-11  9:35 jacmet at uclibc.org
2008-12-10 13:46 jacmet at uclibc.org
2008-12-07 21:22 jacmet at uclibc.org
2008-12-04 13:21 jacmet at uclibc.org
2008-11-29 20:12 jacmet at uclibc.org
2008-11-28  8:19 jacmet at uclibc.org
2008-11-22  6:49 jacmet at uclibc.org
2008-11-21 14:36 jacmet at uclibc.org
2008-11-21 10:59 jacmet at uclibc.org
2008-11-20  6:49 jacmet at uclibc.org
2008-11-17  7:40 jacmet at uclibc.org
2008-11-16 17:22 jacmet at uclibc.org
2008-11-16 23:46 ` Hamish Moffatt
2008-11-17  7:13   ` Peter Korsgaard
2008-11-17 12:38     ` Hamish Moffatt
2008-11-17 12:45       ` Peter Korsgaard
2008-11-15 21:25 jacmet at uclibc.org
2008-11-13 16:32 jacmet at uclibc.org
2008-11-14 16:42 ` hartleys
2008-11-15 21:29   ` Peter Korsgaard
2008-11-16 23:42     ` Hamish Moffatt
2008-11-17  7:13       ` Peter Korsgaard
2008-11-13 16:32 jacmet at uclibc.org
2008-11-07 10:16 jacmet at uclibc.org
2008-11-02 13:06 jacmet at uclibc.org
2008-10-13 12:42 jacmet at uclibc.org
2008-10-06 18:52 jacmet at uclibc.org
2008-09-28 19:28 jacmet at uclibc.org
2008-09-22 11:54 jacmet at uclibc.org
2008-09-09  8:50 jacmet at uclibc.org
2008-09-09  8:50 jacmet at uclibc.org
2008-09-10  1:32 ` Hamish Moffatt
2008-09-10  6:57   ` Peter Korsgaard
2008-08-31 21:45 jacmet at uclibc.org
2008-08-28  4:57 jacmet at uclibc.org
2008-08-26  1:05 hamish at uclibc.org
2008-08-21  5:08 jacmet at uclibc.org
2008-08-06 12:56 jacmet at uclibc.org
2008-08-06  6:37 jacmet at uclibc.org
2008-08-04 19:06 jacmet at uclibc.org
2008-07-23  6:01 jacmet at uclibc.org
2008-07-22 11:19 jacmet at uclibc.org
2008-07-11 22:19 jacmet at uclibc.org
2008-07-06 13:55 jacmet at uclibc.org
2008-07-01 14:04 jacmet at uclibc.org
2008-07-01 13:37 jacmet at uclibc.org
2008-06-28 20:53 jacmet at uclibc.org
2008-06-26  6:51 jacmet at uclibc.org
2008-06-26  6:51 jacmet at uclibc.org
2008-06-26  6:58 ` Peter Korsgaard
2008-06-27  9:05   ` Daniel Laird
2008-06-27  9:20     ` Peter Korsgaard
2008-06-27 12:00       ` Bernhard Fischer
2008-06-27 12:46         ` sjhill at realitydiluted.com
2008-06-27 12:53           ` Bernhard Fischer
2008-06-27 14:07           ` Peter Korsgaard
2008-06-27 12:49         ` Daniel Laird
2008-06-27 13:19           ` Peter Korsgaard
2008-06-26  6:51 jacmet at uclibc.org
2008-06-20 18:38 jacmet at uclibc.org
2008-06-13 20:49 jacmet at uclibc.org
2008-06-07  7:46 jacmet at uclibc.org
2008-05-31 12:58 jacmet at uclibc.org
2008-05-31  7:28 jacmet at uclibc.org
2008-05-31  7:39 ` Cristian Ionescu-Idbohrn
2008-05-31 12:59   ` Peter Korsgaard
2008-05-09 10:01 jacmet at uclibc.org
2008-05-05 17:17 jacmet at uclibc.org
2008-04-29  6:53 jacmet at uclibc.org
2008-04-22  9:37 jacmet at uclibc.org
2008-04-04  7:17 jacmet at uclibc.org
2008-04-01 10:00 jacmet at uclibc.org
2008-03-30 14:37 jacmet at uclibc.org
2008-03-26 21:53 jacmet at uclibc.org
2008-03-26 21:49 jacmet at uclibc.org
2008-03-25 14:38 jacmet at uclibc.org
2008-03-21 17:56 ninevoltz at uclibc.org
2008-03-21 10:14 jacmet at uclibc.org
2008-03-17 19:44 jacmet at uclibc.org
2008-03-11  8:17 jacmet at uclibc.org
2008-02-28 14:38 jacmet at uclibc.org
2008-02-14 15:49 jacmet at uclibc.org
2008-02-14 14:45 jacmet at uclibc.org
2008-02-02 21:49 jacmet at uclibc.org
2008-01-08 12:51 jacmet at uclibc.org
2008-01-03 13:33 jacmet at uclibc.org
2008-01-03 13:33 jacmet at uclibc.org
2008-01-03 13:33 jacmet at uclibc.org
2008-01-03 13:33 jacmet at uclibc.org
2008-01-03 13:33 jacmet at uclibc.org
2008-01-03 13:31 jacmet at uclibc.org
2007-09-30 12:50 aldot at uclibc.org
2007-09-30 12:48 aldot at uclibc.org
2007-09-22 17:29 aldot at uclibc.org
2007-09-22 10:25 aldot at uclibc.org
2007-09-20 16:58 aldot at uclibc.org
2007-09-15 18:14 aldot at uclibc.org
2007-09-10  7:38 jacmet at uclibc.org
2007-09-02 22:09 aldot at uclibc.org
2007-09-02 14:56 aldot at uclibc.org
2007-09-01 17:33 aldot at uclibc.org
2007-08-24 14:23 aldot at uclibc.org
2007-07-08 12:10 aldot at uclibc.org
2007-07-08 12:04 aldot at uclibc.org
2007-07-08 11:56 aldot at uclibc.org
2007-07-02 15:20 aldot at uclibc.org
2007-07-02  9:54 aldot at uclibc.org
2007-06-27 21:07 aldot at uclibc.org
2007-06-25 11:07 aldot at uclibc.org
2007-06-14 13:09 jacmet at uclibc.org
2007-06-02 13:13 aldot at uclibc.org
2007-05-15  9:34 aldot at uclibc.org
2007-05-07  4:07 sjhill at uclibc.org
2007-05-07  4:04 sjhill at uclibc.org
2007-04-25  7:11 jacmet at uclibc.org
2007-04-05  7:04 jacmet at uclibc.org
2007-03-24 12:09 aldot at uclibc.org
2007-03-23 13:26 aldot at uclibc.org
2007-03-23 13:24 aldot at uclibc.org
2007-03-20  9:51 aldot at uclibc.org
2007-03-20  8:53 aldot at uclibc.org
2007-03-14 13:02 aldot at uclibc.org
2007-02-27  9:04 jacmet at uclibc.org
2007-02-23 11:55 jacmet at uclibc.org
2007-02-16 15:19 aldot at uclibc.org
2007-02-12 14:43 jacmet at uclibc.org
2007-02-06 16:34 jacmet at uclibc.org
2007-02-06 16:31 jacmet at uclibc.org
2007-02-06 16:23 jacmet at uclibc.org
2007-02-06 16:20 jacmet at uclibc.org
2007-02-06 16:18 jacmet at uclibc.org
2007-02-02 16:15 aldot at uclibc.org
2007-02-01 12:30 aldot at uclibc.org
2007-01-31 14:21 aldot at uclibc.org
2007-01-30 16:47 jacmet at uclibc.org
2007-01-30 13:37 jacmet at uclibc.org
2007-01-30 13:36 jacmet at uclibc.org
2006-12-13  6:58 andersen at uclibc.org
2006-12-13  6:18 andersen at uclibc.org
2006-12-07 16:31 aldot at uclibc.org
2006-12-02 19:36 aldot at uclibc.org
2006-12-02 18:36 aldot at uclibc.org
2006-12-02 17:03 aldot at uclibc.org
2006-11-17 12:57 aldot at uclibc.org
2006-11-17 11:37 aldot at uclibc.org
2006-10-25  8:10 jacmet at uclibc.org
2006-08-29 16:45 aldot at uclibc.org
2006-08-24 19:48 aldot at uclibc.org
2006-07-31  9:01 jacmet

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070315083620.34B0E48022@busybox.net \
    --to=jacmet@uclibc.org \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.