Sorry, i don't know (havn't read maybe :) ) how to submit patches. I'll paste here First one ... allows receive DHCP-Inform messages. --- dhcp.c 2008-06-23 02:46:17.000000000 +0300 +++ dhcp_new.c 2008-06-23 02:45:26.000000000 +0300 @@ -190,7 +190,7 @@ if ((packet->data[240] != 53) || (packet->data[241] != 1) || (packet->data[242] == 0) || - (packet->data[242] >= 8)) { + (packet->data[242] > 8)) { fprintf(stderr, "Unknown, or badly formatted DHCP packet\n"); rad_free(&packet); return NULL; Second one ... patches for updating reply->code correctly depending on modules answer(last DHCP-Message-Type update will be in action). Actualy client must!!! supply in some update section DHCP-Message-Type. Otherwise i think no reply at all(not tested) :) . And i think there no need to respond with NAK in reject, fail and other cases (and DECLINE response is client side only). There is no need for that garbage traffic. If module fails then fails. NAK message to client will not help in this case :) Or maybe i don't want to respond at all (ignore) :) --- dhcpd.c 2008-06-23 02:38:57.000000000 +0300 +++ dhcpd_new.c 2008-06-23 02:43:19.000000000 +0300 @@ -46,17 +46,13 @@ switch (rcode) { case RLM_MODULE_OK: case RLM_MODULE_UPDATED: - if (request->packet->code == (PW_DHCP_DISCOVER)) { - request->reply->code = PW_DHCP_OFFER; - break; - - } else if (request->packet->code == PW_DHCP_REQUEST) { - request->reply->code = PW_DHCP_ACK; - break; - } - - /* FALL-THROUGH */ + vp = pairfind(request->reply->vps, DHCP2ATTR(53)); + if (vp) { + request->reply->code = vp->vp_integer + PW_DHCP_OFFSET; + break; + } + break; /* no DHCP-Message-Type in reply, maybe other modules will update.*/ default: case RLM_MODULE_REJECT: case RLM_MODULE_FAIL: