Commit e5c794e4 authored by Justin Flammia's avatar Justin Flammia Committed by Wolfgang Denk

DHCP Client Fix

This is a multi-part message in MIME format.

commit e6e505eae94ed721e123e177489291fc4544b7b8
Author: Justin Flammia <[email protected]>
Date:   Mon Oct 29 17:19:03 2007 -0400

    Found a bug in the way the DHCP Request packet is built, where the IP address
    that is offered by the server is bound to prematurely. This patch is a fix of
    that bug where the IP address offered by the DHCP server is not used until
    after the DHCP ACK from the server is received.
Signed-off-by: default avatarJustin Flammia <[email protected]>
Signed-off-by: default avatarBen Warren <[email protected]>
parent 8287b3b5
......@@ -850,9 +850,9 @@ static void DhcpSendRequestPkt(Bootp_t *bp_offer)
bp->bp_hlen = HWL_ETHER;
bp->bp_hops = 0;
bp->bp_secs = htons(get_timer(0) / CFG_HZ);
NetCopyIP(&bp->bp_ciaddr, &bp_offer->bp_ciaddr); /* both in network byte order */
NetCopyIP(&bp->bp_yiaddr, &bp_offer->bp_yiaddr);
NetCopyIP(&bp->bp_siaddr, &bp_offer->bp_siaddr);
/* Do not set the client IP, your IP, or server IP yet, since it hasn't been ACK'ed by
* the server yet */
* RFC3046 requires Relay Agents to discard packets with
* nonzero and offered giaddr
......@@ -870,7 +870,9 @@ static void DhcpSendRequestPkt(Bootp_t *bp_offer)
* Copy options from OFFER packet if present
NetCopyIP(&OfferedIP, &bp->bp_yiaddr);
/* Copy offered IP into the parameters request list */
NetCopyIP(&OfferedIP, &bp_offer->bp_yiaddr);
extlen = DhcpExtended((u8 *)bp->bp_vend, DHCP_REQUEST, NetDHCPServerIP, OfferedIP);
pktlen = BOOTP_SIZE - sizeof(bp->bp_vend) + extlen;
......@@ -980,3 +982,4 @@ void DhcpRequest(void)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment