[Dnsmasq-discuss] [PATCH] DHCPv6 network range is not checked well with dhcp-sequential-ip

Tomas Korbar tkorbar at redhat.com
Mon Mar 23 09:09:03 UTC 2026


Hello everyone,
Is there any chance this patch could be merged?


On Wed, Nov 19, 2025 at 1:47 AM Geert Stappers <stappers at stappers.nl> wrote:

> On Tue, Oct 07, 2025 at 07:18:27PM +0200, Petr Menšík via Dnsmasq-discuss
> wrote:
> > Hello Simon and everyone,
> >
> > I am sending this patch on behalf of Tomáš Korbař, who worked on
> > debugging the issue and even written a test [1] to verify it works. Test
> > is written in our shell based beakerlib, but I think is readable enough
> > even in basic form.
>
> I'm sending this reminder.
> Because there was no-follow-up yet.
>
>
> > Currentdhcp-range does not work well in case DHCP client would refuse the
> > offered address. When this happens, current dnsmasq does not even stop at
> > maximal address specified. This change adds similar check like when no
> > dhcp-sequential-ip is used. Tomáš tested it already, but would anyone
> mind
> > testing it also? If there is no regression or need to adjust it, would
> you
> > mind merging it? Thank you in advance! Cheers, Petr
> > 1.
> https://gitlab.com/redhat/centos-stream/tests/dnsmasq/-/merge_requests/6
> >
> > --
> > Petr Menšík
> > Senior Software Engieer, RHEL
> > Red Hat, https://www.redhat.com/
> > PGP: DFCF908DB7C87E8E529925BC4931CA5B6C9FC5CB
>
> > From 913472864bdcd5b7bb01c31ff27706b6dfbb99a2 Mon Sep 17 00:00:00 2001
> > From: Tomas Korbar <tkorbar at redhat.com>
> > Date: Tue, 7 Oct 2025 19:12:00 +0200
> > Subject: [PATCH] Fix obeying dhcp-range if dhcp-sequential-ip and IPV6
> is used
> >
> > Previously starting position for searching the next free address
> > in IPV6 range was no checked whether it is in bounds. This
> > commit adds modulo operation like when dhcp-sequential-ip is
> > not used to ensure dnsmasq does not offer out of range address.
> > ---
> >  src/dhcp6.c | 17 ++++++++---------
> >  1 file changed, 8 insertions(+), 9 deletions(-)
> >
> > diff --git a/src/dhcp6.c b/src/dhcp6.c
> > index 482caf7d..99cc77b2 100644
> > --- a/src/dhcp6.c
> > +++ b/src/dhcp6.c
> > @@ -522,27 +522,26 @@ struct dhcp_context *address6_allocate(struct
> dhcp_context *context,  unsigned c
> >       continue;
> >        else
> >       {
> > +       u64 range = 1 + addr6part(&c->end6) - addr6part(&c->start6);
> > +       u64 offset = c->addr_epoch;
> >         if (!temp_addr && option_bool(OPT_CONSEC_ADDR))
> >           {
> >             /* seed is largest extant lease addr in this context,
> >                skip addresses equal to the number of addresses rejected
> >                by clients. This should avoid the same client being
> offered the same
> >                address after it has rjected it. */
> > -           start = lease_find_max_addr6(c) + 1 + serial + c->addr_epoch;
> > +           offset += lease_find_max_addr6(c) - addr6part(&c->start6) +
> 1 + serial;
> >             if (c->addr_epoch)
> >               c->addr_epoch--;
> >           }
> >         else
> >           {
> > -           u64 range = 1 + addr6part(&c->end6) - addr6part(&c->start6);
> > -           u64 offset = j + c->addr_epoch;
> > -
> > -           /* don't divide by zero if range is whole 2^64 */
> > -           if (range != 0)
> > -             offset = offset % range;
> > -
> > -           start = addr6part(&c->start6) + offset;
> > +           offset += j;
> >           }
> > +       /* don't divide by zero if range is whole 2^64 */
> > +       if (range != 0)
> > +             offset = offset % range;
> > +       start = addr6part(&c->start6) + offset;
> >
> >         /* iterate until we find a free address. */
> >         addr = start;
> > --
> > 2.51.0
> >
>
> Groeten
> Geert Stappers
> Picking up some patches
> --
> Silence is hard to parse
>
> _______________________________________________
> Dnsmasq-discuss mailing list
> Dnsmasq-discuss at lists.thekelleys.org.uk
> https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/attachments/20260323/1d8d6f6c/attachment.htm>


More information about the Dnsmasq-discuss mailing list