summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorstroese <stroese>2003-04-10 13:26:44 +0000
committerstroese <stroese>2003-04-10 13:26:44 +0000
commit759a51b4f3ab43c9d845eb1968d20e2a697c2184 (patch)
tree1f5b354806036e9139c1a41c0510153ea8e450d1 /net
parentd126bfbdbd45a78952d88a702b628ab9107c04e5 (diff)
downloadu-boot-imx-759a51b4f3ab43c9d845eb1968d20e2a697c2184.zip
u-boot-imx-759a51b4f3ab43c9d845eb1968d20e2a697c2184.tar.gz
u-boot-imx-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')
-rw-r--r--net/bootp.c8
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);