Blah, forgot to svn add the actual script from r223310
This commit is contained in:
parent
d732b516ea
commit
0ee974f9cf
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=223311
97
etc/rc.d/netwait
Executable file
97
etc/rc.d/netwait
Executable file
@ -0,0 +1,97 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
# PROVIDE: netwait
|
||||||
|
# REQUIRE: NETWORKING
|
||||||
|
# KEYWORD: nojail
|
||||||
|
#
|
||||||
|
# The netwait script is intended to be used by systems which have
|
||||||
|
# statically-configured IP addresses in rc.conf(5). If your system
|
||||||
|
# uses DHCP, you should use synchronous_dhclient="YES" in your
|
||||||
|
# /etc/rc.conf instead of using netwait.
|
||||||
|
|
||||||
|
. /etc/rc.subr
|
||||||
|
|
||||||
|
name="netwait"
|
||||||
|
rc_var=`set_rcvar`
|
||||||
|
start_cmd="${name}_start"
|
||||||
|
stop_cmd=":"
|
||||||
|
|
||||||
|
netwait_start()
|
||||||
|
{
|
||||||
|
local ip rc count output link
|
||||||
|
|
||||||
|
if [ -z "${netwait_ip}" ]; then
|
||||||
|
err 1 "You must define one or more IP addresses in netwait_ip"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${netwait_timeout} -lt 1 ]; then
|
||||||
|
err 1 "netwait_timeout must be >= 1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Handle SIGINT (Ctrl-C); force abort of while() loop
|
||||||
|
trap break SIGINT
|
||||||
|
|
||||||
|
if [ -n "${netwait_if}" ]; then
|
||||||
|
echo -n "Waiting for $netwait_if to have link"
|
||||||
|
|
||||||
|
count=1
|
||||||
|
while [ ${count} -le ${netwait_if_timeout} ]; do
|
||||||
|
if output=`/sbin/ifconfig ${netwait_if} 2>/dev/null`; then
|
||||||
|
link=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'`
|
||||||
|
if [ -z "${link}" ]; then
|
||||||
|
echo '.'
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo ''
|
||||||
|
err 1 "ifconfig ${netwait_if} failed"
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
count=$((count+1))
|
||||||
|
done
|
||||||
|
if [ -n "${link}" ]; then
|
||||||
|
# Restore default SIGINT handler
|
||||||
|
trap - SIGINT
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
warn "Interface still has no link. Continuing with startup, but"
|
||||||
|
warn "be aware you may not have a fully functional networking"
|
||||||
|
warn "layer at this point."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Handle SIGINT (Ctrl-C); force abort of while() loop
|
||||||
|
trap break SIGINT
|
||||||
|
|
||||||
|
for ip in ${netwait_ip}; do
|
||||||
|
echo -n "Waiting for ${ip} to respond to ICMP"
|
||||||
|
|
||||||
|
count=1
|
||||||
|
while [ ${count} -le ${netwait_timeout} ]; do
|
||||||
|
/sbin/ping -t 1 -c 1 -o ${ip} >/dev/null 2>&1
|
||||||
|
rc=$?
|
||||||
|
|
||||||
|
if [ $rc -eq 0 ]; then
|
||||||
|
# Restore default SIGINT handler
|
||||||
|
trap - SIGINT
|
||||||
|
|
||||||
|
echo '.'
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
count=$((count+1))
|
||||||
|
done
|
||||||
|
echo ': No response from host.'
|
||||||
|
done
|
||||||
|
|
||||||
|
# Restore default SIGINT handler
|
||||||
|
trap - SIGINT
|
||||||
|
|
||||||
|
warn "Exhausted IP list. Continuing with startup, but be aware you may"
|
||||||
|
warn "not have a fully functional networking layer at this point."
|
||||||
|
}
|
||||||
|
|
||||||
|
load_rc_config $name
|
||||||
|
run_rc_command "$1"
|
Loading…
Reference in New Issue
Block a user