dhcp_bootp(1M) dhcp_bootp(1M) NAME dhcp_bootp - proclaim server for Dynamic Host Configuration Protocol SYNOPSIS /usr/etc/dhcp_bootp [ -fd ] [ -o dhcp_options_file ] DESCRIPTION dhcp_bootp is the server that communicates with other DHCP and proclaim(1M) clients to provide configuration parameters, including at least an IP address. The format of DHCP messages is based on bootp messages (see RFC 951). A detailed protocol specification for DHCP is contained in RFC 2131, available from the Network Information Center. The DHCP protocol uses UDP/IP as its transport mechanism. The DHCP server receives service requests at the UDP port indicated in the bootp service description contained in the file /etc/services (see services(4)). The proclaim server can be used together with one or more proclaim relay-agents (see dhcp_relay(1M)) to enable clients to obtain address-leases across networks. The dhcp_bootp server responds to multiple interfaces on a multihomed gateway machine, for dynamic IP addresses. dhcp_bootp replaces the standard bootp(1M) server application and serves both bootp and DHCP clients. If the client sends a non-DHCP request, then this bootp request is processed as described in the bootp(1M) man page and the /etc/bootptab configuration file is used to determine the response to the client. COMMAND LINE OPTIONS -f This enables cross network forwarding if the client is requesting for service from a dhcp server which is reachable via this server and on a different wire. -d This enables the dhcp_server into a debug mode in which it logs messages to /var/adm/SYSLOG. -o The path of the dhcp_options_file can be mentioned using this option. The default location is /etc/config/dhcp_bootp.options. CONFIGURATION dhcp_bootp execution can be controlled through the following steps. 1) Specify the additional DHCP-related options in the /etc/config/dhcp_bootp.options file as follows: -y If you are using NIS to propagate the hosts and ethers map, this system is required to be the NIS master server for proclaim to work correctly. -w hosts_map Specifies the optional location of the hosts map. The default is /etc/hosts. -e ethers_map Specifies the optional location of the ethers map. The default is /etc/ethers. -u sysname Specifies the name for an optional sysname file. The default is /unix. -c proclaim_config_dir Specifies the optional proclaim server configuration directory. The default directory is /var/dhcp/config. -t seconds A timeout period for the dhcp_bootp server can be set else the default period will be used.If a timeout period of 0 seconds is used then the dhcp_bootp server will become a persistent daemon. -x This option is used in conjunction with a Domain Name Server that provides the IP address to hostname mapping for the initial assignment of IP addresses to hosts by the DHCP server. The option has been found to be particularly useful in an Internet Service Provider type of setup where the IP address to hostname mapping may be required to remain fixed. Once an IP address is assigned it is written to the etherToIP.pag file. When this option is in effect, etherToIP.pag is the only file consulted to determine whether a particular IP address or hostname is already assigned. -n Specifies that the server should return a netmask with its reply regardless of whether a client requested it or not. -m options Specifies additional options to be sent by the server to clients irrespective of whether the client requests them or not. The additional options are specified as a comma or colon separated list with no spaces. -r script_file_path Specifies an optional script file to execute when the server changes the etherToIP database. The complete path to the script must be specified as an a argument. The server calls the script with several command-line arguments: -c client_identifier -m physical_address -i ip_address -h hostname -l lease -o operation -t dhcp_message_type. The script is executed in the background. The value of the operation argument is 0 if it was a record creation, 1 if it was a deletion, and 2 if the lease was updated. The dhcp_message_type is the same as defined message types in the DHCP literature. If a message is sent to the client that message type is passed as an argument, otherwise the message type received from the client is passed. This script may be used to perform other functions such as dynamic DNS updates. -W Specifies that the the hosts map file or /etc/hosts file should not be updated when leases are added or removed. -E Specifies that the ethers map file or/etc/ethers file should not be updated when leases are added or removed. -pn Specifies that a ping be sent before an address is leased to check if a host is using the IP address. If a reply is received then a message is logged in the SYSLOG indicating that "Address <addr> appears to be STOLEN" and a record is added into the database with a lease time of -2 for this IP address. The DHCP administrator should investigate the occurrence and remove the entry in the database with the dhcpdb command once it has been resolved. The DHCP server tries to give out another address to the requesting client. The server attempts to recycle stolen addresses when it runs out of addresses and at a frequency specified by the lease time in the configuration files. -pt ping_timeout Specifies the timeout for the ping. If a reply to a ping is not received in ping_timeout seconds the address is considered to be not taken. The default value for the timeout is 1 second. Note that the server processes requests from other DHCP clients while waiting for the timeout to expire. The server does not block waiting for a reply to a ping request. If blocking pings are required for some reason use the -pb option instead of the -pn option. -pl number_of_outstanding_pings This is the maximum number of pings outstanding. Once this value is reached the server automatically stops sending ping to check if an IP address is taken. The server begins to send ping request once the number of outstanding ping requests falls below this value. It is set to 16 by default. -pd This option is available for backward compatibility with earlier versions. In prior versions (if -x was not specified) while assigning a new address the server would make a gethostbyaddr(3N) call to check if it could assign an IP address to a client for which it had no prior binding. If a binding was found in DNS maps then the particular address was not assigned. In the new version of the server to obtain this older behavior it is necessary to specify the -pd option. If this is not specified the server will not perform a gethostbyaddr(3N) call to check if an IP address is available. 2) Create one or more network configuration files based on the network numbers this server is responsible for. A default configuration file is provided: /var/dhcp/config/config.Default. The new file(s) should be named config.<netnumber> in the same directory. For example, if this server is serving clients on the 192.26.61 network, the configuration file should be named config.192.26.61.0. See below for a list of configuration parameters. 3) The DHCP server also provides MAC address based filtering. The filters are specified in the /var/dhcp/config/dhcpmtab file. MAC addresses can be specified as either complete addresses or as a regular expression to specify a set of addresses. The regular expression syntax is described in the man pages for regcmp(3G). If a DHCP packet from a client with a matching mac address is received then the corresponding actions are taken. Regular expression matching is attempted only if a complete match is not found. The length and hardware type must also match for non-regular expression entries. The length may not match for entries that have regular expressions. Once a match is found the remaining entries are not searched. An example of the configuration file is as follows # dhcpmtab - mac address based filtering for DHCP #len htype mac action 6 1 01:02:03:8a:8b:8c K 0 1 01:02:* L|K The actions can be specified as a combination of L and K. Each of the actions L=log request, and K=drop request, is acted upon in that order. The system log is updated if the L action is requested. If the K action is specified and an L is not specified then the packet is silently dropped. 4) The DHCP server can be configured to send specific user defined options based on the value of the vendor class option sent by the DHCP client. To define new options for this purpose use the /var/dhcp/config/dhcp_option_types file. The format of this file is described as comments within this file. Each line consists of a user selected name, an option number, and the type of the option. The value to be returned by the DHCP server can be specified in the /var/dhcp/config/vendor_options file. See the file for the format. The vendor class and the network number to which option values apply can be specified within the file. 4) Enable the proclaim server by giving the command: chkconfig proclaim_server on 5) Replace the "bootp" entry in /usr/etc/inetd.conf with this line: bootp dgram udp wait root /usr/etc/dhcp_bootp dhcp_bootp -o \ /etc/config/dhcp_bootp.options 6) Issue this command, to restart inetd with /etc/killall -HUP inetd: /etc/killall bootp Configuration Parameters These parameters can be supplied in the configuration file for each network. All of the address fields can either be in standard IP address dot notation, or as a hex number prefixed with a 0x. Most of the fields can be left blank to render them non-applicable. pro_address_counter This integer field specifies the host number for the next IP address. The next address is constructed using the counter and checked through the range of the assignable addresses. The first available address in the range is assigned. pro_host_pfx_counter This integer field specifies the starting number appended to the pro_host_prefix to generate a new hostname. This counter is incremented and a new hostname generated until a unique unused name is found. pro_netmask This field takes a netmask in address form. For more information on netmasks, see the IRIX Admin: Networking and Mail guide. This field specifies the subnetmask used by the client systems. pro_lease This unsigned integer field specifies the client address lease time in seconds. This implementation of the DHCP server assigns 3 year leases by default, and the leases are expired only when explicitly surrendered by the client. pro_host_prefix This string field specifies the default text prefix for generating client hostnames. For example, the prefix iris directs proclaim to generate hostnames of the form iris1, iris2, iris3, and so on. pro_choose_name This boolean (true or false) flag specifies whether the client systems are allowed to choose their own hostname or whether they must be assigned the name given to them by the server. A value of 1 (true) in this field brings up a dialog box on the client system giving the user the option of either taking the name offered by the server or entering a hostname of the user's choice. If the user selects a name, the server allows this name if it passes basic tests for syntax and uniqueness, otherwise the server/client dialogue continues until a mutually acceptable name is submitted. A value of 0 (false) in this field indicates that the user on the client system must accept the name provided by the server. This option can be used with SGI DHCP clients and servers only. The client and server exchange DHCPREQUEST and DHCPOFFER packets until a mutually acceptable name is chosen. This option is being deprecated; use the -H host-name option with SGI clients to specify host names. pro_ipaddress_range This field takes an entry of integers using standard numeric range rules. The entry defines the range of host number addresses assignable by this server. For example, if the value is: 1-3, 5-7, 9. The server issues IP addresses with the base address specified in the configuration filename (such as config.192.26.61.0). Each client is issued an IP address matching the name of the configuration file, suffixed with the numbers 1 through 3, and 5 through 7, and 9, but not 4 or 8. This option can be to restrict the IP addresses offered by a given server. This is very useful if the administrator wants to assign only certain block(s) of addresses using proclaim, or in the absence of a server to server protocol, wishes to have multiple servers serve clients on the same subnet. pro_router_addr This field of comma-separated IP addresses specifies a list of addresses for network routers on the client's subnet. Routers should be listed in the order of preference for their use. pro_bootfile_size Specifies length in 512-octet blocks of the default boot image for the client. pro_time_offset Specifies offset of the client's subnet from Coordinated Universal Time (UTC) in seconds. pro_meritdump_pathname Specifies a file for dumping a core image in case the client crashes. pro_root_pathname Specifies the directory that contains the client's root disk partition. pro_extensions_pathname Specifies a TFTP file containing vendor extensions for bootp. On SGI systems the this file has the same format as the config.netnumber file. pro_TFTPserver_name Specifies a TFTP server for the client. pro_bootfile_name Specifies the pathname of the default boot image for the client. pro_dns_domain This text field specifies the domain name that client should use when resolving hostnames using DNS. pro_dnsserver_addr This field of comma-separated IP addresses specifies a list of addresses for Domain Name System servers available to the client. Servers should be listed in the order of preference for their use. pro_nextserver_addr This IP address specifies the address of the tftp boot server that serves clients on this subnet. This address is returned to the client in the siaddr field. pro_propel_server This IP address specifies the address of the propel server that serves the clients on this subnet. Additional information about propel can be found in Chapter 2, "Software Distribution, User, and Host Management With propel," of the IRIXpro Administrator's Guide. pro_timeserver_addr This field of comma-separated IP addresses specifies a list of addresses for time servers available to the client. Addresses should be listed in the order of preference for their use. pro_logserver_addr Specifies a list of UDP log servers available to the client. pro_cookieserver_addr Specifies a list of RFC 865 cookie servers available to the client. pro_LPRserver_addr Specifies a list of RFC 1179 line printer servers available to the client. pro_resourceserver_addr Specifies a list of RFC 887 resource location servers available to the client. pro_swapserver_addr Specifies the IP address of the client's swap server. pro_nis_domain This text field specifies the name of the client's NIS domain. pro_nisserver_addr This field of comma-separated IP addresses specifies a list of addresses indicating NIS servers available to the client. Servers should be listed in the order of preference for their use. pro_mtu This unsigned short integer field specifies the MTU (maximum transmission unit) to use on the network interface configured in this file. The minimum legal value for the MTU is 68. pro_allnets_local This boolean (true/false) field specifies whether or not the client can assume that all other subnets of the IP network to which the client is connected use the same MTU as the subnet to which the client is directly connected. A value of 1 (true) indicates that all subnets share the same MTU. A value of 0 (false) means that the client should assume that some other subnets can have smaller MTUs. pro_broadcast This IP address field specifies the broadcast address in use on the client's subnet. pro_domask_disc This boolean (true/false) Perform Mask Discovery field specifies whether or not the client should perform subnet mask discovery using ICMP. A value of 1 (true) means that the client should perform mask discovery, while a value of 0 (false) indicates that the client should not perform mask discovery. pro_resp_mask_req This boolean (true/false) Mask Supplier field specifies whether or not the client should respond to subnet mask requests using ICMP. A value of 1 (true) means that the client should respond. A value of 0 (false) in this field means that the client should not respond. pro_static_routes This field takes a comma-separated list of routes in the following form: dest_address - router_address, dest_address2 - router_address2. The static route field specifies a list of static routes that the client should install in its routing cache. If multiple routes to the same destination are specified, they should be listed in descending order of priority. The routes consist of a list of IP address pairs. The first address is the destination address; its counterpart address, separated by a dash (-), is the address of the router to the destination. The default route (0.0.0.0) is an illegal destination for a static route. Serve_This_Network Toggle DHCP serving of this subnet. Other Options The Proclaim server also handles other options listed in RFC 1533. To set values for these options use of the ProclaimServerMgr(1M) graphical user interface is recommended. You can view the standard config.Default file in the /var/dhcp/config directory to see all the supported options. The following are the active lines only from a working config.netnumber configuration file: Serve_This_Network: 1 pro_address_counter: 1 pro_host_pfx_counter: 1 pro_netmask: 255.255.255.0 pro_lease: 604800 pro_host_prefix: n6634 pro_choose_name: 1 pro_ipaddress_range: 1-254 pro_dns_domain: engr.sgi.com pro_nis_domain: engr.sgi.com pro_mtu: 1500 pro_allnets_local: 1 pro_domask_disc: 0 pro_resp_mask_req: 0 NOTES Debugging may be enabled by sending a SIGUSR1 signal to the server and may be disabled by sending SIGUSR2. To increase the level of debugging send multiple SIGUSR1 signals, for example, killall -USR1 dhcp_bootp. Sending a SIGHUP signal to the server will cause the server to reload its configuration files. The dhcp_bootp server database is maintained in ndbm files with (.dir) and (.pag) extensions. The dhcpdb(1M) utility may be used to manage the DHCP database. This utility also allows leases to be imported or exported from/to text files. The /usr/sbin/dbmToEthIP utility can be used to view the contents of the database. It converts the ndbm format to the text format and outputs the text onto the standard output.In case of situations where it is needed to generate the ndbm files the /usr/etc/ethIPToDbm utility may be used to convert a etherToIP file (in text format) to ndbm formatted files. dbmToEthIP and ethIPToDbm may be discontinued in the future. Use dhcpdb instead. To use the bootp server with DHCP style options, specify the options in the /etc/config/bootp-rfc1533.options file. See this file to check what options are supported. To add/replace/delete static IP addresses with dhcp_bootp, see STATIC leases in the the dhcpdb manpage, dhcpdb(1M). FILES /etc/config/dhcp_bootp.options /etc/config/bootp-rfc1533.options /etc/hosts /etc/ethers /etc/bootptab /etc/inetd.conf /var/dhcp/etherToIP /var/dhcp/etherToIP.pag /var/dhcp/etherToIP.dir /var/dhcp/config/config.Default /var/dhcp/config/dhcpmtab /var/dhcp/config/dhcp_option_types /var/dhcp/config/vendor_options /var/dhcp/config/dhcp_ldap.conf /var/dhcp/config/dhcp_ddns.conf SEE ALSO proclaim(1M), ProclaimServerMgr(1M), syslogd(1M), ethers(4), hosts(4). IETF RFCs 1534, 1535, 2131, 2132. Page 10