diff options
author | stroese <stroese> | 2003-04-10 13:26:44 +0000 |
---|---|---|
committer | stroese <stroese> | 2003-04-10 13:26:44 +0000 |
commit | 759a51b4f3ab43c9d845eb1968d20e2a697c2184 (patch) | |
tree | 1f5b354806036e9139c1a41c0510153ea8e450d1 /net/bootp.c | |
parent | d126bfbdbd45a78952d88a702b628ab9107c04e5 (diff) | |
download | u-boot-759a51b4f3ab43c9d845eb1968d20e2a697c2184.zip u-boot-759a51b4f3ab43c9d845eb1968d20e2a697c2184.tar.gz u-boot-759a51b4f3ab43c9d845eb1968d20e2a697c2184.tar.bz2 |
Changed DHCP client to use ip address from server option field #54 from the OFFER-paket in the server option field #54 in the REQUEST-paket. This fixes a problem using a Windows 2000 DHCP server, where the DHCP-server is not the TFTP-server.
Diffstat (limited to 'net/bootp.c')
-rw-r--r-- | net/bootp.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/net/bootp.c b/net/bootp.c index ee9656c..f6d08a7 100644 --- a/net/bootp.c +++ b/net/bootp.c @@ -56,6 +56,7 @@ ulong seed1, seed2; #if (CONFIG_COMMANDS & CFG_CMD_DHCP) dhcp_state_t dhcp_state = INIT; unsigned int dhcp_leasetime = 0; +IPaddr_t NetDHCPServerIP = 0; static void DhcpHandler(uchar * pkt, unsigned dest, unsigned src, unsigned len); /* For Debug */ @@ -716,7 +717,7 @@ static void DhcpOptionsProcess(uchar *popt) case 53: /* Ignore Message Type Option */ break; case 54: - NetCopyIP(&NetServerIP, (popt+2)); + NetCopyIP(&NetDHCPServerIP, (popt+2)); break; case 58: /* Ignore Renewal Time Option */ break; @@ -788,7 +789,7 @@ static void DhcpSendRequestPkt(Bootp_t *bp_offer) * Copy options from OFFER packet if present */ NetCopyIP(&OfferedIP, &bp->bp_yiaddr); - extlen = DhcpExtended(bp->bp_vend, DHCP_REQUEST, NetServerIP, OfferedIP); + extlen = DhcpExtended(bp->bp_vend, DHCP_REQUEST, NetDHCPServerIP, OfferedIP); pktlen = BOOTP_SIZE - sizeof(bp->bp_vend) + extlen; iplen = BOOTP_HDR_SIZE - sizeof(bp->bp_vend) + extlen; @@ -832,11 +833,10 @@ DhcpHandler(uchar * pkt, unsigned dest, unsigned src, unsigned len) debug ("TRANSITIONING TO REQUESTING STATE\n"); dhcp_state = REQUESTING; -#if 0 + if (NetReadLong((ulong*)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) DhcpOptionsProcess(&bp->bp_vend[4]); -#endif BootpCopyNetParams(bp); /* Store net params from reply */ NetSetTimeout(TIMEOUT * CFG_HZ, BootpTimeout); |