Hosts that migrate from one network to another could request their
old IP address which might be already in use by another statically
configured host. Currently non-authoritative dnsmasq servers will
ignore such requests, but ISC DHCP client will send discovery packets
next carrying the same requested IP address and dnsmasq will end up
allocating a new lease for it without checking first if is already
used by another host.
---
 src/rfc2131.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/rfc2131.c b/src/rfc2131.c
index 6a8f0db..9987745 100644
--- a/src/rfc2131.c
+++ b/src/rfc2131.c
@@ -1141,10 +1141,12 @@ size_t dhcp_reply(struct dhcp_context *context, char 
*iface_name, int int_index,
          else
            {
              /* INIT-REBOOT */
-             if (!lease && !option_bool(OPT_AUTHORITATIVE))
-               return 0;
-             
-             if (lease && lease->addr.s_addr != mess->yiaddr.s_addr)
+             if (!lease)
+               {
+                 if (!option_bool(OPT_AUTHORITATIVE))
+                   message = _("lease not found");
+               }
+             else if (lease->addr.s_addr != mess->yiaddr.s_addr)
                message = _("wrong address");
            }
        }
-- 
2.7.4


_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss

Reply via email to