Annotation of embedaddon/dhcp/client/dhclient-script.8, revision 1.1.1.1

1.1       misho       1: .\"    dhclient-script.8
                      2: .\"
                      3: .\" Copyright (c) 2009-2010 by Internet Systems Consortium, Inc. ("ISC")
                      4: .\" Copyright (c) 2004-2005 by Internet Systems Consortium, Inc. ("ISC")
                      5: .\" Copyright (c) 1996-2003 by Internet Software Consortium
                      6: .\"
                      7: .\" Permission to use, copy, modify, and distribute this software for any
                      8: .\" purpose with or without fee is hereby granted, provided that the above
                      9: .\" copyright notice and this permission notice appear in all copies.
                     10: .\"
                     11: .\" THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
                     12: .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     13: .\" MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
                     14: .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     15: .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     16: .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
                     17: .\" OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     18: .\"
                     19: .\"   Internet Systems Consortium, Inc.
                     20: .\"   950 Charter Street
                     21: .\"   Redwood City, CA 94063
                     22: .\"   <info@isc.org>
                     23: .\"   https://www.isc.org/
                     24: .\"
                     25: .\" This software has been written for Internet Systems Consortium
                     26: .\" by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
                     27: .\"
                     28: .\" Support and other services are available for ISC products - see
                     29: .\" https://www.isc.org for more information or to learn more about ISC.
                     30: .\"
