summaryrefslogtreecommitdiffstats
path: root/etc/rc.d
diff options
context:
space:
mode:
authorbrooks <brooks@FreeBSD.org>2008-06-05 17:26:47 +0000
committerbrooks <brooks@FreeBSD.org>2008-06-05 17:26:47 +0000
commite9bd8b71f988d35b3cf464cd9c694a3e5afcc6d4 (patch)
tree4dafc4c9a20045e86f8117449014ef13d5512069 /etc/rc.d
parent65c567c1062097f6efd5fc4278e9f294861b60ff (diff)
downloadFreeBSD-src-e9bd8b71f988d35b3cf464cd9c694a3e5afcc6d4.zip
FreeBSD-src-e9bd8b71f988d35b3cf464cd9c694a3e5afcc6d4.tar.gz
Fix the wait for default route change I made a few weeks ago by creating
a new defaultroute script that just does the wait. The previous attempt created a circular dependency through network_ipv6. Pointy hat to: brooks
Diffstat (limited to 'etc/rc.d')
-rwxr-xr-xetc/rc.d/Makefile2
-rw-r--r--etc/rc.d/NETWORKING2
-rw-r--r--etc/rc.d/defaultroute48
-rw-r--r--etc/rc.d/routing27
4 files changed, 51 insertions, 28 deletions
diff --git a/etc/rc.d/Makefile b/etc/rc.d/Makefile
index 7be483d..e887b5c 100755
--- a/etc/rc.d/Makefile
+++ b/etc/rc.d/Makefile
@@ -7,7 +7,7 @@ FILES= DAEMON FILESYSTEMS LOGIN NETWORKING SERVERS \
apm apmd archdep atm1 atm2 atm3 auditd auto_linklocal \
bgfsck bluetooth bootparams bridge bsnmpd bthidd \
ccd cleanvar cleartmp cron \
- ddb devd devfs dhclient \
+ ddb defaultroute devd devfs dhclient \
dmesg dumpon \
early.sh encswap \
fsck ftp-proxy ftpd \
diff --git a/etc/rc.d/NETWORKING b/etc/rc.d/NETWORKING
index f290d3b..a67501b 100644
--- a/etc/rc.d/NETWORKING
+++ b/etc/rc.d/NETWORKING
@@ -5,7 +5,7 @@
# PROVIDE: NETWORKING NETWORK
# REQUIRE: netif netoptions routing network_ipv6 ppp
-# REQUIRE: routed mrouted route6d mroute6d resolv
+# REQUIRE: defaultroute routed mrouted route6d mroute6d resolv
# This is a dummy dependency, for services which require networking
# to be operational before starting.
diff --git a/etc/rc.d/defaultroute b/etc/rc.d/defaultroute
new file mode 100644
index 0000000..876d682
--- /dev/null
+++ b/etc/rc.d/defaultroute
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# Wait for the default route to be up
+#
+# $FreeBSD$
+#
+
+# PROVIDE: defaultroute
+# REQUIRE: devd netif network_ipv6
+# KEYWORD: nojail
+
+. /etc/rc.subr
+. /etc/network.subr
+
+name="defaultroute"
+start_cmd="defaultroute_start"
+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.
+ dhcp_interfaces=`list_net_interfaces dhcp`
+ [ -z "`list_net_interfaces dhcp`" ] && return
+
+ # Wait for a default route
+ delay=${if_up_delay}
+ while [ ${delay} -gt 0 ]; do
+ defif=`get_default_if -inet`
+ if [ -n "${defif}" ]; then
+ if [ ${delay} -ne ${if_up_delay} ]; then
+ echo "($defif)"
+ fi
+ break
+ fi
+ if [ ${delay} -eq ${if_up_delay} ]; then
+ echo -n "Waiting ${delay}s for an interface to come up: "
+ else
+ echo -n .
+ fi
+ sleep 1
+ delay=`expr $delay - 1`
+ done
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/etc/rc.d/routing b/etc/rc.d/routing
index 33424fd..818df92 100644
--- a/etc/rc.d/routing
+++ b/etc/rc.d/routing
@@ -6,7 +6,7 @@
#
# PROVIDE: routing
-# REQUIRE: devd netif ppp
+# REQUIRE: netif ppp
# KEYWORD: nojail
. /etc/rc.subr
@@ -23,31 +23,6 @@ routing_start()
{
static_start
options_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.
- dhcp_interfaces=`list_net_interfaces dhcp`
- [ -z "`list_net_interfaces dhcp`" ] && return
-
- # Wait for a default route
- delay=${if_up_delay}
- while [ ${delay} -gt 0 ]; do
- defif=`get_default_if -inet`
- if [ -n "${defif}" ]; then
- if [ ${delay} -ne ${if_up_delay} ]; then
- echo "($defif)"
- fi
- break
- fi
- if [ ${delay} -eq ${if_up_delay} ]; then
- echo -n "Waiting ${delay}s for an interface to come up: "
- else
- echo -n .
- fi
- sleep 1
- delay=`expr $delay - 1`
- done
}
routing_stop()
OpenPOWER on IntegriCloud