udhcp Server/Client Package udhcp Server/Client Package The udhcp Server/Client Package (licensed under the GPL -- see COPYING for details) was originally designed to run on a NETtel (which runs on Greg Ungerer's uClinux-coldfire linux port). Call for testing The 0.9.x version of udhcp is basically a complete rewrite of the previous versions and has matured very quickly. I'd like to get a list together of both known interoptability, and platforms that udhcp compiles/works on. I've noticed that win98 often requests unicast packets when it can only receive broadcast packets, so I started a unicast blacklist within the server, and I'm suspected that win95 will go in there too. If I notice that this behavior is too widespread, I'll probably just drop unicasting altogether. As soon as the list is more or less complete, I'll release a stable version of udhcp Client Interoptability list Server Interoptability list Working client platforms Working server platforms Download Download the latest version (includes client): udhcp-0.9.7.tar.gz (42k) 26 May, 2002 Download the CVS version of udhcp or browse the CVS. Download on old version of udhcp: dhcpd-0.8.25.tgz (22k) 20 January, 2000 Download a windows port by Daniel Parnell dhcpd-win-0.8.25.tgz (65k) 6 April, 2000 Download the old development version: dhcpd-0.8.29.tgz (22k) 6 April, 2000 0.9.7 (020526) Use add_lease in read_leases, sanitizes leases more, and clears out exprired ones if there is no more room (me) Moved udhcpd.leases to /var/lib/misc/udhcpd.leases (Debian bug #147747) Change (obsolete) AF_INET in arping.c to PF_PACKET (Debian bug #127049) Added script hook for DHCPNAK (nak), as well as providing the message option (me) Generate the paramaters request list by seeing what options in options.c are ored with OPTION_REQ in options.c Fix dhcp renew forgetfullness on client (bug #1230) Fix dhcp release bug on client (bug #1231) Set option request list for DHCP renew (bug #1233) Set BOOTREQUEST/REPLY properly Change client-identifier field to popularly expected behavior (me) Only reopen port on errors (me) Change fork/close/setsid structures to daemon() (me) Allow user to specify udhcpd config file at run time (Steven, me) Write pidfile after changing it (Steven CTR Carr) Added env var docs to udhcpc man page (Matt) Standardized lowercase udhcp in documentation (me) Accept packets without a UDP checksum (me) Accept packets with extra garbage (me) Better error handling in files.c (me) Combined read_interface function to reduce COMBINED_BINARY size (me) Drop calc_length(), some servers choke on smaller packets (me) Try to clean some fat out (me) 0.9.6 (011001) Added bootp paramaters to server (me) Added bootp paramaters to client (me) Added vendor id to client (me) Better pidfile handling in client and server (me) Added man pages (Matt Kraai) 0.9.5 (010914) Fixed $HOME and $PATH env passing (me) Fixed client to only listen for raw packets on correct interface (me) added --quit,-q option to quit after a lease is obtained (me) Fixed 100% CPU utilization by client when interface is down (me) 0.9.4 (010827) Force broadcast to broken clients that request unicast (ie, MSFT 98) (me) Make install rules (Adam J. Richter) One scripts, instead of many (Adam) Removed script paramater info files (env vars only) (Adam) Controlling of forking behavior in client (Adam) General script.c/dhcpc.c cleanups (Adam) 0.9.3 (010820) Increased debugging verbosity (me) Cut trailing whitespace when reading config file (me) added hostname option to client (me) fixed a strncpy bug in script.c (me) fixed a leaky socket in dhcpc.c (me) fixed a leaky socket in dhcpd.c (me) 0.9.2 (010810) Added raw sockets to client (me) alignment fixes (Mark Huang) compiler warning fixes (Mark Huang) client now sends parameter list (Mark Huang/me) added ipttl option Does now not request broadcast packets 0.9.1 (010806) Added udhcpc client reorganized functions/files listening socket now only binds to one interface 0.9.0 (010720) Major rewrite, current changes, goals: should not segfault on bogus packets. Options can be read from sname and file fields. supports all DHCP messages (release, decline, inform). IP block is now specified by a range of IP's. Leases file now contains lease time (relative, or absolute). Just about any DHCP option is now supported. DNS entries are no longer read from resolv.conf Lease file can be written periodically when the process receives a SIGUSR1 arpping should be supported on all arches. support for DHCP relays. DHCP messages can be unicast if the client requests it. many, many, many other things. Development is quite active right now, so I'd really like to know what you think. Why would I want to use the udhcp server/client The udhcp server/client is targeted deliberately at embedded environments... Other linux DHCP servers out there (such as the ISC DHCP server) are targeted at larger systems such as PCs (with more RAM/disk space/etc.). As a result, the udhcp package does not have as large a feature set as some of these DHCP packages. Compiled against uClibc, both the server and client binaries are around 17k and when compiled as one combined binary, has a size of 27k. udhcp is a perfect fit for embedded systems requring DHCP capabilities. The udhcp server lease file is in binary format making the additional storage space required for IP and MAC addresses minimal. It also has the option of storing lease times in absolute form, or relative form, for systems without a clock. The lease file can also be saved periodically or by using a signal for systems with flash memory. The client accepts all options on the command line, and calls external scripts to handle the configuration of interfaces to allow for the ultimate flexibility. Documentation The operation is fairly straightforward, and the latest README can be found here. And a sample server config file udhcpd.conf Links uClibc Busybox Lineo SnapGear Other Lineo opensoure projects Sponsors opensource.se Embedded open source consulting in Europe. http://i-netinnovations.com/ Web hosting (they host busybox.net and uclibc.org). Codepoet Consulting Custom Linux, embedded Linux, BusyBox, and uClibc development. Bugs? Submit them. Have a question/comment? Have a patch? Email me: Russ Dill Matthew Ramsay $Id: index.html,v 1.14 2002/08/30 20:21:44 russ Exp $