diff options
author | Luca Ceresoli | 2011-05-17 00:03:40 +0000 |
---|---|---|
committer | Wolfgang Denk | 2011-05-19 21:38:32 +0200 |
commit | 7a83af07aef3c924cfb2d36e68eea8b86d22f2a1 (patch) | |
tree | 695b7755a149f98ace4097f4a48762f258614d35 | |
parent | e59e35620af0d57de75cddb9ec3f19449b998868 (diff) |
TFTP: add tftpsrv command
Signed-off-by: Luca Ceresoli <luca.ceresoli@comelit.it>
Cc: Wolfgang Denk <wd@denx.de>
Acked-by: Detlev Zundel <dzu@denx.de>
-rw-r--r-- | README | 1 | ||||
-rw-r--r-- | common/cmd_net.c | 17 | ||||
-rw-r--r-- | include/net.h | 3 | ||||
-rw-r--r-- | net/net.c | 7 |
4 files changed, 26 insertions, 2 deletions
@@ -709,6 +709,7 @@ The following options need to be configured: (requires CONFIG_CMD_MEMORY) CONFIG_CMD_SOURCE "source" command Support CONFIG_CMD_SPI * SPI serial bus support + CONFIG_CMD_TFTPSRV * TFTP transfer in server mode CONFIG_CMD_USB * USB support CONFIG_CMD_VFD * VFD support (TRAB) CONFIG_CMD_CDP * Cisco Discover Protocol support diff --git a/common/cmd_net.c b/common/cmd_net.c index 8c6f5c8c3dd..b2c9355a21a 100644 --- a/common/cmd_net.c +++ b/common/cmd_net.c @@ -52,6 +52,23 @@ U_BOOT_CMD( "[loadAddress] [[hostIPaddr:]bootfilename]" ); +#ifdef CONFIG_CMD_TFTPSRV +static int do_tftpsrv(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) +{ + return netboot_common(TFTPSRV, cmdtp, argc, argv); +} + +U_BOOT_CMD( + tftpsrv, 2, 1, do_tftpsrv, + "act as a TFTP server and boot the first received file", + "[loadAddress]\n" + "Listen for an incoming TFTP transfer, receive a file and boot it.\n" + "The transfer is aborted if a transfer has not been started after\n" + "about 50 seconds or if Ctrl-C is pressed." +); +#endif + + #ifdef CONFIG_CMD_RARP int do_rarpb (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { diff --git a/include/net.h b/include/net.h index 01f7159a078..018a74402c8 100644 --- a/include/net.h +++ b/include/net.h @@ -364,7 +364,8 @@ extern int NetState; /* Network loop state */ extern int NetRestartWrap; /* Tried all network devices */ #endif -typedef enum { BOOTP, RARP, ARP, TFTP, DHCP, PING, DNS, NFS, CDP, NETCONS, SNTP } proto_t; +typedef enum { BOOTP, RARP, ARP, TFTP, DHCP, PING, DNS, NFS, CDP, NETCONS, SNTP, + TFTPSRV } proto_t; /* from net/net.c */ extern char BootFile[128]; /* Boot File name */ diff --git a/net/net.c b/net/net.c index 2abf87929b9..7a93542122c 100644 --- a/net/net.c +++ b/net/net.c @@ -423,7 +423,11 @@ restart: /* always use ARP to get server ethernet address */ TftpStart(); break; - +#ifdef CONFIG_CMD_TFTPSRV + case TFTPSRV: + TftpStartServer(); + break; +#endif #if defined(CONFIG_CMD_DHCP) case DHCP: BootpTry = 0; @@ -1791,6 +1795,7 @@ common: /* Fall through */ case NETCONS: + case TFTPSRV: if (NetOurIP == 0) { puts("*** ERROR: `ipaddr' not set\n"); return 1; |