freebsd-dev/etc/rc.d/dhclient
Mike Makonnen 9dd342fee6 Luke Mewburn has indicated that they (NetBSD) are not interested
in keeping the scripts under rc.d in sync with us. So, remove
NetBSD specific stuff (which made our scripts more complicated
than necessary).

The NetBSD ident string will be left intact, both for history and
also incase we wish to pull in future versions.
2004-01-17 10:40:45 +00:00

115 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
#
# $NetBSD: dhclient,v 1.8 2002/03/22 04:33:58 thorpej Exp $
# $FreeBSD$
#
# PROVIDE: dhclient
# REQUIRE: network netif mountcritlocal
# BEFORE: NETWORKING
# KEYWORD: FreeBSD
#
# Note that there no syslog logging of dhclient messages at boot because
# dhclient needs to start before services that syslog depends upon do.
#
. /etc/rc.subr
. /etc/network.subr
name="dhclient"
rcvar=
pidfile="/var/run/${name}.pid"
start_precmd="dhclient_prestart"
start_postcmd="dhclient_poststart"
stop_precmd="dhclient_prestop"
stop_postcmd="dhclient_poststop"
dhclient_common()
{
dhcp_list="`list_net_interfaces dhcp`"
if [ -z "$dhcp_list" ]; then
return 1
fi
# Determine the scope of the command
#
_cooked_list="$dhcp_list"
if [ -n "$_cmdifn" ]; then
eval _cooked_list=\"`expr "$dhcp_list" : ".*\($_cmdifn\).*"`\"
if [ -z "$_cooked_list" ]; then
err "No such network interface: $_cmdifn"
return 1
fi
fi
}
dhclient_prestart()
{
if [ $dhclient_common_error -eq 1 ]; then
return 1
fi
for ifn in ${_cooked_list}; do
ifscript_up ${ifn}
done
if checkyesno background_dhclient; then
rc_flags="${rc_flags} -nw"
fi
rc_flags="${rc_flags} ${_cooked_list}"
return 0
}
dhclient_poststart()
{
for ifn in ${_cooked_list}; do
ifalias_up ${ifn}
ipx_up ${ifn}
ifconfig ${ifn}
done
}
dhclient_prestop()
{
if [ $dhclient_common_error -eq 1 ]; then
return 1
fi
for ifn in ${_cooked_list}; do
ipx_down ${ifn}
ifalias_down ${ifn}
done
echo -n "Releasing DHCP leases:"
for ifn in $_cooked_list ; do
${command} -r $ifn
if [ $? -eq 0 ]; then
echo -n " $ifn"
else
_fail="$_fail $ifn"
fi
done
echo '.'
debug "The following leases failed to release: $_fail"
}
dhclient_poststop()
{
for ifn in ${_cooked_list}; do
ifscript_down ${ifn}
done
}
if [ -n "$2" ]; then
_cmdifn="$2"
stop_cmd=":"
fi
load_rc_config $name
dhclient_common_error=0
dhclient_common || dhclient_common_error=1;
if [ -n "$_cooked_list" ]; then
if [ -s $pidfile ]; then
stop_cmd=":"
fi
fi
run_rc_command "$1"