xref: /dragonfly/etc/rc.d/dhclient (revision 49781055)
1#!/bin/sh
2#
3# $NetBSD: dhclient,v 1.8 2002/03/22 04:33:58 thorpej Exp $
4# $FreeBSD: src/etc/rc.d/dhclient,v 1.6 2003/06/29 05:34:41 mtm Exp $
5# $DragonFly: src/etc/rc.d/dhclient,v 1.7 2005/11/19 21:47:32 swildner Exp $
6#
7
8# PROVIDE: dhclient
9# REQUIRE: netif mountcritlocal
10# BEFORE:  NETWORKING
11#
12#	Note that there no syslog logging of dhclient messages at boot because
13#	dhclient needs to start before services that syslog depends upon do.
14#
15
16. /etc/rc.subr
17. /etc/network.subr
18
19name="dhclient"
20pidfile="/var/run/${name}.pid"
21	rcvar=
22	start_precmd="dhclient_prestart"
23	start_postcmd="dhclient_poststart"
24	stop_cmd="dhclient_stop"
25	stop_precmd="dhclient_prestop"
26	stop_postcmd="dhclient_poststop"
27
28
29dhclient_common()
30{
31	dhcp_list="`list_net_interfaces dhcp`"
32	if [ -z "$dhcp_list" ]; then
33		return $RC_IRRELEVANT
34	fi
35
36	# Determine the scope of the command
37	#
38	_cooked_list="$dhcp_list"
39	if [ -n "$_cmdifn" ]; then
40		eval _cooked_list=\"`expr "$dhcp_list" : ".*\($_cmdifn\).*"`\"
41		if [ -z "$_cooked_list" ]; then
42			err "No such network interface: $_cmdifn"
43			return 1
44		fi
45	fi
46}
47
48dhclient_prestart()
49{
50	dhclient_common || return $?
51
52	for ifn in ${_cooked_list}; do
53		ifscript_up ${ifn}
54	done
55
56	rc_flags="${rc_flags} ${_cooked_list}"
57	return 0
58}
59
60dhclient_poststart()
61{
62	for ifn in ${_cooked_list}; do
63		ifalias_up ${ifn}
64		ipx_up ${ifn}
65		ifconfig ${ifn}
66	done
67}
68
69dhclient_stop()
70{
71	echo -n "Releasing DHCP leases:"
72	for ifn in $_cooked_list ; do
73		${command} -r $ifn
74		if [ $? -eq 0 ]; then
75			echo -n " $ifn"
76		else
77			_fail="$_fail $ifn"
78		fi
79	done
80	echo '.'
81	debug "The following leases failed to release: $_fail"
82}
83
84dhclient_prestop()
85{
86	dhclient_common || return $?
87
88	for ifn in ${_cooked_list}; do
89		ipx_down ${ifn}
90		ifalias_down ${ifn}
91	done
92}
93
94dhclient_poststop()
95{
96	for ifn in ${_cooked_list}; do
97		ifscript_down ${ifn}
98	done
99}
100
101if [ -n "$2" ]; then
102	_cmdifn="$2"
103fi
104
105load_rc_config $name
106
107run_rc_command "$1"
108