Allow to force TFTP to use a fixed UDP port

(Add a configuration option CONFIG_TFTP_PORT and optional env variable tftpport)
Patch by Jerry Van Baren, 10 Jan 2005
This commit is contained in:
Wolfgang Denk 2005-09-24 22:37:32 +02:00
parent 4bc12f1ccf
commit ecb0ccd9c2
3 changed files with 34 additions and 0 deletions

View File

@ -2,6 +2,11 @@
Changes for U-Boot 1.1.4:
======================================================================
* Allow to force TFTP to use a fixed UDP port
(Add a configuration option CONFIG_TFTP_PORT and optional env
variable tftpport)
Patch by Jerry Van Baren, 10 Jan 2005
* Fix ethernet timeouts on dbau1550 and other au1x00 systems
Patch by Leif Lindholm, 29 Dec 2004

19
README
View File

@ -1487,6 +1487,22 @@ The following options need to be configured:
When SystemACE support is added, the "ace" device type
becomes available to the fat commands, i.e. fatls.
- TFTP Fixed UDP Port:
CONFIG_TFTP_PORT
If this is defined, the environment variable tftpport
is used to supply the TFTP UDP source port value.
If tftpport isn't defined, the normal pseudo-random port
number generator is used.
The purpose for this is to allow a TFTP server to
blindly start the TFTP transfer using the pre-configured
target IP address and UDP port. This has the effect of
"punching through" the (Windows XP) firewall, allowing
the remainder of the TFTP transfer to proceed normally.
A better solution is to properly configure the firewall,
but sometimes that is not allowed.
- Show boot progress:
CONFIG_SHOW_BOOT_PROGRESS
@ -2452,6 +2468,9 @@ Some configuration options can be set using Environment Variables:
Useful on scripts which control the retry operation
themselves.
tftpport - If this is set, the value is used for TFTP's
UDP source port.
vlan - When set to a value < 4095 the traffic over
ethernet is encapsulated/received over 802.1q
VLAN tagged frames.

View File

@ -313,6 +313,10 @@ TftpTimeout (void)
void
TftpStart (void)
{
#ifdef CONFIG_TFTP_PORT
char *ep; /* Environment pointer */
#endif
if (BootFile[0] == '\0') {
sprintf(default_filename, "%02lX%02lX%02lX%02lX.img",
NetOurIP & 0xFF,
@ -364,7 +368,13 @@ TftpStart (void)
TftpServerPort = WELL_KNOWN_PORT;
TftpTimeoutCount = 0;
TftpState = STATE_RRQ;
/* Use a pseudo-random port unless a specific port is set */
TftpOurPort = 1024 + (get_timer(0) % 3072);
#ifdef CONFIG_TFTP_PORT
if ((ep = getenv("tftpport")) != NULL) {
TftpOurPort= simple_strtol(ep, NULL, 10);
}
#endif
TftpBlock = 0;
/* zero out server ether in case the server ip has changed */