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>
This commit is contained in:
Luca Ceresoli 2011-05-17 00:03:40 +00:00 committed by Wolfgang Denk
parent e59e35620a
commit 7a83af07ae
4 changed files with 26 additions and 2 deletions

1
README
View File

@ -709,6 +709,7 @@ The following options need to be configured:
(requires CONFIG_CMD_MEMORY) (requires CONFIG_CMD_MEMORY)
CONFIG_CMD_SOURCE "source" command Support CONFIG_CMD_SOURCE "source" command Support
CONFIG_CMD_SPI * SPI serial bus support CONFIG_CMD_SPI * SPI serial bus support
CONFIG_CMD_TFTPSRV * TFTP transfer in server mode
CONFIG_CMD_USB * USB support CONFIG_CMD_USB * USB support
CONFIG_CMD_VFD * VFD support (TRAB) CONFIG_CMD_VFD * VFD support (TRAB)
CONFIG_CMD_CDP * Cisco Discover Protocol support CONFIG_CMD_CDP * Cisco Discover Protocol support

View File

@ -52,6 +52,23 @@ U_BOOT_CMD(
"[loadAddress] [[hostIPaddr:]bootfilename]" "[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 #ifdef CONFIG_CMD_RARP
int do_rarpb (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) int do_rarpb (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{ {

View File

@ -364,7 +364,8 @@ extern int NetState; /* Network loop state */
extern int NetRestartWrap; /* Tried all network devices */ extern int NetRestartWrap; /* Tried all network devices */
#endif #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 */ /* from net/net.c */
extern char BootFile[128]; /* Boot File name */ extern char BootFile[128]; /* Boot File name */

View File

@ -423,7 +423,11 @@ restart:
/* always use ARP to get server ethernet address */ /* always use ARP to get server ethernet address */
TftpStart(); TftpStart();
break; break;
#ifdef CONFIG_CMD_TFTPSRV
case TFTPSRV:
TftpStartServer();
break;
#endif
#if defined(CONFIG_CMD_DHCP) #if defined(CONFIG_CMD_DHCP)
case DHCP: case DHCP:
BootpTry = 0; BootpTry = 0;
@ -1791,6 +1795,7 @@ common:
/* Fall through */ /* Fall through */
case NETCONS: case NETCONS:
case TFTPSRV:
if (NetOurIP == 0) { if (NetOurIP == 0) {
puts("*** ERROR: `ipaddr' not set\n"); puts("*** ERROR: `ipaddr' not set\n");
return 1; return 1;