312ba8d00a
the address, also kill the dhclient process. Instead of doing the release in the stop command, move it to the precmd stage and allow rc.subr(8) to automatically kill the dhclient process by leaving the stop command undefined. Noticed by: mbr
109 lines
1.8 KiB
Bash
Executable File
109 lines
1.8 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 NetBSD
|
|
#
|
|
# 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"
|
|
pidfile="/var/run/${name}.pid"
|
|
case "${OSTYPE}" in
|
|
FreeBSD)
|
|
rcvar=
|
|
start_precmd="dhclient_prestart"
|
|
start_postcmd="dhclient_poststart"
|
|
stop_precmd="dhclient_prestop"
|
|
stop_postcmd="dhclient_poststop"
|
|
;;
|
|
NetBSD)
|
|
rcvar=$name
|
|
command="/sbin/${name}"
|
|
;;
|
|
esac
|
|
|
|
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()
|
|
{
|
|
dhclient_common || return 1
|
|
|
|
for ifn in ${_cooked_list}; do
|
|
ifscript_up ${ifn}
|
|
done
|
|
|
|
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()
|
|
{
|
|
dhclient_common || return 1
|
|
|
|
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"
|
|
fi
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|