]> CyberLeo.Net >> Repos - FreeBSD/releng/8.1.git/blob - etc/rc.d/defaultroute
Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.
[FreeBSD/releng/8.1.git] / etc / rc.d / defaultroute
1 #!/bin/sh
2 #
3 # Wait for the default route to be up
4 #
5 # $FreeBSD$
6 #
7
8 # PROVIDE: defaultroute
9 # REQUIRE: devd netif network_ipv6
10 # KEYWORD: nojail
11
12 . /etc/rc.subr
13 . /etc/network.subr
14
15 name="defaultroute"
16 start_cmd="defaultroute_start"
17 stop_cmd=":"
18
19 defaultroute_start()
20 {
21         local output carrier nocarrier
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                         fi
45                         break
46                 fi
47                 if [ ${delay} -eq ${defaultroute_delay} ]; then
48                         echo -n "Waiting ${delay}s for the default route interface: "
49                 else
50                         echo -n .
51                 fi
52                 sleep 1
53                 delay=`expr $delay - 1`
54         done
55
56         echo
57 }
58
59 load_rc_config $name
60 run_rc_command "$1"