Section D.1. Compiling dhcpd

The source code for dhcpd can be obtained through the ISC web site at or via anonymous FTP at The name of the compressed tar file will change as new versions are released. However, the latest release should be stored as dhcp-latest.tar.gz. Download, gunzip, and untar the file:

> ftp 

Connected to 

220 FTP server ready. 

Name ( anonymous 

331 Guest login ok, send your complete email address as password. 


230 Guest login ok, access restrictions apply. 

ftp> cd isc/dhcp 

250 CWD command successful. 

ftp> binary 

200 Type set to I. 

ftp> get dhcp-latest.tar.gz 

200 PORT command successful. 

150 Opening BINARY mode data connection for dhcp-latest.tar.gz 

226 Transfer complete. 

181892 bytes received in 17 secs (10 Kbytes/sec) 

ftp> quit 

221 Goodbye. 

> gunzip dhcp-latest.tar.gz 

> tar -xvf dhcp-latest.tar 

drwxrwxr-x mellon/engsrc     0 2001-10-05 00:22:41 dhcp-3.0/

drwxrwxr-x mellon/engsrc     0 2001-10-05 00:22:32 dhcp-3.0/doc/


-rw-rw-r-- mellon/engsrc 150274 2001-08-23 12:25:51 dhcp-3.0/server/failover.c

-rw-rw-r-- mellon/engsrc  67711 2001-08-23 12:30:58 dhcp-3.0/server/mdb.c

-rw-rw-r-- mellon/engsrc  62087 2001-06-21 22:28:51 dhcp-3.0/server/omapi.c

-rw-rw-r-- mellon/engsrc   7612 2001-06-21 22:31:39 dhcp-3.0/server/salloc.c

-rw-rw-r-- mellon/engsrc  34248 2001-06-21 22:35:08 dhcp-3.0/server/stables.c

drwxrwxr-x mellon/engsrc      0 2001-10-05 00:22:42 dhcp-3.0/tests/

drwxrwxr-x mellon/engsrc      0 2001-10-05 00:22:42 dhcp-3.0/tests/failover/

-rw-rw-r-- mellon/engsrc   3585 2001-05-31 16:16:05 dhcp-3.0/tests/failover/

-rw-rw-r-- mellon/engsrc   3463 2001-05-31 16:16:06 dhcp-3.0/tests/failover/

-rwxrwxr-x mellon/engsrc    537 2001-05-31 16:16:07 dhcp-3.0/tests/failover/new-failover

Change to the newly created directory and run configure. configure determines the type of Unix system you're running and creates the correct Makefile for that system. If configure cannot determine what version of Unix you're running, you must build your own Makefile by hand. Next, type make to compile the daemon. Finally, copy the daemon and the manpages to the correct directories:

# cd dhcp-3.0 

# ./configure 

System Type: linux 

# make 

cc -g      -c dhcpd.c -o dhcpd.o 

cc -g      -c dhcp.c -o dhcp.o 

cc -g      -c bootp.c -o bootp.o 


nroff -man dhcpd.conf.5 >dhcpd.conf.cat5 

# make install

The DHCP daemon should compile without errors. If you get compile errors or if configure cannot determine your system configuration, you should consider abandoning the compile and notifying the support group. Join the support group mailing list by going to Once you join, send mail to the mailing list describing your configuration and the exact problem you have. The list is read by most of the people using dhcpd. Someone may have already solved your problem.

Simply installing dhcpd may not be all that is required. Read the README file very carefully. dhcpd runs on a wide variety of systems, including OSF/1, most recent BSD derivatives, Solaris, and Linux. It runs best on OSF/1 and BSD; on other systems it may have some limitations. For example, on both Solaris and Linux, it can support only one network interface. dhcpd also may require some system-specific configuration. Old systems with the Linux 2.0.0 kernel are an excellent example of this. To successfully run dhcpd on one of these old systems, add the following entry to the /etc/hosts table: all-ones

Next, add a specific route for the limited broadcast address,

# route add -host all-ones dev eth0

To reinstall the limited broadcast address in the kernel routing table after each boot, add the following code to a startup script:

# Install the limited broadcast route and start DHCP 

  if [ -f /etc/dhcpd.conf ]; then 

    echo -n " dhcpd" 

    route add -host all-ones dev eth0 

    /usr/sbin/dhcpd   fi

The information needed to complete these extra configuration steps is clearly defined in the README file. Read it before you try to run dhcpd. Of course, this is not required for current versions of Linux, but it provides a good example of the type of special configuration that is sometimes required.