Changed DHCP client to use ip address from server option field #54 from the OFFER...
authorstroese <stroese>
Thu, 10 Apr 2003 13:26:44 +0000 (13:26 +0000)
committerstroese <stroese>
Thu, 10 Apr 2003 13:26:44 +0000 (13:26 +0000)
net/bootp.c

index ee9656cb3e675e950a6454d081df7e7c45588b90..f6d08a7e764a39e2f591e553a2bab0ab8261f6de 100644 (file)
@@ -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);