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:
parent
e59e35620a
commit
7a83af07ae
1
README
1
README
|
@ -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
|
||||||
|
|
|
@ -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[])
|
||||||
{
|
{
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue