From owner-freebsd-net@freebsd.org Fri Feb 8 02:45:45 2019 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AAB3D14D13A7 for ; Fri, 8 Feb 2019 02:45:45 +0000 (UTC) (envelope-from nashkaminski@gmail.com) Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 819C287B58 for ; Fri, 8 Feb 2019 02:45:44 +0000 (UTC) (envelope-from nashkaminski@gmail.com) Received: by mail-wr1-x436.google.com with SMTP id r2so1944986wrv.10 for ; Thu, 07 Feb 2019 18:45:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=qt52CQ2AnSYriJ7oW6h6t0ohfolSihMaDn+WUEPR81I=; b=ervB1JZMVdVjKyLJcSAdrXJFeYV0ZPGmdVpIR8fxcDgjtbrjN3wqZPG/ZatZJTgvVM Ut44e89Erk3DZZOM542SAvx3HSs+iEE/bJuS60ch2kjpKt7aLkwB8NNS5AwlYiLWSIYo BK96H2IJRahaxL4LyF3X9O9XdnumJ5y8EOzz68+ejAs/lKDxSQWzhu4yNx/4F7fJ6tCW P50z6UVoiLT6FBtcThgYDViVHilEXdPgMChHVro6e3mpQFUBoI3phgNAzCuyfu3nluWJ 0ClyGPm8lFBhYwd8mciQRyz18IvaHzYtx0pqvIYySltuujF0nBddcMuGLDaI4Q41uIl+ 1O5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=qt52CQ2AnSYriJ7oW6h6t0ohfolSihMaDn+WUEPR81I=; b=tZBjQuWdoNQ92ruceq91S1c5r7vob5dOn6y1ntfRvYCUh7H5kx+QTtY9eSHS6dkE64 UHoxGdMT8fehkplsz8VimlyWwfUUljzu+xyqHV6tX9wRRk5QMmAfoJxo+65ZhShvp2eR i75wVlj9j6xfu3uCBQsDQQ2RCBeN+jmOFmUgTgUJpGJxuc+bRlYgBdUScttGR4zXER6q +Jbr1LhA5n6wBh48olGW0p1QCP8vvWu0Wi74Cn+7bSqOJkqkFXfRZdGyj+EkFBqXTsp5 saJEaRZ9wFNvqUtZBOFdkla9qBVr3lrnYrZ4BEkS+mw+cPnEMgXJw6Y2TUAagx04bt+W H7FQ== X-Gm-Message-State: AHQUAuapYYWlIboruYZMqHOMmfbcVC2sASRK6AzzCkYEeXsSi9TFlTQv 9YH3LOPbirmV7I3Wh80JgzCcQEk175lvVguIBJX2S/Fm X-Google-Smtp-Source: AHgI3IZg0WA5PVlxTcHf7x+gRc5B29I+7XZQqTTPJhfLtf4Pyf5vi8bdlemdPwaunfN7TLu7TNOXDd+qdIcQxxcttOQ= X-Received: by 2002:a5d:678b:: with SMTP id v11mr15731516wru.245.1549593942914; Thu, 07 Feb 2019 18:45:42 -0800 (PST) MIME-Version: 1.0 From: Nash Kaminski Date: Thu, 7 Feb 2019 20:45:32 -0600 Message-ID: Subject: dhclient appears to misinterpret the exit status of dhclient-script To: freebsd-net@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 819C287B58 X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=ervB1JZM; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of nashkaminski@gmail.com designates 2a00:1450:4864:20::436 as permitted sender) smtp.mailfrom=nashkaminski@gmail.com X-Spamd-Result: default: False [-6.72 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-net@freebsd.org]; TO_DN_NONE(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; MX_GOOD(-0.01)[cached: alt3.gmail-smtp-in.l.google.com]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; RCVD_IN_DNSWL_NONE(0.00)[6.3.4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.5.4.1.0.0.a.2.list.dnswl.org : 127.0.5.0]; IP_SCORE(-2.76)[ip: (-9.51), ipnet: 2a00:1450::/32(-2.30), asn: 15169(-1.94), country: US(-0.07)]; NEURAL_HAM_SHORT(-0.94)[-0.944,0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; DWL_DNSWL_NONE(0.00)[gmail.com.dwl.dnswl.org : 127.0.5.0] X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Feb 2019 02:45:46 -0000 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