summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authormtm <mtm@FreeBSD.org>2009-02-02 15:33:22 +0000
committermtm <mtm@FreeBSD.org>2009-02-02 15:33:22 +0000
commit3726dccb6a1f121b2ca69a0d254d49bae4d4cb01 (patch)
treeb023effd5fe08e745530dbb4bed2b9fdc1479c20 /etc
parent041c968b4f9675e402c7e97a59fea35c93c06256 (diff)
downloadFreeBSD-src-3726dccb6a1f121b2ca69a0d254d49bae4d4cb01.zip
FreeBSD-src-3726dccb6a1f121b2ca69a0d254d49bae4d4cb01.tar.gz
The 30 second wait for network interfaces to show up effectively makes the
time to boot an unplugged system 30 sec. longer for no good reason. Therefore, add a check to make sure that any DHCP interfaces are plugged in before waiting.
Diffstat (limited to 'etc')
-rwxr-xr-xetc/rc.d/defaultroute19
1 files changed, 15 insertions, 4 deletions
diff --git a/etc/rc.d/defaultroute b/etc/rc.d/defaultroute
index e241fc3..4eb15dd 100755
--- a/etc/rc.d/defaultroute
+++ b/etc/rc.d/defaultroute
@@ -18,10 +18,21 @@ stop_cmd=":"
defaultroute_start()
{
- # Return without waiting if we don't have dhcp interfaces.
- # Once we can test that the link is actually up, we should
- # remove this test and always wait.
- [ -z "`list_net_interfaces dhcp`" ] && return
+ local output carrier nocarrier
+
+ # Return without waiting if we don't have dhcp interfaces or
+ # if none of the dhcp interfaces is plugged in.
+ dhcp_interfaces=`list_net_interfaces dhcp`
+ [ -z "${dhcp_interfaces}" ] && return
+ carrier=false
+ for _if in ${dhcp_interfaces}; do
+ output=`/sbin/ifconfig ${_if}`
+ nocarrier=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'`
+ [ -z "${nocarrier}" ] && carrier=true
+ done
+ if ! ${carrier}; then
+ return
+ fi
# Wait for a default route
delay=${if_up_delay}
OpenPOWER on IntegriCloud