1.\" Copyright (c) 1988, 1989, 1991 Carnegie Mellon University 2.\" 3.\" $FreeBSD: src/libexec/bootpd/bootpd.8,v 1.10.2.5 2001/07/22 12:07:21 dd Exp $ 4.\" $DragonFly: src/libexec/bootpd/bootpd.8,v 1.3 2005/08/05 22:35:10 swildner Exp $ 5.\" 6.Dd November 6, 1993 7.Dt BOOTPD 8 8.Os 9.Sh NAME 10.Nm bootpd , 11.Nm bootpgw 12.Nd Internet Boot Protocol server/gateway 13.Sh SYNOPSIS 14.Nm 15.Op Fl i 16.Op Fl s 17.Op Fl t Ar timeout 18.Op Fl d Ar level 19.Op Fl c Ar chdir-path 20.Oo 21.Ar bootptab 22.Op Ar dumpfile 23.Oc 24.Nm bootpgw 25.Op Fl i 26.Op Fl s 27.Op Fl t Ar timeout 28.Op Fl d Ar level 29.Ar server 30.Sh DESCRIPTION 31.Nm Bootpd 32implements an Internet Bootstrap Protocol (BOOTP) server as defined in 33RFC951, RFC1532, and RFC1533. 34.Nm Bootpgw 35implements a simple BOOTP gateway which can be used to forward 36requests and responses between clients on one subnet and a 37BOOTP server (i.e.\& 38.Nm ) 39on another subnet. While either 40.Nm 41or 42.Nm bootpgw 43will forward BOOTREPLY packets, only 44.Nm bootpgw 45will forward BOOTREQUEST packets. 46.Pp 47One host on each network segment is normally configured to run either 48.Nm 49or 50.Nm bootpgw 51from 52.Xr inetd 8 53by including one of the following lines in the file 54.Pa /etc/inetd.conf : 55.Pp 56.Dl bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab 57.Dl bootps dgram udp wait root /usr/libexec/bootpgw bootpgw server 58.Pp 59This mode of operation is referred to as "inetd mode" and causes 60.Nm 61(or 62.Nm bootpgw ) 63to be started only when a boot request arrives. If it does not 64receive another packet within fifteen minutes of the last one 65it received, it will exit to conserve system resources. The 66.Fl t 67option controls this timeout (see OPTIONS). 68.Pp 69It is also possible to run 70.Nm 71(or 72.Nm bootpgw ) 73in "standalone mode" (without 74.Xr inetd 8 ) 75by simply invoking it from a shell like any other regular command. 76Standalone mode is particularly useful when 77.Nm 78is used with a large configuration database, where the start up 79delay might otherwise prevent timely response to client requests. 80(Automatic start up in standalone mode can be done by invoking 81.Nm 82from within 83.Pa /etc/rc.local , 84for example.) 85Standalone mode is less useful for 86.Nm bootpgw 87which 88has very little start up delay because 89it does not read a configuration file. 90.Pp 91Either program automatically detects whether it was invoked from inetd 92or from a shell and automatically selects the appropriate mode. 93The 94.Fl s 95or 96.Fl i 97option may be used to force standalone or inetd mode respectively 98(see OPTIONS). 99.Sh OPTIONS 100The following options are available: 101.Bl -tag -width indent 102.It Fl t Ar timeout 103Specify the 104.Ar timeout 105value (in minutes) that a 106.Nm 107or 108.Nm bootpgw 109process will wait for a BOOTP packet before exiting. 110If no packets are received for 111.Ar timeout 112minutes, then the program will exit. 113A timeout value of zero means "run forever". 114In standalone mode, this option is forced to zero. 115.It Fl d Ar debug-level 116Set the 117.Ar debug-level 118variable that controls the amount of debugging messages generated. 119For example, 120.Fl d Ns 4 121or 122.Fl d 1234 will set the debugging level to 4. 124For compatibility with older versions of 125.Nm , 126omitting the numeric parameter (i.e. just 127.Fl d Ns ) 128will simply increment the debug level by one. 129.It Fl c Ar chdir-path 130Set the current directory used by 131.Nm 132while checking the existence and size of client boot files. This is 133useful when client boot files are specified as relative pathnames, and 134.Nm 135needs to use the same current directory as the TFTP server 136(typically 137.Pa /tftpboot ) . 138This option is not recognized by 139.Nm bootpgw . 140.It Fl i 141Force inetd mode. This option is obsolete, but remains for 142compatibility with older versions of 143.Nm . 144.It Fl s 145Force standalone mode. This option is obsolete, but remains for 146compatibility with older versions of 147.Nm . 148.It Ar bootptab 149Specify the name of the configuration file from which 150.Nm 151loads its database of known clients and client options 152.No ( Nm 153only). 154.It Ar dumpfile 155Specify the name of the file that 156.Nm 157will dump its internal database into when it receives a 158SIGUSR1 signal 159.No ( Nm 160only). This option is only recognized if 161.Nm 162was compiled with the -DDEBUG flag. 163.It Ar server 164Specify the name of a BOOTP server to which 165.Nm bootpgw 166will forward all BOOTREQUEST packets it receives 167.Pf ( Nm bootpgw 168only). 169.El 170.Sh OPERATION 171Both 172.Nm 173and 174.Nm bootpgw 175operate similarly in that both listen for any packets sent to the 176.Em bootps 177port, and both simply forward any BOOTREPLY packets. 178They differ in their handling of BOOTREQUEST packets. 179.Pp 180When 181.Nm bootpgw 182is started, it determines the address of a BOOTP server 183whose name is provided as a command line parameter. When 184.Nm bootpgw 185receives a BOOTREQUEST packet, it sets the "gateway address" 186and "hop count" fields in the packet and forwards the packet 187to the BOOTP server at the address determined earlier. 188Requests are forwarded only if they indicate that 189the client has been waiting for at least three seconds. 190.Pp 191When 192.Nm 193is started it reads a configuration file, (normally 194.Pa /etc/bootptab ) 195that initializes the internal database of known clients and client 196options. This internal database is reloaded 197from the configuration file when 198.Nm 199receives a hangup signal (SIGHUP) or when it discovers that the 200configuration file has changed. 201.Pp 202When 203.Nm 204receives a BOOTREQUEST packet, it 205.\" checks the modification time of the 206.\" configuration file and reloads the database if necessary. Then it 207looks for a database entry matching the client request. 208If the client is known, 209.Nm 210composes a BOOTREPLY packet using the database entry found above, 211and sends the reply to the client (possibly using a gateway). 212If the client is unknown, the request is discarded 213(with a notice if debug > 0). 214.Pp 215If 216.Nm 217is compiled with the -DDEBUG option, receipt of a SIGUSR1 signal causes 218it to dump its internal database to the file 219.Pa /tmp/bootpd.dump 220or the dumpfile specified as a command line parameter. 221.Pp 222During initialization, both programs 223determine the UDP port numbers to be used by calling 224.Xr getservbyname 3 225(which normally uses 226.Pa /etc/services ) . 227Two service names (and port numbers) are used: 228.Pp 229.Dl bootps BOOTP Server listening port 230.Dl bootpc BOOTP Client destination port 231.Pp 232If the port numbers cannot be determined using 233.Xr getservbyname 3 234then the values default to bootps=67 and bootpc=68. 235.Sh FILES 236.Bl -tag -width /tmp/bootpd.dump -compact 237.It Pa /etc/bootptab 238Database file read by 239.Nm . 240.It Pa /tmp/bootpd.dump 241Debugging dump file created by 242.Nm . 243.It Pa /etc/services 244Internet service numbers. 245.It Pa /tftpboot 246Current directory typically used by the TFTP server and 247.Nm . 248.El 249.Sh BUGS 250Individual host entries must not exceed 1024 characters. 251.Sh CREDITS 252This distribution is currently maintained by 253.An Walter L. Wimer Aq walt+@cmu.edu . 254.Pp 255The original BOOTP server was created by 256.An Bill Croft 257at Stanford University in January 1986. 258.Pp 259The current version of 260.Nm 261is primarily the work of 262.An David Kovar , 263.An Drew D. Perkins , 264and 265.An Walter L. Wimer , 266at Carnegie Mellon University. 267.Pp 268Enhancements and bug-fixes have been contributed by: 269.Pp 270(in alphabetical order) 271.Pp 272.An -split 273.An Danny Backx Aq db@sunbim.be 274.An John Brezak Aq brezak@ch.hp.com 275.An Frank da Cruz Aq fdc@cc.columbia.edu 276.An David R. Linn Aq drl@vuse.vanderbilt.edu 277.An Jim McKim Aq mckim@lerc.nasa.gov 278.An Gordon W. Ross Aq gwr@mc.com 279.An Jason Zions Aq jazz@hal.com . 280.Sh "SEE ALSO" 281.Xr bootptab 5 , 282.Xr inetd 8 , 283.Xr tftpd 8 284.Pp 285DARPA Internet Request For Comments: 286.Bl -tag -width RFC1533 -compact 287.It RFC951 288Bootstrap Protocol 289.It RFC1532 290Clarifications and Extensions for the Bootstrap Protocol 291.It RFC1533 292DHCP Options and BOOTP Vendor Extensions 293.El 294