defaultroute revision 197527
1100280Sgordon#!/bin/sh
225184Sjkh#
3179566Sbrooks# Wait for the default route to be up
466830Sobrien#
550472Speter# $FreeBSD: head/etc/rc.d/defaultroute 197527 2009-09-26 19:00:20Z hrs $
666830Sobrien#
725184Sjkh
8179566Sbrooks# PROVIDE: defaultroute
9197527Shrs# REQUIRE: devd faith netif stf
10136224Smtm# KEYWORD: nojail
1125184Sjkh
12100280Sgordon. /etc/rc.subr
13179079Sbrooks. /etc/network.subr
1425184Sjkh
15179566Sbrooksname="defaultroute"
16179566Sbrooksstart_cmd="defaultroute_start"
17179566Sbrooksstop_cmd=":"
1885831Sdes
19179566Sbrooksdefaultroute_start()
20100280Sgordon{
21197139Shrs	local output carrier nocarrier nl
22179079Sbrooks
23188009Smtm	# Return without waiting if we don't have dhcp interfaces or
24188009Smtm	# if none of the dhcp interfaces is plugged in.
25188009Smtm	dhcp_interfaces=`list_net_interfaces dhcp`
26188009Smtm	[ -z "${dhcp_interfaces}" ] && return
27188009Smtm	carrier=false
28188009Smtm	for _if in ${dhcp_interfaces}; do
29188009Smtm		output=`/sbin/ifconfig ${_if}` 
30188009Smtm		nocarrier=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'`
31188009Smtm		[ -z "${nocarrier}" ] && carrier=true
32188009Smtm	done
33188009Smtm	if ! ${carrier}; then
34188009Smtm		return
35188009Smtm	fi
36188009Smtm
37179079Sbrooks	# Wait for a default route
38188710Smtm	delay=${defaultroute_delay}
39179079Sbrooks	while [ ${delay} -gt 0 ]; do
40179079Sbrooks		defif=`get_default_if -inet`
41179079Sbrooks		if [ -n "${defif}" ]; then
42188710Smtm			if [ ${delay} -ne ${defaultroute_delay} ]; then
43186237Sbrooks				echo -n "($defif)"
44197139Shrs				nl=1
45179079Sbrooks			fi
46179079Sbrooks			break
47179079Sbrooks		fi
48188710Smtm		if [ ${delay} -eq ${defaultroute_delay} ]; then
49188478Smtm			echo -n "Waiting ${delay}s for the default route interface: "
50179079Sbrooks		else
51179079Sbrooks			echo -n .
52179079Sbrooks		fi
53197139Shrs		nl=1
54179079Sbrooks		sleep 1
55197139Shrs		delay=$(($delay - 1))
56179079Sbrooks	done
57186237Sbrooks
58197139Shrs	[ -n "$nl" ] && echo
59117019Smtm}
60117019Smtm
61100280Sgordonload_rc_config $name
62100280Sgordonrun_rc_command "$1"
63