X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fdhcpv4.c;h=d978da8c7fa003416e951efdb65b68c2390e684c;hb=aa5659eb06a386ddf2bc80ad078891820f12c410;hp=7b200cded2b5e70725a8427c0c51b71abd98fa5a;hpb=de90ff1b27ef8e41c819d40d80f0fd6d8be86ded;p=project%2Fodhcpd.git diff --git a/src/dhcpv4.c b/src/dhcpv4.c index 7b200cd..d978da8 100644 --- a/src/dhcpv4.c +++ b/src/dhcpv4.c @@ -334,7 +334,16 @@ static void handle_dhcpv4(void *addr, void *data, size_t len, } else if (reqmsg == DHCPV4_MSG_REQUEST && reqaddr.s_addr && reqaddr.s_addr != htonl(lease->addr)) { msg = DHCPV4_MSG_NAK; - lease = NULL; + /* + * DHCP client requested an IP which we can't offer to him. Probably the + * client changed the network. The reply type is set to DHCPV4_MSG_NAK, + * because the client should not use that IP. + * + * For modern devices we build an answer that includes a valid IP, like + * a DHCPV4_MSG_ACK. The client will use that IP and doesn't need to + * perform additional DHCP round trips. + * + */ } if (reqmsg == DHCPV4_MSG_DECLINE || reqmsg == DHCPV4_MSG_RELEASE)