Module Name:    src
Committed By:   roy
Date:           Tue Jun 25 13:02:53 UTC 2013

Modified Files:
        src/etc/rc.d: dhcpcd

Log Message:
Add a hack to fix the dhcpcd rc.d script to work with a single
interface specified in dhcpcd_flags in rc.conf(5).
Fixes PR bin/43490


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/etc/rc.d/dhcpcd

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/etc/rc.d/dhcpcd
diff -u src/etc/rc.d/dhcpcd:1.1 src/etc/rc.d/dhcpcd:1.2
--- src/etc/rc.d/dhcpcd:1.1	Tue Apr 28 23:30:34 2009
+++ src/etc/rc.d/dhcpcd	Tue Jun 25 13:02:53 2013
@@ -9,7 +9,27 @@ $_rc_subr_loaded . /etc/rc.subr
 name=dhcpcd
 rcvar=$name
 command=/sbin/$name
-pidfile=/var/run/$name.pid
 
 load_rc_config $name
+
+# If the last argument to dhcpcd is a valid interface and the prior argument
+# is not then dhcpcd will start on one interface only and create a pidfile
+# based on the interface name. See PR bin/43490.
+if [ -n "$flags" ]; then
+	myflags=$flags
+else
+	eval myflags=\$${name}_flags
+fi
+ifname="${myflags##* }"
+myflags="${myflags%% $ifname}"
+last_flag="${myflags##* }"
+if /sbin/ifconfig "$ifname" >/dev/null 2>&1 && 
+    ! /sbin/ifconfig "$last_flag" >/dev/null 2>&1
+then
+	pidfile=/var/run/$name-"$ifname".pid
+else
+	pidfile=/var/run/$name.pid
+fi
+unset myflags ifname last_flag
+
 run_rc_command "$1"

Reply via email to