Fix typo.
[dragonfly.git] / etc / rc.d / dhclient
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
19 name="dhclient"
20 pidfile="/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
29 dhclient_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
48 dhclient_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
60 dhclient_poststart()
61 {
62         for ifn in ${_cooked_list}; do
63                 ifalias_up ${ifn}
64                 ipx_up ${ifn}
65                 ifconfig ${ifn}
66         done
67 }
68
69 dhclient_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
84 dhclient_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
94 dhclient_poststop()
95 {
96         for ifn in ${_cooked_list}; do
97                 ifscript_down ${ifn}
98         done
99 }
100
101 if [ -n "$2" ]; then
102         _cmdifn="$2"
103 fi
104
105 load_rc_config $name
106
107 run_rc_command "$1"