mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
Add support for the DHCP vendor optional bootfile (#67).
Ignores the vendor TFTP server name option (#66). Patch by Murray Jensen, 30 Jun 2005
This commit is contained in:
parent
0346983290
commit
3b2e4fd9b0
2 changed files with 35 additions and 3 deletions
|
@ -2,6 +2,10 @@
|
|||
Changes since U-Boot 1.1.4:
|
||||
======================================================================
|
||||
|
||||
* Add support for the DHCP vendor optional bootfile (#67).
|
||||
Ignores the vendor TFTP server name option (#66).
|
||||
Patch by Murray Jensen, 30 Jun 2005
|
||||
|
||||
* Fix a HW timing issue on 8548 CDS for eTSEC 3 in RGMII mode
|
||||
Patch by Andy Fleming, 14 Jun 2005
|
||||
|
||||
|
|
34
net/bootp.c
34
net/bootp.c
|
@ -715,7 +715,7 @@ BootpRequest (void)
|
|||
}
|
||||
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_DHCP)
|
||||
static void DhcpOptionsProcess (uchar * popt)
|
||||
static void DhcpOptionsProcess (uchar * popt, Bootp_t *bp)
|
||||
{
|
||||
uchar *end = popt + BOOTP_HDR_SIZE;
|
||||
int oplen, size;
|
||||
|
@ -772,6 +772,34 @@ static void DhcpOptionsProcess (uchar * popt)
|
|||
break;
|
||||
case 59: /* Ignore Rebinding Time Option */
|
||||
break;
|
||||
case 66: /* Ignore TFTP server name */
|
||||
break;
|
||||
case 67: /* vendor opt bootfile */
|
||||
/*
|
||||
* I can't use dhcp_vendorex_proc here because I need
|
||||
* to write into the bootp packet - even then I had to
|
||||
* pass the bootp packet pointer into here as the
|
||||
* second arg
|
||||
*/
|
||||
size = truncate_sz ("Opt Boot File",
|
||||
sizeof(bp->bp_file),
|
||||
oplen);
|
||||
if (bp->bp_file[0] == '\0' && size > 0) {
|
||||
/*
|
||||
* only use vendor boot file if we didn't
|
||||
* receive a boot file in the main non-vendor
|
||||
* part of the packet - god only knows why
|
||||
* some vendors chose not to use this perfectly
|
||||
* good spot to store the boot file (join on
|
||||
* Tru64 Unix) it seems mind bogglingly crazy
|
||||
* to me
|
||||
*/
|
||||
printf("*** WARNING: using vendor "
|
||||
"optional boot file\n");
|
||||
memcpy(bp->bp_file, popt + 2, size);
|
||||
bp->bp_file[size] = '\0';
|
||||
}
|
||||
break;
|
||||
default:
|
||||
#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_VENDOREX)
|
||||
if (dhcp_vendorex_proc (popt))
|
||||
|
@ -882,7 +910,7 @@ DhcpHandler(uchar * pkt, unsigned dest, unsigned src, unsigned len)
|
|||
dhcp_state = REQUESTING;
|
||||
|
||||
if (NetReadLong((ulong*)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC))
|
||||
DhcpOptionsProcess((u8 *)&bp->bp_vend[4]);
|
||||
DhcpOptionsProcess((u8 *)&bp->bp_vend[4], bp);
|
||||
|
||||
BootpCopyNetParams(bp); /* Store net params from reply */
|
||||
|
||||
|
@ -901,7 +929,7 @@ DhcpHandler(uchar * pkt, unsigned dest, unsigned src, unsigned len)
|
|||
char *s;
|
||||
|
||||
if (NetReadLong((ulong*)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC))
|
||||
DhcpOptionsProcess((u8 *)&bp->bp_vend[4]);
|
||||
DhcpOptionsProcess((u8 *)&bp->bp_vend[4], bp);
|
||||
BootpCopyNetParams(bp); /* Store net params from reply */
|
||||
dhcp_state = BOUND;
|
||||
puts ("DHCP client bound to address ");
|
||||
|
|
Loading…
Reference in a new issue