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); } - Nash _______________________________________________ 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"