Re: [Dnsmasq-discuss] [PATCH] fix entries in /etc/hosts disabling static leases

2019-01-16 Thread Kevin Darbyshire-Bryant


> On 12 Jan 2019, at 21:55, Steven Siloti  wrote:
> 
> It is possible for a config entry to have one address family specified by a
> dhcp-host directive and the other added from /etc/hosts. This is especially
> common on OpenWrt because it uses odhcpd for DHCPv6 and IPv6 leases are
> imported into dnsmasq via a hosts file.

FYI: I’ve just backported this patch (and the missing brackets silly) to 
Openwrt master where it has apparently already solved one of our other 
developer’s dhcp lease mystery.

Good catch!  How on earth did you spot it?! :-)

Will wait a couple of days in case of unexpected fallout before updating 
openwrt-18.06.

Cheers,

Kevin D-B

012C ACB2 28C6 C53E 9775  9123 B3A2 389B 9DE2 334A

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


Re: [Dnsmasq-discuss] [PATCH] fix entries in /etc/hosts disabling static leases

2019-01-15 Thread Kaas Baichtal
Hi,

I tried to install this patch manually to my 2.80 and got a segfault that
prevented dnsmasq running. I also tried git cloning the master and
installing that instead but got the same result. Any suggestions? I could
really use this fix. Thank you.

--Kaas



---
>
>Re: [Dnsmasq-discuss] [PATCH] fix entries in /etc/hosts disabling static
leases
>
>Simon Kelley Sun, 13 Jan 2019 15:32:43 -0800
>
>Patch applied.
>
>
>Cheers,
>
>Simon.
>
>
>
>On 12/01/2019 21:55, Steven Siloti wrote:
>> It is possible for a config entry to have one address family specified by
a
>> dhcp-host directive and the other added from /etc/hosts. This is
especially
>> common on OpenWrt because it uses odhcpd for DHCPv6 and IPv6 leases are
>> imported into dnsmasq via a hosts file.
>> 
>> To handle this case there need to be separate *_HOSTS flags for IPv4 and
IPv6.
>> Otherwise when the hosts file is reloaded it will clear the
CONFIG_ADDR(6) 
>> flag
>> which was set by the dhcp-host directive.
>> ---
>



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


Re: [Dnsmasq-discuss] [PATCH] fix entries in /etc/hosts disabling static leases

2019-01-13 Thread Simon Kelley
Patch applied.


Cheers,

Simon.



On 12/01/2019 21:55, Steven Siloti wrote:
> It is possible for a config entry to have one address family specified by a
> dhcp-host directive and the other added from /etc/hosts. This is especially
> common on OpenWrt because it uses odhcpd for DHCPv6 and IPv6 leases are
> imported into dnsmasq via a hosts file.
> 
> To handle this case there need to be separate *_HOSTS flags for IPv4 and IPv6.
> Otherwise when the hosts file is reloaded it will clear the CONFIG_ADDR(6) 
> flag
> which was set by the dhcp-host directive.
> ---

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


[Dnsmasq-discuss] [PATCH] fix entries in /etc/hosts disabling static leases

2019-01-12 Thread Steven Siloti
It is possible for a config entry to have one address family specified by a
dhcp-host directive and the other added from /etc/hosts. This is especially
common on OpenWrt because it uses odhcpd for DHCPv6 and IPv6 leases are
imported into dnsmasq via a hosts file.

To handle this case there need to be separate *_HOSTS flags for IPv4 and IPv6.
Otherwise when the hosts file is reloaded it will clear the CONFIG_ADDR(6) flag
which was set by the dhcp-host directive.
---
 src/dhcp-common.c | 8 ++--
 src/dnsmasq.h | 1 +
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/dhcp-common.c b/src/dhcp-common.c
index d1254d9..7eb3761 100644
--- a/src/dhcp-common.c
+++ b/src/dhcp-common.c
@@ -372,7 +372,11 @@ void dhcp_update_configs(struct dhcp_config *configs)
 
   for (config = configs; config; config = config->next)
 if (config->flags & CONFIG_ADDR_HOSTS)
-  config->flags &= ~(CONFIG_ADDR | CONFIG_ADDR6 | CONFIG_ADDR_HOSTS);
+  config->flags &= ~(CONFIG_ADDR | CONFIG_ADDR_HOSTS);
+#ifdef HAVE_DHCP6
+if (config->flags & CONFIG_ADDR6_HOSTS)
+  config->flags &= ~(CONFIG_ADDR6 | CONFIG_ADDR6_HOSTS);
+#endif
 
 #ifdef HAVE_DHCP6 
  again:  
@@ -421,7 +425,7 @@ void dhcp_update_configs(struct dhcp_config *configs)
(!(conf_tmp = config_find_by_address6(configs, 
>addr.addr6, 128, 0)) || conf_tmp == config))
  {
memcpy(>addr6, >addr.addr6, IN6ADDRSZ);
-   config->flags |= CONFIG_ADDR6 | CONFIG_ADDR_HOSTS;
+   config->flags |= CONFIG_ADDR6 | CONFIG_ADDR6_HOSTS;
continue;
  }
 #endif
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
index 95559c7..0dc1de9 100644
--- a/src/dnsmasq.h
+++ b/src/dnsmasq.h
@@ -789,6 +789,7 @@ struct dhcp_config {
 #define CONFIG_BANK   2048/* from dhcp hosts file */
 #define CONFIG_ADDR6  4096
 #define CONFIG_WILDCARD   8192
+#define CONFIG_ADDR6_HOSTS   16384/* address added by from /etc/hosts */
 
 struct dhcp_opt {
   int opt, len, flags;
-- 
2.20.1


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