conf/99595: [PATCH] /etc/rc.d/dhclient doesn't interact well with
the ports isc dhcp client
Craig Leres
leres at ee.lbl.gov
Wed Jun 28 23:30:17 UTC 2006
>Number: 99595
>Category: conf
>Synopsis: [PATCH] /etc/rc.d/dhclient doesn't interact well with the ports isc dhcp client
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Jun 28 23:30:15 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Craig Leres
>Release: FreeBSD 6.1-RELEASE i386
>Organization:
Lawrence Berkeley National Laboratory
>Environment:
fox 15 % uname -a
FreeBSD fox.ee.lbl.gov 6.1-RELEASE FreeBSD 6.1-RELEASE #3: Tue Jun 20 11:50:33 PDT 2006 leres at fox.ee.lbl.gov:/usr/src/6.1-RELEASE/sys/i386/compile/LBLSMP i386
fox 16 % pkg_info | grep isc-dhcp3-client
isc-dhcp3-client-3.0.4 The ISC Dynamic Host Configuration Protocol client
>Description:
The test in /etc/rc.d/dhclient that is supposed to prevent
dhclient from being launched if one is already running
doesn't work with the ports version of dhclient. If you
have an interface configured for dhcp in /etc/rc.conf,
dhclient runs and gets a lease normally but then is run
again later at which point it sets the interface address
to 0.0.0.0, ending network access via that NIC.
>How-To-Repeat:
Install the isc-dhcp3-client and configure a NIC to use it:
ifconfig_em0="dhcp"
Then reboot. The interface will come up when dhclient runs.
Later when it's run again, you'll see this message:
Internet Systems Consortium DHCP Client V3.0.3
Copyright 2004-2005 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP
Listening on BPF/em0/00:30:48:00:00:01
Sending on BPF/em0/00:30:48:00:00:01
Can't bind to dhcp address: Address already in use
Please make sure there is no other dhcp server
running and that there's no entry for dhcp or
bootp in /etc/inetd.conf. Also make sure you
are not running HP JetAdmin software, which
includes a bootp server.
At this point the original dhclient is still running but
the interface is misconfigured and you're hosed.
>Fix:
The simplest solution is to check /var/run/dhclient.pid in
addition doing the pgrep test that's already in the rc
script. The appended patch implements this.
A more complete solution would be to also change the base
version of dhclient to manage the /var/run/dhclient.pid
file and remove the pgrep test from the rc.d script.
(If there is interest in that, I'd be happy to generate the
diffs.)
------- =_aaaaaaaaaa0
Content-Type: text/plain; name="a.txt"; charset="us-ascii"
Content-ID: <47530.1151537075.2 at fun.ee.lbl.gov>
*** dhclient 2006/06/14 18:16:09 1.1
--- dhclient 2006/06/14 18:16:19
***************
*** 18,28 ****
--- 18,40 ----
dhclient_start()
{
+ local f rc_flags pid pids
+
# prevent unnecessicary restarts
# XXX: should use a pidfile
if [ -x /usr/bin/pgrep ]; then
pids=`/usr/bin/pgrep -f "dhclient: $ifn(\$| .*)"`
if [ -n "$pids" ]; then
+ exit 0
+ fi
+ fi
+
+ # deal with isc dhclient too
+ f="/var/run/dhclient.pid"
+ if [ -s ${f} ]; then
+ pid="`cat ${f}`"
+ kill -0 "${pid}" >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
exit 0
fi
fi
------- =_aaaaaaaaaa0--
>Release-Note:
>Audit-Trail:
>Unformatted:
------- =_aaaaaaaaaa0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <47530.1151537075.1 at fun.ee.lbl.gov>
More information about the freebsd-bugs
mailing list