|
|
|
@ -138,6 +138,36 @@ static int truncate_sz (const char *name, int maxlen, int curlen) |
|
|
|
|
return (curlen); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Check if autoload is enabled. If so, use either NFS or TFTP to download |
|
|
|
|
* the boot file. |
|
|
|
|
*/ |
|
|
|
|
static void auto_load(void) |
|
|
|
|
{ |
|
|
|
|
const char *s = getenv("autoload"); |
|
|
|
|
|
|
|
|
|
if (s != NULL) { |
|
|
|
|
if (*s == 'n') { |
|
|
|
|
/*
|
|
|
|
|
* Just use BOOTP to configure system; |
|
|
|
|
* Do not use TFTP to load the bootfile. |
|
|
|
|
*/ |
|
|
|
|
NetState = NETLOOP_SUCCESS; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
#if defined(CONFIG_CMD_NFS) |
|
|
|
|
if (strcmp(s, "NFS") == 0) { |
|
|
|
|
/*
|
|
|
|
|
* Use NFS to load the bootfile. |
|
|
|
|
*/ |
|
|
|
|
NfsStart(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
TftpStart(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#if !defined(CONFIG_CMD_DHCP) |
|
|
|
|
|
|
|
|
|
static void BootpVendorFieldProcess (u8 * ext) |
|
|
|
@ -289,6 +319,7 @@ static void BootpVendorProcess (u8 * ext, int size) |
|
|
|
|
debug("NetNtpServerIP : %pI4\n", &NetNtpServerIP); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Handle a BOOTP received packet. |
|
|
|
|
*/ |
|
|
|
@ -297,7 +328,6 @@ BootpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, |
|
|
|
|
unsigned len) |
|
|
|
|
{ |
|
|
|
|
Bootp_t *bp; |
|
|
|
|
char *s; |
|
|
|
|
|
|
|
|
|
debug("got BOOTP packet (src=%d, dst=%d, len=%d want_len=%zu)\n", |
|
|
|
|
src, dest, len, sizeof (Bootp_t)); |
|
|
|
@ -324,26 +354,7 @@ BootpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, |
|
|
|
|
|
|
|
|
|
debug("Got good BOOTP\n"); |
|
|
|
|
|
|
|
|
|
if ((s = getenv("autoload")) != NULL) { |
|
|
|
|
if (*s == 'n') { |
|
|
|
|
/*
|
|
|
|
|
* Just use BOOTP to configure system; |
|
|
|
|
* Do not use TFTP to load the bootfile. |
|
|
|
|
*/ |
|
|
|
|
NetState = NETLOOP_SUCCESS; |
|
|
|
|
return; |
|
|
|
|
#if defined(CONFIG_CMD_NFS) |
|
|
|
|
} else if (strcmp(s, "NFS") == 0) { |
|
|
|
|
/*
|
|
|
|
|
* Use NFS to load the bootfile. |
|
|
|
|
*/ |
|
|
|
|
NfsStart(); |
|
|
|
|
return; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TftpStart(); |
|
|
|
|
auto_load(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -922,34 +933,13 @@ DhcpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, |
|
|
|
|
debug("DHCP State: REQUESTING\n"); |
|
|
|
|
|
|
|
|
|
if ( DhcpMessageType((u8 *)bp->bp_vend) == DHCP_ACK ) { |
|
|
|
|
char *s; |
|
|
|
|
|
|
|
|
|
if (NetReadLong((ulong*)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) |
|
|
|
|
DhcpOptionsProcess((u8 *)&bp->bp_vend[4], bp); |
|
|
|
|
BootpCopyNetParams(bp); /* Store net params from reply */ |
|
|
|
|
dhcp_state = BOUND; |
|
|
|
|
printf ("DHCP client bound to address %pI4\n", &NetOurIP); |
|
|
|
|
|
|
|
|
|
/* Obey the 'autoload' setting */ |
|
|
|
|
if ((s = getenv("autoload")) != NULL) { |
|
|
|
|
if (*s == 'n') { |
|
|
|
|
/*
|
|
|
|
|
* Just use BOOTP to configure system; |
|
|
|
|
* Do not use TFTP to load the bootfile. |
|
|
|
|
*/ |
|
|
|
|
NetState = NETLOOP_SUCCESS; |
|
|
|
|
return; |
|
|
|
|
#if defined(CONFIG_CMD_NFS) |
|
|
|
|
} else if (strcmp(s, "NFS") == 0) { |
|
|
|
|
/*
|
|
|
|
|
* Use NFS to load the bootfile. |
|
|
|
|
*/ |
|
|
|
|
NfsStart(); |
|
|
|
|
return; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
TftpStart(); |
|
|
|
|
auto_load(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|