mirror of https://github.com/ipxe/ipxe.git
[dhcp] Defer discovery if link is blocked
If the link is blocked (e.g. due to a Spanning Tree Protocol port not yet forwarding packets) then defer DHCP discovery until the link becomes unblocked. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/37/head
parent
94dbfb4374
commit
d73982f098
|
@ -436,6 +436,15 @@ static void dhcp_discovery_rx ( struct dhcp_session *dhcp,
|
|||
static void dhcp_discovery_expired ( struct dhcp_session *dhcp ) {
|
||||
unsigned long elapsed = ( currticks() - dhcp->start );
|
||||
|
||||
/* If link is blocked, defer DHCP discovery (and reset timeout) */
|
||||
if ( netdev_link_blocked ( dhcp->netdev ) ) {
|
||||
DBGC ( dhcp, "DHCP %p deferring discovery\n", dhcp );
|
||||
start_timer_fixed ( &dhcp->timer,
|
||||
( DHCP_DISC_START_TIMEOUT_SEC *
|
||||
TICKS_PER_SEC ) );
|
||||
return;
|
||||
}
|
||||
|
||||
/* Give up waiting for ProxyDHCP before we reach the failure point */
|
||||
if ( dhcp->offer.s_addr &&
|
||||
( elapsed > DHCP_DISC_PROXY_TIMEOUT_SEC * TICKS_PER_SEC ) ) {
|
||||
|
|
Loading…
Reference in New Issue