defaultroute revision 197697
1101253Stjr#!/bin/sh
2101253Stjr#
3101253Stjr# Wait for the default route to be up
4101253Stjr#
5227753Stheraven# $FreeBSD: head/etc/rc.d/defaultroute 197697 2009-10-02 02:24:25Z hrs $
6227753Stheraven#
7227753Stheraven
8227753Stheraven# PROVIDE: defaultroute
9227753Stheraven# REQUIRE: devd faith netif stf
10101253Stjr# KEYWORD: nojail
11101253Stjr
12101253Stjr. /etc/rc.subr
13101253Stjr. /etc/network.subr
14101253Stjr
15101253Stjrname="defaultroute"
16101253Stjrstart_cmd="defaultroute_start"
17101253Stjrstop_cmd=":"
18101253Stjr
19101253Stjrdefaultroute_start()
20101253Stjr{
21101253Stjr	local output carrier nocarrier nl
22101253Stjr
23101253Stjr	afexists inet || return 0
24101253Stjr
25101253Stjr	# Return without waiting if we don't have dhcp interfaces or
26101253Stjr	# if none of the dhcp interfaces is plugged in.
27101253Stjr	dhcp_interfaces=`list_net_interfaces dhcp`
28101253Stjr	[ -z "${dhcp_interfaces}" ] && return
29101253Stjr	carrier=false
30101253Stjr	for _if in ${dhcp_interfaces}; do
31101253Stjr		output=`/sbin/ifconfig ${_if}` 
32101253Stjr		nocarrier=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'`
33101253Stjr		[ -z "${nocarrier}" ] && carrier=true
34101253Stjr	done
35101253Stjr	if ! ${carrier}; then
36101253Stjr		return
37101253Stjr	fi
38227753Stheraven
39101253Stjr	# Wait for a default route
40101253Stjr	delay=${defaultroute_delay}
41101253Stjr	while [ ${delay} -gt 0 ]; do
42101253Stjr		defif=`get_default_if -inet`
43101253Stjr		if [ -n "${defif}" ]; then
44101253Stjr			if [ ${delay} -ne ${defaultroute_delay} ]; then
45101253Stjr				echo -n "($defif)"
46227753Stheraven				nl=1
47227753Stheraven			fi
48227753Stheraven			break
49227753Stheraven		fi
50227753Stheraven		if [ ${delay} -eq ${defaultroute_delay} ]; then
51101253Stjr			echo -n "Waiting ${delay}s for the default route interface: "
52227753Stheraven		else
53227753Stheraven			echo -n .
54227753Stheraven		fi
55227753Stheraven		nl=1
56227753Stheraven		sleep 1
57101253Stjr		delay=$(($delay - 1))
58227753Stheraven	done
59101253Stjr
60228269Sjilles	[ -n "$nl" ] && echo
61228269Sjilles}
62228269Sjilles
63228269Sjillesload_rc_config $name
64228269Sjillesrun_rc_command "$1"
65228269Sjilles