This is an enhanced version of the CMU BOOTP server which was derived from the original BOOTP server created by Bill Croft at Stanford. This version merges all the enhancements and bug-fixes from the NetBSD, Columbia, and other versions. Please direct questions, comments, and bug reports to the list: <bootp@andrew.cmu.edu> You can subscribe to this mailing list by sending mail to: bootp-request@andrew.cmu.edu (The body of the message should contain: "Add <your-address>") [ From the NetBSD README file: ] BOOTPD is a useful adjunct to the nfs diskless boot EPROM code. The alternatives for initiating a boot of a kernel across a network are to use RARP protocol, or BOOTP protocol. BOOTP is more flexible; it allows additional items of information to be returned to the booting client; it also supports booting across gateways. [ From the CMU README file: ] Notes: 1) BOOTP was originally designed and implemented by Bill Croft at Stanford. Much of the credit for the ideas and the code goes to him. We've added code to support the vendor specific area of the packet as specified in RFC1048. We've also improved the host lookup algorithm and added some extra logging. 2) The server now uses syslog to do logging. Specifically it uses the 4.3bsd version. I've #ifdef'd all of these calls. If you are running 4.2 you should compile without the -DSYSLOG switch. 3) You must update your /etc/services file to contain the following two lines: bootps 67/udp bootp # BOOTP Server bootpc 68/udp # BOOTP Client 4) Edit the bootptab. It has some explanitory comments, and there is a manual entry describing its format (bootptab.5) If you have any questions, just let us know. Construction: [ See the file Installation which is more up-to-date. -gwr ] Make sure all of the files exist first. If anything is missing, please contact either Walt Wimer or Drew Perkins by E-mail or phone. Addresses and phone numbers are listed below. Type 'make'. The options at present are: -DSYSLOG which enables logging code, -DDEBUG which enables table dumping via signals, and -DVEND_CMU which enables the CMU extensions for CMU PC/IP. Edit the bootptab. The man page and the comments in the file should explain how to go about doing so. If you have any problems, let me know. Type 'make install'. This should put all of the files in the right place. Edit your /etc/rc.local or /etc/inetd.conf file to start up bootpd upon reboot. The following is a sample /etc/inetd.conf entry: # BOOTP server bootps dgram udp wait root /usr/etc/bootpd bootpd -i Care and feeding: If you change the interface cards on your host or add new hosts you will need to update /etc/bootptab. Just edit it as before. Once you write it back out, bootpd will notice that there is a new copy and will reread it the next time it gets a request. If your bootp clients don't get a response then several things might be wrong. Most often, the entry for that host is not in the database. Check the hardware address and then check the entry and make sure everything is right. Other problems include the server machine crashing, bad cables, and the like. If your network is very congested you should try making your bootp clients send additional requests before giving up. November 7, 1988 Walter L. Wimer Drew D. Perkins ww0n@andrew.cmu.edu ddp@andrew.cmu.edu (412) 268-6252 (412) 268-8576 4910 Forbes Ave Pittsburgh, PA 15213 [ Contents description by file: ] Announce* Text of release announcements Changes Change history, reverse chronological ConvOldTab.sh Script to convert old (1.x) bootptab files Installation Instructions for building and installing Makefile* for "make" README This file ToDo Things not yet done bootp.h The protocol header file bootpd.8 Manual page for bootpd, boopgw bootpd.c BOOTP server main module bootpd.h header for above (and others) bootpef.8 Manual page for bootpef bootpef.c BOOTP extension file compiler bootpgw.c BOOTP gateway main module bootptab.5 A manual describing the bootptab format bootptab.cmu A sample database file for the server bootptab.mcs Another sample from <gwr@mc.com> bootptest.8 Manual page for bootptest bootptest.c BOOTP test program (fake client) bootptest.h header for above dovend.c Vendor Option builder (for bootpd, bootpef) dovend.h header for above dumptab.c Implements debugging dump for bootpd getether.c For bootptest (not used yet) getether.h header for above getif.c Get network interface info. getif.h header for above hash.c The hash table module hash.h header for above hwaddr.c Hardware address support hwaddr.h header for above lookup.c Internet Protocol address lookup lookup.h header for above patchlevel.h Holds version numbers print-bootp.c Prints BOOTP packets (taken from BSD tcpdump) readfile.c The configuration file-reading routines readfile.h header for above report.c Does syslog-style messages report.h header for above strerror.c Library errno-to-string (for systems lacking it) syslog.conf Sample config file for syslogd(8) syslog.h For systems that lack syslog(3) try*.c Test programs (for debugging) tzone.c Get timezone offset tzone.h header for above
Dynamic IP Version 3 15-Apr-95 If you compile bootp with the -DDYNAMIC option it will include dynamic IP code. When a request for an IP address comes in, bootp checks the normal entrys as it always does. If a matching ethernet entry is not found then it calls the dynamic code to assign a new IP address from a valid range of reserved addresses. When an address is assigned it will be added to the end of the /etc/bootptab file (in human readable form) where it will be found next time. Some notes: Dynamic IP ranges use dummy name entrys starting with ".dynamic-" You may have several Dynamic IP ranges (1 to 32767) Range numbers MUST start with 1 (not 0) Ranges MUST be contigious (if not, bootp won't find the others) Option T254 tells bootp how many host to assign from that range Option T253 tells bootp how to put hostname in bootptab file 0= IP only 1= Host name only (fail if can't lookup) 2= Use name first, otherwise use IP (default) Option T250 is a string of options to be added with new bootptab entrys You should not assign hosts beyond the Class C range (or end of subnet) If no ranges are found no addresses will be assigned Each Dynamic IP address is check in order for existance Ranges can be changed without restarting bootp Dynamic Address will NOT overlap with existing bootp entrys (I check) Dynamic Address CAN overlap with other hosts not assigned from bootp This example defines a range to start with 204.213.176.230 and assign 20 addresses (number is in HEX). .dynamic-1:ip=204.213.176.230:T254=0x14:T250="gw=204.213.176.100" As addresses are assigned that will be added to the end of the file, like: dynamic0.ntplx.net:ha=00009406221F:gw=204.213.176.100: Next time bootp will reassign the same address to the same machine. Note: Currently this is 'Automatic Assignment' not true dynamic assignment. When used with DHCP it will allow for lease, but will not remove the address Only tested on Sparc SunSO 4.1.3 and Linux USE AT YOUR OWN RISK Original Dynamic IP Assignment Code Written by: Andrew Lindh NETPLEX andrew@ntplx.net (203) 233-1111 Updated: 15-Apr-95
README.NEXTSTEP Dec 1997 I made one minor modification to the code to compile cleanly for non-posix nextstep 3.x and 4.x (ala OpenStep for Mach). Many of the source files, included utsname.h, which is the POSIX C uname structure. The only use of it in this code was to obtain the hostname of the bootpd host. I replace every instance of this (at most once in each major source file) with a call to gethostname. A patch is included with the changes I made: bootp-DD2.4.3.2.patch Rex Dieter <rdieter@math.unl.edu> Computer System Manager Department of Mathematics and Statistics University of Nebraska Lincoln http://www.math.unl.edu/~rdieter/
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.