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
master
Wolfgang Denk 20 years ago
parent 4bc12f1ccf
commit ecb0ccd9c2
  1. 5
      CHANGELOG
  2. 19
      README
  3. 10
      net/tftp.c

@ -2,6 +2,11 @@
Changes for U-Boot 1.1.4: 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 * Fix ethernet timeouts on dbau1550 and other au1x00 systems
Patch by Leif Lindholm, 29 Dec 2004 Patch by Leif Lindholm, 29 Dec 2004

@ -1487,6 +1487,22 @@ The following options need to be configured:
When SystemACE support is added, the "ace" device type When SystemACE support is added, the "ace" device type
becomes available to the fat commands, i.e. fatls. 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: - Show boot progress:
CONFIG_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 Useful on scripts which control the retry operation
themselves. 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 vlan - When set to a value < 4095 the traffic over
ethernet is encapsulated/received over 802.1q ethernet is encapsulated/received over 802.1q
VLAN tagged frames. VLAN tagged frames.

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

Loading…
Cancel
Save