Apply by doing:
       cd /usr/src
       patch -p0 < 016_dhcpd.patch

And then rebuild and install file:
       cd usr.sbin/dhcpd
       make obj
       make cleandir
       make depend
       make
       make install

Index: usr.sbin/dhcpd/options.c
===================================================================
RCS file: /cvs/src/usr.sbin/dhcpd/options.c,v
retrieving revision 1.6
retrieving revision 1.6.8.1
diff -u -p -r1.6 -r1.6.8.1
--- usr.sbin/dhcpd/options.c    21 Sep 2004 04:07:04 -0000      1.6
+++ usr.sbin/dhcpd/options.c    9 Oct 2007 16:44:55 -0000       1.6.8.1
@@ -1,4 +1,4 @@
-/*     $OpenBSD: options.c,v 1.6 2004/09/21 04:07:04 david Exp $       */
+/*     $OpenBSD: options.c,v 1.6.8.1 2007/10/09 16:44:55 ckuethe Exp $ */

/* DHCP options parsing and reassembly. */

@@ -225,9 +225,12 @@ cons_options(struct packet *inpacket, st
           inpacket &&
           inpacket->options[DHO_DHCP_MAX_MESSAGE_SIZE].data &&
           (inpacket->options[DHO_DHCP_MAX_MESSAGE_SIZE].len >=
-           sizeof(u_int16_t)))
+           sizeof(u_int16_t))) {
               mms = getUShort(
                   inpacket->options[DHO_DHCP_MAX_MESSAGE_SIZE].data);
+               if (mms < 576)
+                       mms = 576;      /* mms must be >= minimum IP MTU */
+       }

       if (mms)
               main_buffer_size = mms - DHCP_FIXED_LEN;