[Dnsmasq-discuss] [PATCH] Allow specifying a 0.0.0.0 netmask in dhcp-range for relays.

Yuki Nisiwaki uckey.1067 at gmail.com
Mon Mar 12 10:22:24 GMT 2018


Hello Nicolas

I missed this point.....Thanks.
> dhcp-option=option:netmask,255.255.0.0 anyway.

But as you already mentioned, still I have to specify at least 2 dhcp-range
with /1 to cover all subnets since dnsmasq doesn't consider netmask 0 we
intentionally specified.
your patch seems good to me. I hope your patch will be in upstream before
long.

Yuki Nishiwaki


On 12 March 2018 at 18:26, Nicolas Cavallari <
nicolas.cavallari at green-communications.fr> wrote:

> When using a DHCP relay, the netmask in dhcp-range is matched against
> giaddr (or the link selection suboption) to determine on which range the
> address should be allocated.
>
> However, in some cases, you want to ignore this mechanism, because your
> relay, clients and your DHCP server are not in the same subnet, the
> relay do not have addresses on their client interfaces and/or you have
> more complicated matching in place (e.g.  other relay agent information
> suboptions).
>
> The link selection suboption would be a good candidate but this requires
> a duplicate policy/configuration in every relay that matches what the
> DHCP server would select.
>
> Specifying 0.0.0.0 as a netmask is accepted by the parser but is
> rejected by a condition in rfc2131.c, that only checks if
> netmask.s_addr = 0, which can happen if the guessing failed, but can
> also happen if 0.0.0.0 was explicitly specified.
>
> This fixes the condition so that netmask.s_addr = 0 is acceptable
> if it was specified in the configuration.  i.e.  if the
> dhcp context (the considered dhcp range) has the CONTEXT_NETMASK
> flag.
>
> The netmask to be sent to the client can be set with
> dhcp-option=option:netmask,255.255.0.0 anyway.
> ---
> Yuki Nisiwaki's message reminded me of this patch that I use but forgot
> about.
>
>  src/rfc2131.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/rfc2131.c b/src/rfc2131.c
> index c08a8ab..6b2df35 100644
> --- a/src/rfc2131.c
> +++ b/src/rfc2131.c
> @@ -319,7 +319,7 @@ size_t dhcp_reply(struct dhcp_context *context, char
> *iface_name, int int_index,
>
>             /* This section fills in context mainly when a client which is
> on a remote (relayed)
>                network renews a lease without using the relay, after
> dnsmasq has restarted. */
> -           if (netmask.s_addr != 0  &&
> +           if ((netmask.s_addr != 0 || context_tmp->flags &
> CONTEXT_NETMASK) &&
>                 is_same_net(addr, context_tmp->start, netmask) &&
>                 is_same_net(addr, context_tmp->end, netmask))
>               {
> --
> 2.16.2
>
>
> _______________________________________________
> Dnsmasq-discuss mailing list
> Dnsmasq-discuss at lists.thekelleys.org.uk
> http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/attachments/20180312/4f9e4082/attachment.html>


More information about the Dnsmasq-discuss mailing list