This patch uses the environment variable "tftpserverip" as the tftp server IP instead of serverip. If it is unset, it defaults to serverip.
>From 049d0795c5fcffb0ddc8a43ea2f1b373afb5c2b1 Mon Sep 17 00:00:00 2001
From: Rory Toma <r...@furyondy.corp.ooma.com>
Date: Thu, 28 Mar 2013 14:52:16 -0700
Subject: [PATCH] tftp server patch

---
 include/net.h |    1 +
 net/net.c     |   10 +++++++---
 net/tftp.c    |    5 +++--
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/include/net.h b/include/net.h
index 970d4d1..df55182 100644
--- a/include/net.h
+++ b/include/net.h
@@ -420,6 +420,7 @@ extern uchar                NetOurEther[6];         /* Our 
ethernet address */
 extern uchar           NetServerEther[6];      /* Boot server enet address */
 extern IPaddr_t                NetOurIP;       /* Our    IP addr (0 = unknown) 
*/
 extern IPaddr_t                NetServerIP;    /* Server IP addr (0 = unknown) 
*/
+extern IPaddr_t                TftpRemoteIP;   /* tftp server IP addr */
 extern uchar           *NetTxPacket;           /* THE transmit packet */
 extern uchar           *NetRxPackets[PKTBUFSRX]; /* Receive packets */
 extern uchar           *NetRxPacket;           /* Current receive packet */
diff --git a/net/net.c b/net/net.c
index df94789..3bba2e2 100644
--- a/net/net.c
+++ b/net/net.c
@@ -142,8 +142,10 @@ uchar              NetOurEther[6];
 uchar          NetServerEther[6];
 /* Our IP addr (0 = unknown) */
 IPaddr_t       NetOurIP;
-/* Server IP addr (0 = unknown) */
+/* nfs Server IP addr (0 = unknown) */
 IPaddr_t       NetServerIP;
+/* tftp Server IP addr (if unset, it use NetServerIP) */
+IPaddr_t       TftpRemoteIP;
 /* Current receive packet */
 uchar *NetRxPacket;
 /* Current rx packet length */
@@ -264,6 +266,7 @@ static void NetInitLoop(void)
                NetOurGatewayIP = getenv_IPaddr("gatewayip");
                NetOurSubnetMask = getenv_IPaddr("netmask");
                NetServerIP = getenv_IPaddr("serverip");
+               TftpRemoteIP = getenv_IPaddr("tftpserverip");
                NetOurNativeVLAN = getenv_VLAN("nvlan");
                NetOurVLAN = getenv_VLAN("vlan");
 #if defined(CONFIG_CMD_DNS)
@@ -1225,8 +1228,9 @@ static int net_check_prereq(enum proto_t protocol)
 #endif
        case TFTPGET:
        case TFTPPUT:
-               if (NetServerIP == 0) {
-                       puts("*** ERROR: `serverip' not set\n");
+               if ((TftpRemoteIP == 0) || (NetServerIP == 0)) {
+                       puts("*** ERROR: `serverip'
+                               or `tftpserverip' not set\n");
                        return 1;
                }
 #if    defined(CONFIG_CMD_PING) || defined(CONFIG_CMD_SNTP) || \
diff --git a/net/tftp.c b/net/tftp.c
index 09790eb..561341d 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -64,7 +64,6 @@ enum {
        TFTP_ERR_FILE_ALREADY_EXISTS = 6,
 };
 
-static IPaddr_t TftpRemoteIP;
 /* The UDP port at their end */
 static int     TftpRemotePort;
 /* The UDP port at our end */
@@ -711,7 +710,9 @@ void TftpStart(enum proto_t protocol)
        debug("TFTP blocksize = %i, timeout = %ld ms\n",
                TftpBlkSizeOption, TftpTimeoutMSecs);
 
-       TftpRemoteIP = NetServerIP;
+       if (TftpRemoteIP == 0) {
+               TftpRemoteIP = NetServerIP;
+       }
        if (BootFile[0] == '\0') {
                sprintf(default_filename, "%02X%02X%02X%02X.img",
                        NetOurIP & 0xFF,
-- 
1.7.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to