Date: Thu, 7 Feb 2019 20:45:32 -0600 From: Nash Kaminski <nashkaminski@gmail.com> To: freebsd-net@freebsd.org Subject: dhclient appears to misinterpret the exit status of dhclient-script Message-ID: <CAEF9=Z7Rz58uyic3bBtMJgy5Zv1feFtL1BJdcu7XP_N=uVoosg@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAEF9=Z7Rz58uyic3bBtMJgy5Zv1feFtL1BJdcu7XP_N=uVoosg>