1.1.1.1 ! misho      31: .\" $Id: dhclient-script.8,v 1.11.762.3 2010/07/02 23:37:06 sar Exp $
1.1       misho      32: .\"
                     33: .TH dhclient-script 8
                     34: .SH NAME
                     35: dhclient-script - DHCP client network configuration script
                     36: .SH DESCRIPTION
                     37: The DHCP client network configuration script is invoked from time to
                     38: time by \fBdhclient(8)\fR.  This script is used by the dhcp client to
                     39: set each interface's initial configuration prior to requesting an
                     40: address, to test the address once it has been offered, and to set the
                     41: interface's final configuration once a lease has been acquired.  If no
                     42: lease is acquired, the script is used to test predefined leases, if
                     43: any, and also called once if no valid lease can be identified.
                     44: .PP
                     45: This script is not meant to be customized by the end user.  If local
                     46: customizations are needed, they should be possible using the enter and
                     47: exit hooks provided (see HOOKS for details).   These hooks will allow the
                     48: user to override the default behaviour of the client in creating a
                     49: .B /etc/resolv.conf
                     50: file.
                     51: .PP
                     52: No standard client script exists for some operating systems, even though
                     53: the actual client may work, so a pioneering user may well need to create
                     54: a new script or modify an existing one.  In general, customizations specific
                     55: to a particular computer should be done in the
                     56: .B ETCDIR/dhclient.conf
                     57: file.   If you find that you can't make such a customization without
                     58: customizing
                     59: .B ETCDIR/dhclient.conf
                     60: or using the enter and exit hooks, please submit a bug report.
                     61: .SH HOOKS
                     62: When it starts, the client script first defines a shell function,
                     63: .B make_resolv_conf ,
                     64: which is later used to create the
                     65: .B /etc/resolv.conf
                     66: file.   To override the default behaviour, redefine this function in
                     67: the enter hook script.
                     68: .PP
                     69: On after defining the make_resolv_conf function, the client script checks
                     70: for the presence of an executable
                     71: .B ETCDIR/dhclient-enter-hooks
                     72: script, and if present, it invokes the script inline, using the Bourne
                     73: shell \'.\' command.   The entire environment documented under OPERATION
                     74: is available to this script, which may modify the environment if needed
                     75: to change the behaviour of the script.   If an error occurs during the
                     76: execution of the script, it can set the exit_status variable to a nonzero
                     77: value, and
                     78: .B CLIENTBINDIR/dhclient-script
                     79: will exit with that error code immediately after the client script exits.
                     80: .PP
                     81: After all processing has completed,
                     82: .B CLIENTBINDIR/dhclient-script
                     83: checks for the presence of an executable
                     84: .B ETCDIR/dhclient-exit-hooks
                     85: script, which if present is invoked using the \'.\' command.  The exit
                     86: status of dhclient-script will be passed to dhclient-exit-hooks in the
                     87: exit_status shell variable, and will always be zero if the script
                     88: succeeded at the task for which it was invoked.   The rest of the
                     89: environment as described previously for dhclient-enter-hooks is also
                     90: present.   The
                     91: .B ETCDIR/dhclient-exit-hooks
                     92: script can modify the valid of exit_status to change the exit status
                     93: of dhclient-script.
                     94: .SH OPERATION
                     95: When dhclient needs to invoke the client configuration script, it
                     96: defines a set of variables in the environment, and then invokes
                     97: .B CLIENTBINDIR/dhclient-script.
                     98: In all cases, $reason is set to the name of the reason why the script
                     99: has been invoked.   The following reasons are currently defined:
                    100: MEDIUM, PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, STOP, RELEASE,
                    101: NBI and TIMEOUT.
                    102: .PP
                    103: .SH MEDIUM
                    104: The DHCP client is requesting that an interface's media type
                    105: be set.  The interface name is passed in $interface, and the media
                    106: type is passed in $medium.
                    107: .SH PREINIT
                    108: The DHCP client is requesting that an interface be configured as
                    109: required in order to send packets prior to receiving an actual
                    110: address.   For clients which use the BSD socket library, this means
                    111: configuring the interface with an IP address of 0.0.0.0 and a
                    112: broadcast address of 255.255.255.255.   For other clients, it may be
                    113: possible to simply configure the interface up without actually giving
                    114: it an IP address at all.   The interface name is passed in $interface,
                    115: and the media type in $medium.
                    116: .PP
                    117: If an IP alias has been declared in dhclient.conf, its address will be
                    118: passed in $alias_ip_address, and that ip alias should be deleted from
                    119: the interface, along with any routes to it.
                    120: .SH BOUND
                    121: The DHCP client has done an initial binding to a new address.   The
                    122: new ip address is passed in $new_ip_address, and the interface name is
                    123: passed in $interface.   The media type is passed in $medium.   Any
                    124: options acquired from the server are passed using the option name
                    125: described in \fBdhcp-options\fR, except that dashes (\'-\') are replaced
                    126: by underscores (\'_\') in order to make valid shell variables, and the
                    127: variable names start with new_.   So for example, the new subnet mask
                    128: would be passed in $new_subnet_mask.
                    129: .PP
                    130: Before actually configuring the address, dhclient-script should
                    131: somehow ARP for it and exit with a nonzero status if it receives a
                    132: reply.   In this case, the client will send a DHCPDECLINE message to
                    133: the server and acquire a different address.   This may also be done in
                    134: the RENEW, REBIND, or REBOOT states, but is not required, and indeed
                    135: may not be desirable.
                    136: .PP
                    137: When a binding has been completed, a lot of network parameters are
                    138: likely to need to be set up.   A new /etc/resolv.conf needs to be
                    139: created, using the values of $new_domain_name and
                    140: $new_domain_name_servers (which may list more than one server,
                    141: separated by spaces).   A default route should be set using
                    142: $new_routers, and static routes may need to be set up using
                    143: $new_static_routes.
                    144: .PP
                    145: If an IP alias has been declared, it must be set up here.   The alias
                    146: IP address will be written as $alias_ip_address, and other DHCP
                    147: options that are set for the alias (e.g., subnet mask) will be passed
                    148: in variables named as described previously except starting with
                    149: $alias_ instead of $new_.   Care should be taken that the alias IP
                    150: address not be used if it is identical to the bound IP address
                    151: ($new_ip_address), since the other alias parameters may be incorrect
                    152: in this case.
                    153: .SH RENEW
                    154: When a binding has been renewed, the script is called as in BOUND,
                    155: except that in addition to all the variables starting with $new_,
                    156: there is another set of variables starting with $old_.  Persistent
                    157: settings that may have changed need to be deleted - for example, if a
                    158: local route to the bound address is being configured, the old local
                    159: route should be deleted.  If the default route has changed, the old default
                    160: route should be deleted.  If the static routes have changed, the old
                    161: ones should be deleted.  Otherwise, processing can be done as with
                    162: BOUND.
                    163: .SH REBIND
                    164: The DHCP client has rebound to a new DHCP server.  This can be handled
                    165: as with RENEW, except that if the IP address has changed, the ARP
                    166: table should be cleared.
                    167: .SH REBOOT
                    168: The DHCP client has successfully reacquired its old address after a
                    169: reboot.   This can be processed as with BOUND.
                    170: .SH EXPIRE
                    171: The DHCP client has failed to renew its lease or acquire a new one,
                    172: and the lease has expired.   The IP address must be relinquished, and
                    173: all related parameters should be deleted, as in RENEW and REBIND.
                    174: .SH FAIL
                    175: The DHCP client has been unable to contact any DHCP servers, and any
                    176: leases that have been tested have not proved to be valid.   The
                    177: parameters from the last lease tested should be deconfigured.   This
                    178: can be handled in the same way as EXPIRE.
                    179: .SH STOP
                    180: The dhclient has been informed to shut down gracefully, the
                    181: dhclient-script should unconfigure or shutdown the interface as
                    182: appropriate.
                    183: .SH RELEASE
                    184: The dhclient has been executed using the -r flag, indicating that the
                    185: administrator wishes it to release its lease(s).  dhclient-script should
                    186: unconfigure or shutdown the interface.
                    187: .SH NBI
                    188: No-Broadcast-Interfaces...dhclient was unable to find any interfaces
                    189: upon which it believed it should commence DHCP.  What dhclient-script
                    190: should do in this situation is entirely up to the implementor.
                    191: .SH TIMEOUT
                    192: The DHCP client has been unable to contact any DHCP servers.
                    193: However, an old lease has been identified, and its parameters have
                    194: been passed in as with BOUND.   The client configuration script should
                    195: test these parameters and, if it has reason to believe they are valid,
                    196: should exit with a value of zero.   If not, it should exit with a
                    197: nonzero value.
                    198: .PP
                    199: The usual way to test a lease is to set up the network as with REBIND
                    200: (since this may be called to test more than one lease) and then ping
                    201: the first router defined in $routers.  If a response is received, the
                    202: lease must be valid for the network to which the interface is
                    203: currently connected.   It would be more complete to try to ping all of
                    204: the routers listed in $new_routers, as well as those listed in
                    205: $new_static_routes, but current scripts do not do this.
                    206: .SH FILES
                    207: Each operating system should generally have its own script file,
                    208: although the script files for similar operating systems may be similar
                    209: or even identical.   The script files included in Internet
                    210: Systems Consortium DHCP distribution appear in the distribution tree
                    211: under client/scripts, and bear the names of the operating systems on
                    212: which they are intended to work.
                    213: .SH BUGS
                    214: If more than one interface is being used, there's no obvious way to
                    215: avoid clashes between server-supplied configuration parameters - for
                    216: example, the stock dhclient-script rewrites /etc/resolv.conf.   If
                    217: more than one interface is being configured, /etc/resolv.conf will be
                    218: repeatedly initialized to the values provided by one server, and then
                    219: the other.   Assuming the information provided by both servers is
                    220: valid, this shouldn't cause any real problems, but it could be
                    221: confusing.
                    222: .SH SEE ALSO
                    223: dhclient(8), dhcpd(8), dhcrelay(8), dhclient.conf(5) and
                    224: dhclient.leases(5).
                    225: .SH AUTHOR
                    226: .B dhclient-script(8)
                    227: has been written for Internet Systems Consortium
                    228: by Ted Lemon in cooperation with Vixie
                    229: Enterprises.  To learn more about Internet Systems Consortium,
                    230: see
                    231: .B https://www.isc.org.
                    232: To learn more about Vixie
                    233: Enterprises, see
                    234: .B http://www.vix.com.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>