public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Tolunay Orkun <listmember@orkun.us>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] PATCH: Force TFTP to use a fixed UDP port
Date: Thu, 06 Jan 2005 17:48:25 -0600	[thread overview]
Message-ID: <41DDCE49.4030503@orkun.us> (raw)
In-Reply-To: <41DDB3DE.4010403@smiths-aerospace.com>

I think you are doing something wrong with your Windows box. I have just 
tried 2 tftp servers (one running as service and another running as 
application) on Windows XP box and no such trickery that you prosed was 
needed.

You just have to tell Windows Firewall to unblock the application (or 
the executable for the service) and it works perfectly. What exactly is 
your configuration?

The only TFTP firewall issue I know is when client is behind a stateful 
firewall or NAT device, in which case the dynamic port chosen by the 
server for conducting the transfer (beyond 1st packet) gets blocked by 
the firewall. Source port of TFTP client is not an issue in that case. 
When server is behind a stateful firewall, this is not an issue!

I am having hard time understanding your issues. Can you describe the XP 
firewall issues a bit more in detail? I am feeling this patch is not 
really needed.

Best regards,
Tolunay

Jerry Van Baren wrote:
> Hi Wolfgang,
> 
> Attached is a patch to allow the user to set an environment variable 
> "tftpourport" to force TFTP to use that value for "TftpOurPort" (our UDP 
> port).  As discussed yesterday on this list, this is helpful for 
> "punching through" a firewall such as is installed with Windows XP SP2.
> 
> Making it an environment variable is cute but an overkill.  If there is 
> an outcry over the level of overkill, I would be willing to make the UDP 
> port a simple #define of a compile time constant, in which case it would 
> actually save a few bytes of ROM over the pseudo-random algorithm :-).
> 
> Thanks,
> gvb
> 
> 
> CHANGELOG:
> 
> * Patch by Jerry Van Baren 05 Jan 2005
>  - Make the u-boot TFTP source port be configurable using the
>    environment variable "tftpourport":
>    * If set, use that port as the u-boot source port
>    * If not set, use the current method of using a pseudo random port
> 
>  - The additional code can be totally removed by setting the
>    #define TFTP_PORT_FROM_ENV (in the net/tftp.c file) to zero.
> 
>  - The purpose behind this change is that our customer will
>    modify their TFTP server so that it blindly starts the
>    TFTP transfer using the pre-configured target IP address
>    and UDP port. This will have the effect of "punching through"
>    the (Windows XP) firewall, allowing the remainder of the TFTP
>    transfer to proceed normally.
> 
> 
> ------------------------------------------------------------------------
> 
> Index: net/tftp.c
> ===================================================================
> RCS file: /cvsroot/u-boot/u-boot/net/tftp.c,v
> retrieving revision 1.9
> diff -p -u -r1.9 tftp.c
> --- net/tftp.c	15 Apr 2004 21:48:55 -0000	1.9
> +++ net/tftp.c	6 Jan 2005 03:20:41 -0000
> @@ -24,6 +24,9 @@
>  					/* (for checking the image size)	*/
>  #define HASHES_PER_LINE	65		/* Number of "loading" hashes per line	*/
>  
> +#define TFTP_PORT_FROM_ENV	1	/* define this to allow setting the	*/
> +					/* TFTP source port in the environment	*/
> +					/* variable "tftpourport"		*/
>  /*
>   *	TFTP operations.
>   */
> @@ -301,6 +304,8 @@ TftpTimeout (void)
>  void
>  TftpStart (void)
>  {
> +	char *ep;             /* Environment pointer */
> +
>  	if (BootFile[0] == '\0') {
>  		IPaddr_t OurIP = ntohl(NetOurIP);
>  
> @@ -354,7 +359,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);
> +#if TFTP_PORT_FROM_ENV
> +	if ((ep = getenv("tftpourport")) != NULL) {
> +		TftpOurPort= simple_strtol(ep, NULL, 10);
> +	}
> +#endif
>  	TftpBlock = 0;
>  
>  	/* zero out server ether in case the server ip has changed */

  parent reply	other threads:[~2005-01-06 23:48 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-06 21:55 [U-Boot-Users] PATCH: Force TFTP to use a fixed UDP port Jerry Van Baren
2005-01-06 23:31 ` Wolfgang Denk
2005-01-06 23:48 ` Tolunay Orkun [this message]
2005-01-07 13:23   ` Jerry Van Baren

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=41DDCE49.4030503@orkun.us \
    --to=listmember@orkun.us \
    --cc=u-boot@lists.denx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox