diff options
author | brooks <brooks@FreeBSD.org> | 2005-06-07 04:05:09 +0000 |
---|---|---|
committer | brooks <brooks@FreeBSD.org> | 2005-06-07 04:05:09 +0000 |
commit | 9066b3f8349915bcffc1bbec3e08bc088b966f30 (patch) | |
tree | 15f626e3cc39d6ff210e3d5ceda54c655c46dbdc /sbin/dhclient/dhclient-script.8 | |
parent | 278fb1a5b03afd90c559d3c6ea91fa325b05b245 (diff) | |
download | FreeBSD-src-9066b3f8349915bcffc1bbec3e08bc088b966f30.zip FreeBSD-src-9066b3f8349915bcffc1bbec3e08bc088b966f30.tar.gz |
Import the OpenBSD dhclient as shipped with OpenBSD-3.7 (the tag
OPENBSD_3_7).
Diffstat (limited to 'sbin/dhclient/dhclient-script.8')
-rw-r--r-- | sbin/dhclient/dhclient-script.8 | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/sbin/dhclient/dhclient-script.8 b/sbin/dhclient/dhclient-script.8 new file mode 100644 index 0000000..57a2abd --- /dev/null +++ b/sbin/dhclient/dhclient-script.8 @@ -0,0 +1,246 @@ +.\" $OpenBSD: dhclient-script.8,v 1.2 2004/04/09 18:30:15 jmc Exp $ +.\" +.\" Copyright (c) 1997 The Internet Software Consortium. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of The Internet Software Consortium nor the names +.\" of its contributors may be used to endorse or promote products derived +.\" from this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND +.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +.\" DISCLAIMED. IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR +.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" This software has been written for the Internet Software Consortium +.\" by Ted Lemon <mellon@fugue.com> in cooperation with Vixie +.\" Enterprises. To learn more about the Internet Software Consortium, +.\" see ``http://www.isc.org/isc''. To learn more about Vixie +.\" Enterprises, see ``http://www.vix.com''. +.\" +.Dd January 1, 1997 +.Dt DHCLIENT-SCRIPT 8 +.Os +.Sh NAME +.Nm dhclient-script +.Nd DHCP client network configuration script +.Sh DESCRIPTION +The DHCP client network configuration script is invoked from time to +time by +.Xr dhclient 8 . +This script is used by the DHCP client to set each interface's initial +configuration prior to requesting an address, to test the address once it +has been offered, and to set the interface's final configuration once a +lease has been acquired. +If no lease is acquired, the script is used to test predefined leases, if +any, and also called once if no valid lease can be identified. +.Pp +.\" No standard client script exists for some operating systems, even though +.\" the actual client may work, so a pioneering user may well need to create +.\" a new script or modify an existing one. +In general, customizations specific to a particular computer should be done +in the +.Pa /etc/dhclient.conf +file. +.Sh OPERATION +When +.Xr dhclient 8 +needs to invoke the client configuration script, it sets up a number of +environment variables and runs +.Nm dhclient-script . +In all cases, +.Va $reason +is set to the name of the reason why the script has been invoked. +The following reasons are currently defined: +MEDIUM, PREINIT, ARPCHECK, ARPSEND, BOUND, RENEW, REBIND, REBOOT, +EXPIRE, FAIL and TIMEOUT. +.Bl -tag -width "ARPCHECK" +.It MEDIUM +The DHCP client is requesting that an interface's media type be set. +The interface name is passed in +.Va $interface , +and the media type is passed in +.Va $medium . +.It PREINIT +The DHCP client is requesting that an interface be configured as +required in order to send packets prior to receiving an actual address. +.\" For clients which use the BSD socket library, +This means configuring the interface with an IP address of 0.0.0.0 +and a broadcast address of 255.255.255.255. +.\" For other clients, it may be possible to simply configure the interface up +.\" without actually giving it an IP address at all. +The interface name is passed in +.Va $interface , +and the media type in +.Va $medium . +.Pp +If an IP alias has been declared in +.Xr dhclient.conf 5 , +its address will be passed in +.Va $alias_ip_address , +and that IP alias should be deleted from the interface, +along with any routes to it. +.It ARPSEND +The DHCP client is requesting that an address that has been offered to +it be checked to see if somebody else is using it, by sending an ARP +request for that address. +It's not clear how to implement this, so no examples exist yet. +The IP address to check is passed in +.Va $new_ip_address , +and the interface name is passed in +.Va $interface . +.It ARPCHECK +The DHCP client wants to know if a response to the ARP request sent +using ARPSEND has been received. +If one has, the script should exit with a nonzero status, indicating that +the offered address has already been requested and should be declined. +.Va $new_ip_address +and +.Va $interface +are set as with ARPSEND. +.It BOUND +The DHCP client has done an initial binding to a new address. +The new IP address is passed in +.Va $new_ip_address , +and the interface name is passed in +.Va $interface . +The media type is passed in +.Va $medium . +Any options acquired from the server are passed using the option name +described in +.Xr dhcp-options 5 , +except that dashes +.Pq Sq - +are replaced by underscores +.Pq Sq _ +in order to make valid shell variables, and the variable names start with new_. +So for example, the new subnet mask would be passed in +.Va $new_subnet_mask . +.Pp +When a binding has been completed, a lot of network parameters are +likely to need to be set up. +A new +.Pa /etc/resolv.conf +needs to be created, using the values of +.Va $new_domain_name +and +.Va $new_domain_name_servers +(which may list more than one server, separated by spaces). +A default route should be set using +.Va $new_routers , +and static routes may need to be set up using +.Va $new_static_routes . +.Pp +If an IP alias has been declared, it must be set up here. +The alias IP address will be written as +.Va $alias_ip_address , +and other DHCP options that are set for the alias (e.g., subnet mask) +will be passed in variables named as described previously except starting with +$alias_ instead of $new_. +Care should be taken that the alias IP address not be used if it is identical +to the bound IP address +.Pq Va $new_ip_address , +since the other alias parameters may be incorrect in this case. +.It RENEW +When a binding has been renewed, the script is called as in BOUND, +except that in addition to all the variables starting with $new_, +there is another set of variables starting with $old_. +Persistent settings that may have changed need to be deleted \- for example, +if a local route to the bound address is being configured, the old local +route should be deleted. +If the default route has changed, the old default route should be deleted. +If the static routes have changed, the old ones should be deleted. +Otherwise, processing can be done as with BOUND. +.It REBIND +The DHCP client has rebound to a new DHCP server. +This can be handled as with RENEW, except that if the IP address has changed, +the ARP table should be cleared. +.It REBOOT +The DHCP client has successfully reacquired its old address after a reboot. +This can be processed as with BOUND. +.It EXPIRE +The DHCP client has failed to renew its lease or acquire a new one, +and the lease has expired. +The IP address must be relinquished, and all related parameters should be +deleted, as in RENEW and REBIND. +.It FAIL +The DHCP client has been unable to contact any DHCP servers, and any +leases that have been tested have not proved to be valid. +The parameters from the last lease tested should be deconfigured. +This can be handled in the same way as EXPIRE. +.It TIMEOUT +The DHCP client has been unable to contact any DHCP servers. +However, an old lease has been identified, and its parameters have +been passed in as with BOUND. +The client configuration script should test these parameters and, +if it has reason to believe they are valid, should exit with a value of zero. +If not, it should exit with a nonzero value. +.El +.Pp +The usual way to test a lease is to set up the network as with REBIND +(since this may be called to test more than one lease) and then ping +the first router defined in +.Va $routers . +If a response is received, the lease must be valid for the network to +which the interface is currently connected. +It would be more complete to try to ping all of the routers listed in +.Va $new_routers , +as well as those listed in +.Va $new_static_routes , +but current scripts do not do this. +.\" .Sh FILES +.\" Each operating system should generally have its own script file, +.\" although the script files for similar operating systems may be similar +.\" or even identical. +.\" The script files included in the Internet Software Consortium DHCP +.\" distribution appear in the distribution tree under client/scripts, +.\" and bear the names of the operating systems on which they are intended +.\" to work. +.Sh SEE ALSO +.Xr dhclient.conf 5 , +.Xr dhclient.leases 5 , +.Xr dhclient 8 , +.Xr dhcpd 8 , +.Xr dhcrelay 8 +.Sh AUTHORS +The original version of +.Nm +was written for the Internet Software Consortium by +.An Ted Lemon Aq mellon@fugue.com +in cooperation with Vixie Enterprises. +.Pp +The +.Ox +implementation of +.Nm +was written by +.An Kenneth R. Westerback Aq krw@openbsd.org . +.Sh BUGS +If more than one interface is being used, there's no obvious way to +avoid clashes between server-supplied configuration parameters \- for +example, the stock dhclient-script rewrites +.Pa /etc/resolv.conf . +If more than one interface is being configured, +.Pa /etc/resolv.conf +will be repeatedly initialized to the values provided by one server, and then +the other. +Assuming the information provided by both servers is valid, this shouldn't +cause any real problems, but it could be confusing. |