On Thu, Feb 07, 2019 at 08:45:32PM -0600, Nash Kaminski wrote: > Hello, > > I have been attempting to debug a peculiar issue with dhclient on a > vanilla FreeBSD 11.2 system where it appears that even if > dhclient-script returns nonzero when invoked in response to a protocol > timeout, dhclient continues as if the address was bound successfully, > as opposed to the protocol being restarted after the defined retry > interval. > > After some investigation, it appears that the root cause of this > behavior is a result of the lower byte of the exit status being > returned, instead of the upper byte containing the return code, on > line 2319 of sbin/dhclient/dhclient.c (Ref: > https://github.com/freebsd/freebsd/blob/releng/11.2/sbin/dhclient/dhclient.c#L2319). > > Making the following change makes dhclient behave as expected. Am I > missing something or is there indeed a significant bug here? > > Index: sbin/dhclient/dhclient.c > =================================================================== > --- sbin/dhclient/dhclient.c (revision 342377) > +++ sbin/dhclient/dhclient.c (working copy) > @@ -2316,7 +2316,7 @@ > if (ip) > script_flush_env(ip->client); > > - return (wstatus & 0xff); > + return WEXITSTATUS(wstatus); > > } > Your finding sounds reasonable and from my code read it is correct. But I never looked at the dhclient code, so I prefer somebody more knowledgable of it to look.
If nobody takes the patch in 3-5 days, ping me and I will commit it. _______________________________________________ freebsd-net@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"