On Fri, May 2, 2008 at 10:18 AM, Peter Memishian <[EMAIL PROTECTED]> wrote: > > I think I see the cause of this bug. Upon resume, as previously > mentioned, the client receives a SIGTHAW and goes back through INIT_REBOOT > (refresh_smachs() -> refresh_smach() -> dhcp_init_reboot()). If the > server sends a DHCPNAK to the client (e.g., because the lease has expired) > then the client will end up clearing IFF_UP (accept_v4_acknak() -> > dhcp_restart() -> deprecate_leases() -> remove_lease() -> unplumb_lif() -> > canonize_lif()). Next, dhcp_restart() causes dhcp_start() to be called, > which sets the state back to INIT. As part of doing this, *usually* we'll > end up calling open_ip_lif() which will set IFF_UP again. However, since > we were only in INIT_REBOOT, the call to open_ip_lif() is skipped, and > the interface remains down. As a result, all DHCP packets sent by the > client are dropped by the stack, and a new lease is never obtained.
Many thanks for working this out! -- -Peter Tribble http://www.petertribble.co.uk/ - http://ptribble.blogspot.com/ _______________________________________________ networking-discuss mailing list [email protected]
