defaultroute revision 188710
1100280Sgordon#!/bin/sh
225184Sjkh#
3179566Sbrooks# Wait for the default route to be up
466830Sobrien#
550472Speter# $FreeBSD: head/etc/rc.d/defaultroute 188710 2009-02-17 11:55:50Z mtm $
666830Sobrien#
725184Sjkh
8179566Sbrooks# PROVIDE: defaultroute
9179566Sbrooks# REQUIRE: devd netif network_ipv6
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{
21188009Smtm	local output carrier nocarrier
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)"
44179079Sbrooks			fi
45179079Sbrooks			break
46179079Sbrooks		fi
47188710Smtm		if [ ${delay} -eq ${defaultroute_delay} ]; then
48188478Smtm			echo -n "Waiting ${delay}s for the default route interface: "
49179079Sbrooks		else
50179079Sbrooks			echo -n .
51179079Sbrooks		fi
52179079Sbrooks		sleep 1
53179079Sbrooks		delay=`expr $delay - 1`
54179079Sbrooks	done
55186237Sbrooks
56186237Sbrooks	echo
57117019Smtm}
58117019Smtm
59100280Sgordonload_rc_config $name
60100280Sgordonrun_rc_command "$1"
61