defaultroute revision 197527
1#!/bin/sh
2#
3# Wait for the default route to be up
4#
5# $FreeBSD: head/etc/rc.d/defaultroute 197527 2009-09-26 19:00:20Z hrs $
6#
7
8# PROVIDE: defaultroute
9# REQUIRE: devd faith netif stf
10# KEYWORD: nojail
11
12. /etc/rc.subr
13. /etc/network.subr
14
15name="defaultroute"
16start_cmd="defaultroute_start"
17stop_cmd=":"
18
19defaultroute_start()
20{
21	local output carrier nocarrier nl
22
23	# Return without waiting if we don't have dhcp interfaces or
24	# if none of the dhcp interfaces is plugged in.
25	dhcp_interfaces=`list_net_interfaces dhcp`
26	[ -z "${dhcp_interfaces}" ] && return
27	carrier=false
28	for _if in ${dhcp_interfaces}; do
29		output=`/sbin/ifconfig ${_if}` 
30		nocarrier=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'`
31		[ -z "${nocarrier}" ] && carrier=true
32	done
33	if ! ${carrier}; then
34		return
35	fi
36
37	# Wait for a default route
38	delay=${defaultroute_delay}
39	while [ ${delay} -gt 0 ]; do
40		defif=`get_default_if -inet`
41		if [ -n "${defif}" ]; then
42			if [ ${delay} -ne ${defaultroute_delay} ]; then
43				echo -n "($defif)"
44				nl=1
45			fi
46			break
47		fi
48		if [ ${delay} -eq ${defaultroute_delay} ]; then
49			echo -n "Waiting ${delay}s for the default route interface: "
50		else
51			echo -n .
52		fi
53		nl=1
54		sleep 1
55		delay=$(($delay - 1))
56	done
57
58	[ -n "$nl" ] && echo
59}
60
61load_rc_config $name
62run_rc_command "$1"
63