b558571de6
- Add afexists() check to address family specific rc.d scripts. A script for an AF will be silently ignored if the kernel has no support for the AF.
65 lines
1.2 KiB
Bash
Executable File
65 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Wait for the default route to be up
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# PROVIDE: defaultroute
|
|
# REQUIRE: devd faith netif stf
|
|
# KEYWORD: nojail
|
|
|
|
. /etc/rc.subr
|
|
. /etc/network.subr
|
|
|
|
name="defaultroute"
|
|
start_cmd="defaultroute_start"
|
|
stop_cmd=":"
|
|
|
|
defaultroute_start()
|
|
{
|
|
local output carrier nocarrier nl
|
|
|
|
afexists inet || return 0
|
|
|
|
# Return without waiting if we don't have dhcp interfaces or
|
|
# if none of the dhcp interfaces is plugged in.
|
|
dhcp_interfaces=`list_net_interfaces dhcp`
|
|
[ -z "${dhcp_interfaces}" ] && return
|
|
carrier=false
|
|
for _if in ${dhcp_interfaces}; do
|
|
output=`/sbin/ifconfig ${_if}`
|
|
nocarrier=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'`
|
|
[ -z "${nocarrier}" ] && carrier=true
|
|
done
|
|
if ! ${carrier}; then
|
|
return
|
|
fi
|
|
|
|
# Wait for a default route
|
|
delay=${defaultroute_delay}
|
|
while [ ${delay} -gt 0 ]; do
|
|
defif=`get_default_if -inet`
|
|
if [ -n "${defif}" ]; then
|
|
if [ ${delay} -ne ${defaultroute_delay} ]; then
|
|
echo -n "($defif)"
|
|
nl=1
|
|
fi
|
|
break
|
|
fi
|
|
if [ ${delay} -eq ${defaultroute_delay} ]; then
|
|
echo -n "Waiting ${delay}s for the default route interface: "
|
|
else
|
|
echo -n .
|
|
fi
|
|
nl=1
|
|
sleep 1
|
|
delay=$(($delay - 1))
|
|
done
|
|
|
|
[ -n "$nl" ] && echo
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|