dnsmasq: backport remove ping check of configured dhcp address
authorHans Dedecker <dedeckeh@gmail.com>
Tue, 18 Jul 2017 20:55:29 +0000 (22:55 +0200)
committerHans Dedecker <dedeckeh@gmail.com>
Tue, 18 Jul 2017 21:17:37 +0000 (23:17 +0200)
Remove ping check in DHCPDISCOVER case as too many buggy clients leave
an interface in configured state causing the ping check to fail.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
package/network/services/dnsmasq/Makefile
package/network/services/dnsmasq/patches/011-Remove-ping-check-of-configured-DHCP-address.patch [new file with mode: 0644]

index 0701724..2db57c0 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dnsmasq
 PKG_VERSION:=2.77
-PKG_RELEASE:=7
+PKG_RELEASE:=8
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq/
diff --git a/package/network/services/dnsmasq/patches/011-Remove-ping-check-of-configured-DHCP-address.patch b/package/network/services/dnsmasq/patches/011-Remove-ping-check-of-configured-DHCP-address.patch
new file mode 100644 (file)
index 0000000..67f90e1
--- /dev/null
@@ -0,0 +1,28 @@
+From 1d224949cced9e82440d00b3dbaf32c262bac2ff Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Sat, 8 Jul 2017 20:52:55 +0100
+Subject: [PATCH 1/2] Remove ping-check of configured DHCP address.
+
+This was added in 5ce3e76fbf89e942e8c54ef3e3389facf0d9067a but
+it trips over too many buggy clients that leave an interface configured
+even in DHCPDISCOVER case.
+---
+ src/rfc2131.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/rfc2131.c b/src/rfc2131.c
+index 86230b4..785e15c 100644
+--- a/src/rfc2131.c
++++ b/src/rfc2131.c
+@@ -1040,8 +1040,6 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
+                 else if (have_config(config, CONFIG_DECLINED) &&
+                          difftime(now, config->decline_time) < (float)DECLINE_BACKOFF)
+                   my_syslog(MS_DHCP | LOG_WARNING, _("not using configured address %s because it was previously declined"), addrs);
+-                else if ((!lease || lease->addr.s_addr != config->addr.s_addr) && !do_icmp_ping(now, config->addr, 0, loopback))
+-                  my_syslog(MS_DHCP | LOG_WARNING, _("not using configured address %s because it is in use by another host"), addrs);
+                 else
+                   conf = config->addr;
+               }
+-- 
+2.13.2
+