Update, added latest patches and deleted obsolete patch files.
Signed-off-by: Matthias Fischer <matthias.fischer(a)ipfire.org>
---
lfs/dnsmasq | 12 +-
...q-Add-support-to-read-ISC-DHCP-lease-file.patch | 23 +-
.../dnsmasq/001-Debian_init_d_script_fix.patch | 74 ---
...in_PXE_arch_names_and_add_ARM32_and_ARM64.patch | 62 +++
.../dnsmasq/002-Add_--help_to_manpage.patch | 66 ---
...CSAs_affected_by_UEFI_PXE_workaround_code.patch | 25 +
...nd_dhcp_lease_time_to_contrib_lease_tools.patch | 73 ---
...004-Add_contrib_lease-tools_dhcp_release6.patch | 528 ---------------------
...am_nameservers_when_logging_configuration.patch | 85 ----
..._interface_when_--bridge-interface_in_use.patch | 70 ---
10 files changed, 110 insertions(+), 908 deletions(-)
delete mode 100644 src/patches/dnsmasq/001-Debian_init_d_script_fix.patch
create mode 100644 src/patches/dnsmasq/001-Fix_error_in_PXE_arch_names_and_add_ARM32_and_ARM64.patch
delete mode 100644 src/patches/dnsmasq/002-Add_--help_to_manpage.patch
create mode 100644 src/patches/dnsmasq/002-Tweak_CSAs_affected_by_UEFI_PXE_workaround_code.patch
delete mode 100644 src/patches/dnsmasq/003-Move_dhcp_release_and_dhcp_lease_time_to_contrib_lease_tools.patch
delete mode 100644 src/patches/dnsmasq/004-Add_contrib_lease-tools_dhcp_release6.patch
delete mode 100644 src/patches/dnsmasq/005-Limit_number_of_upstream_nameservers_when_logging_configuration.patch
delete mode 100644 src/patches/dnsmasq/006-Fix_for_DHCP_in_transmission_interface_when_--bridge-interface_in_use.patch
diff --git a/lfs/dnsmasq b/lfs/dnsmasq
index feb1789..dc4da18 100644
--- a/lfs/dnsmasq
+++ b/lfs/dnsmasq
@@ -24,7 +24,7 @@
include Config
-VER = 2.76test13
+VER = 2.76rc1
THISAPP = dnsmasq-$(VER)
DL_FILE = $(THISAPP).tar.xz
@@ -43,7 +43,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = bb66cef5b41e0cddf8272b0911855568
+$(DL_FILE)_MD5 = 08c203ee2e0d3ed8babf056b69a6265e
install : $(TARGET)
@@ -73,12 +73,8 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
- cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/001-Debian_init_d_script_fix.patch
- cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/002-Add_--help_to_manpage.patch
- cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/003-Move_dhcp_release_and_dhcp_lease_time_to_contrib_lease_tools.patch
- cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/004-Add_contrib_lease-tools_dhcp_release6.patch
- cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/005-Limit_number_of_upstream_nameservers_when_logging_configuration.patch
- cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/006-Fix_for_DHCP_in_transmission_interface_when_--bridge-interface_in_use.patch
+ cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/001-Fix_error_in_PXE_arch_names_and_add_ARM32_and_ARM64.patch
+ cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/002-Tweak_CSAs_affected_by_UEFI_PXE_workaround_code.patch
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq-Add-support-to-read-ISC-DHCP-lease-file.patch
cd $(DIR_APP) && sed -i src/config.h \
diff --git a/src/patches/dnsmasq-Add-support-to-read-ISC-DHCP-lease-file.patch b/src/patches/dnsmasq-Add-support-to-read-ISC-DHCP-lease-file.patch
index 703e94f..25feb8d 100644
--- a/src/patches/dnsmasq-Add-support-to-read-ISC-DHCP-lease-file.patch
+++ b/src/patches/dnsmasq-Add-support-to-read-ISC-DHCP-lease-file.patch
@@ -42,7 +42,7 @@
--- a/src/dnsmasq.c Thu Jul 30 20:59:06 2015
+++ b/src/dnsmasq.c Wed Dec 16 19:38:32 2015
-@@ -1013,6 +1013,11 @@
+@@ -1016,6 +1016,11 @@
poll_resolv(0, daemon->last_resolv != 0, now);
daemon->last_resolv = now;
@@ -72,7 +72,7 @@
-
--- /dev/null Wed Dec 16 19:48:08 2015
+++ b/src/isc.c Wed Dec 16 19:41:35 2015
-@@ -0,0 +1,251 @@
+@@ -0,0 +1,266 @@
+/* dnsmasq is Copyright (c) 2014 John Volpe, Simon Kelley and
+ Michael Tremer
+
@@ -94,6 +94,12 @@
+ Michael Tremer.
+*/
+
++
++#define _GNU_SOURCE
++
++#include <assert.h>
++#include <stdio.h>
++
+#include "dnsmasq.h"
+
+#ifdef HAVE_ISC_READER
@@ -109,10 +115,18 @@
+
+static struct isc_dhcp_lease* dhcp_lease_new(const char* hostname) {
+ struct isc_dhcp_lease* lease = whine_malloc(sizeof(*lease));
++ if (!lease)
++ return NULL;
+
+ lease->name = strdup(hostname);
+ if (daemon->domain_suffix) {
-+ asprintf(&lease->fqdn, "%s.%s", hostname, daemon->domain_suffix);
++ int r = asprintf(&lease->fqdn, "%s.%s", hostname, daemon->domain_suffix);
++
++ // Handle OOM
++ if (r < 0) {
++ free(lease);
++ return NULL;
++ }
+ }
+ lease->expires = 0;
+ lease->next = NULL;
@@ -285,6 +299,7 @@
+ // and append it to the list.
+ if (!lease) {
+ lease = dhcp_lease_new(hostname);
++ assert(lease);
+
+ lease->next = leases;
+ leases = lease;
@@ -326,7 +341,7 @@
+#endif
--- a/src/option.c Wed Dec 16 19:24:12 2015
+++ b/src/option.c Wed Dec 16 19:42:48 2015
-@@ -1769,7 +1769,7 @@
+@@ -1770,7 +1770,7 @@
ret_err(_("bad MX target"));
break;
diff --git a/src/patches/dnsmasq/001-Debian_init_d_script_fix.patch b/src/patches/dnsmasq/001-Debian_init_d_script_fix.patch
deleted file mode 100644
index 86d0480..0000000
--- a/src/patches/dnsmasq/001-Debian_init_d_script_fix.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 332c41e2ff533649dc48b6bab00804d795f348f5 Mon Sep 17 00:00:00 2001
-From: Simon Kelley <simon(a)thekelleys.org.uk>
-Date: Sun, 1 May 2016 22:36:46 +0100
-Subject: [PATCH] Debian init.d script fix.
-
----
- debian/changelog | 8 +++++---
- debian/init | 14 +++++++-------
- 2 files changed, 12 insertions(+), 10 deletions(-)
-
-diff --git a/debian/changelog b/debian/changelog
-index e727406..8a0341c 100644
---- a/debian/changelog
-+++ b/debian/changelog
-@@ -3,19 +3,21 @@ dnsmasq (2.76-1) unstable; urgency=low
- * New upstream. (closes: #798586)
- * Use /run/dnsmasq directly, rather than relying on link from /var/run
- to avoid problems before /var is mounted. (closes: #800351)
--
-+ * Test for the existance of /usr/share/doc/dnsmasq rather then
-+ /etc/dnsmasq.d/README in the daemon startup script. (closes: #819856)
-+
- -- Simon Kelley <simon(a)thekelleys.org.uk> Thur, 10 Sep 2015 23:07:21 +0000
-
- dnsmasq (2.75-1) unstable; urgency=low
-
- * New upstream. (closes: #794095)
--
-+
- -- Simon Kelley <simon(a)thekelleys.org.uk> Thur, 30 Jul 2015 20:58:31 +0000
-
- dnsmasq (2.74-1) unstable; urgency=low
-
- * New upstream. (LP: #1468611)
--
-+
- -- Simon Kelley <simon(a)thekelleys.org.uk> Wed, 15 Jul 2015 21:54:11 +0000
-
- dnsmasq (2.73-2) unstable; urgency=low
-diff --git a/debian/init b/debian/init
-index 6afe191..10b277c 100644
---- a/debian/init
-+++ b/debian/init
-@@ -8,7 +8,8 @@
- # Description: DHCP and DNS server
- ### END INIT INFO
-
--set +e # Don't exit on error status
-+# Don't exit on error status
-+set +e
-
- PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
- DAEMON=/usr/sbin/dnsmasq
-@@ -29,12 +30,11 @@ if [ -r /etc/default/locale ]; then
- export LANG
- fi
-
--# /etc/dnsmasq.d/README is a non-conffile installed by the dnsmasq package.
--# Should the dnsmasq package be removed, the following test ensures that
--# the daemon is no longer started, even if the dnsmasq-base package is
--# still in place.
--test -e /etc/dnsmasq.d/README || exit 0
--
-+# The following test ensures the dnsmasq service is not started, when the
-+# package 'dnsmasq' is removed but not purged, even if the dnsmasq-base
-+# package is still in place.
-+test -d /usr/share/doc/dnsmasq || exit 0
-+
- test -x $DAEMON || exit 0
-
- # Provide skeleton LSB log functions for backports which don't have LSB functions.
---
-2.5.5
-
diff --git a/src/patches/dnsmasq/001-Fix_error_in_PXE_arch_names_and_add_ARM32_and_ARM64.patch b/src/patches/dnsmasq/001-Fix_error_in_PXE_arch_names_and_add_ARM32_and_ARM64.patch
new file mode 100644
index 0000000..85a38f6
--- /dev/null
+++ b/src/patches/dnsmasq/001-Fix_error_in_PXE_arch_names_and_add_ARM32_and_ARM64.patch
@@ -0,0 +1,62 @@
+From 68bea10bbfbd5e9ff158ab163c15d8982620d0d3 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon(a)thekelleys.org.uk>
+Date: Wed, 11 May 2016 22:15:06 +0100
+Subject: [PATCH] Fix error in PXE arch names and add ARM32 and ARM64.
+
+---
+ CHANGELOG | 10 +++++++++-
+ man/dnsmasq.8 | 2 +-
+ src/option.c | 3 ++-
+ 3 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/CHANGELOG b/CHANGELOG
+index f3220d8..7012918 100644
+--- a/CHANGELOG
++++ b/CHANGELOG
+@@ -74,7 +74,15 @@ version 2.76
+ To avoid filling logs in configurations which define
+ many upstream nameservers, don't log more that 30 servers.
+ The number to be logged can be changed as SERVERS_LOGGED
+- in src/config.h.
++ in src/config.h.
++
++ Swap the values if BC_EFI and x86-64_EFI in --pxe-service.
++ These were previously wrong due to an error in RFC 4578.
++ If you're using BC_EFI to boot 64-bit EFI machines, you
++ will need to update your config.
++
++ Add ARM32_EFI and ARM64_EFI as valid architectures in
++ --pxe-service.
+
+
+ version 2.75
+diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
+index dacd9ce..68d77a2 100644
+--- a/man/dnsmasq.8
++++ b/man/dnsmasq.8
+@@ -1358,7 +1358,7 @@ functions when supported by a suitable DHCP server.
+ This specifies a boot option which may appear in a PXE boot menu. <CSA> is
+ client system type, only services of the correct type will appear in a
+ menu. The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
+-Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI; an
++Intel_Lean_Client, IA32_EFI, X86-64_EFI, Xscale_EFI, BC_EFI, ARM32_EFI and ARM64_EFI; an
+ integer may be used for other types. The
+ parameter after the menu text may be a file name, in which case dnsmasq acts as a
+ boot server and directs the PXE client to download the file by TFTP,
+diff --git a/src/option.c b/src/option.c
+index 0b35500..d8c57d6 100644
+--- a/src/option.c
++++ b/src/option.c
+@@ -3298,7 +3298,8 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
+ {
+ struct pxe_service *new = opt_malloc(sizeof(struct pxe_service));
+ char *CSA[] = { "x86PC", "PC98", "IA64_EFI", "Alpha", "Arc_x86", "Intel_Lean_Client",
+- "IA32_EFI", "BC_EFI", "Xscale_EFI", "x86-64_EFI", NULL };
++ "IA32_EFI", "x86-64_EFI", "Xscale_EFI", "BC_EFI",
++ "ARM32_EFI", "ARM64_EFI", NULL };
+ static int boottype = 32768;
+
+ new->netid = NULL;
+--
+1.7.10.4
+
diff --git a/src/patches/dnsmasq/002-Add_--help_to_manpage.patch b/src/patches/dnsmasq/002-Add_--help_to_manpage.patch
deleted file mode 100644
index 82de3ee..0000000
--- a/src/patches/dnsmasq/002-Add_--help_to_manpage.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 09217a1a874c654bfd4d29a1097f44435b4c632d Mon Sep 17 00:00:00 2001
-From: Simon Kelley <simon(a)thekelleys.org.uk>
-Date: Tue, 3 May 2016 17:04:35 +0100
-Subject: [PATCH] Add --help to manpage .
-
----
- debian/changelog | 1 +
- man/dnsmasq.8 | 9 ++++++++-
- src/option.c | 2 +-
- 3 files changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/debian/changelog b/debian/changelog
-index 8a0341c..e028f57 100644
---- a/debian/changelog
-+++ b/debian/changelog
-@@ -5,6 +5,7 @@ dnsmasq (2.76-1) unstable; urgency=low
- to avoid problems before /var is mounted. (closes: #800351)
- * Test for the existance of /usr/share/doc/dnsmasq rather then
- /etc/dnsmasq.d/README in the daemon startup script. (closes: #819856)
-+ * Add --help to manpage and mention dhcp6 in summary. (closes: #821226)
-
- -- Simon Kelley <simon(a)thekelleys.org.uk> Thur, 10 Sep 2015 23:07:21 +0000
-
-diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
-index fd4b7c5..dacd9ce 100644
---- a/man/dnsmasq.8
-+++ b/man/dnsmasq.8
-@@ -42,6 +42,13 @@ the configuration file.
- Read and syntax check configuration file(s). Exit with code 0 if all
- is OK, or a non-zero code otherwise. Do not start up dnsmasq.
- .TP
-+.B \-w, --help
-+Display all command-line options.
-+.B --help dhcp
-+will display known DHCPv4 configuration options, and
-+.B --help dhcp6
-+will display DHCPv6 options.
-+.TP
- .B \-h, --no-hosts
- Don't read the hostnames in /etc/hosts.
- .TP
-@@ -317,7 +324,7 @@ instead of the correct NXDOMAIN response. This option tells dnsmasq to
- fake the correct response when it sees this behaviour. As at Sept 2003
- the IP address being returned by Verisign is 64.94.110.11
- .TP
--.B \-B, --ignore-address=<ipaddr>
-+.B --ignore-address=<ipaddr>
- Ignore replies to A-record queries which include the specified address.
- No error is generated, dnsmasq simply continues to listen for another reply.
- This is useful to defeat blocking strategies which rely on quickly supplying a
-diff --git a/src/option.c b/src/option.c
-index c66f401..0b35500 100644
---- a/src/option.c
-+++ b/src/option.c
-@@ -402,7 +402,7 @@ static struct {
- { 'v', 0, NULL, gettext_noop("Display dnsmasq version and copyright information."), NULL },
- { 'V', ARG_DUP, "<ipaddr>,<ipaddr>,<netmask>", gettext_noop("Translate IPv4 addresses from upstream servers."), NULL },
- { 'W', ARG_DUP, "<name>,<target>,...", gettext_noop("Specify a SRV record."), NULL },
-- { 'w', 0, NULL, gettext_noop("Display this message. Use --help dhcp for known DHCP options."), NULL },
-+ { 'w', 0, NULL, gettext_noop("Display this message. Use --help dhcp or --help dhcp6 for known DHCP options."), NULL },
- { 'x', ARG_ONE, "<path>", gettext_noop("Specify path of PID file (defaults to %s)."), RUNFILE },
- { 'X', ARG_ONE, "<integer>", gettext_noop("Specify maximum number of DHCP leases (defaults to %s)."), "&" },
- { 'y', OPT_LOCALISE, NULL, gettext_noop("Answer DNS queries based on the interface a query was sent to."), NULL },
---
-2.5.5
-
diff --git a/src/patches/dnsmasq/002-Tweak_CSAs_affected_by_UEFI_PXE_workaround_code.patch b/src/patches/dnsmasq/002-Tweak_CSAs_affected_by_UEFI_PXE_workaround_code.patch
new file mode 100644
index 0000000..ef85b3c
--- /dev/null
+++ b/src/patches/dnsmasq/002-Tweak_CSAs_affected_by_UEFI_PXE_workaround_code.patch
@@ -0,0 +1,25 @@
+From cbc100fc81183e136f5ed72fec277677d55f9334 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon(a)thekelleys.org.uk>
+Date: Wed, 11 May 2016 22:17:18 +0100
+Subject: [PATCH] Tweak CSAs affected by UEFI PXE workaround code.
+
+---
+ src/rfc2131.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/rfc2131.c b/src/rfc2131.c
+index 42d1ba8..d952e03 100644
+--- a/src/rfc2131.c
++++ b/src/rfc2131.c
+@@ -1994,7 +1994,7 @@ static int pxe_uefi_workaround(int pxe_arch, struct dhcp_netid *netid, struct dh
+ struct pxe_service *service, *found;
+
+ /* Only workaround UEFI archs. */
+- if (pxe_arch != 6 && pxe_arch != 7 && pxe_arch != 8 && pxe_arch != 9)
++ if (pxe_arch < 6)
+ return 0;
+
+ for (found = NULL, service = daemon->pxe_services; service; service = service->next)
+--
+1.7.10.4
+
diff --git a/src/patches/dnsmasq/003-Move_dhcp_release_and_dhcp_lease_time_to_contrib_lease_tools.patch b/src/patches/dnsmasq/003-Move_dhcp_release_and_dhcp_lease_time_to_contrib_lease_tools.patch
deleted file mode 100644
index 6065904..0000000
--- a/src/patches/dnsmasq/003-Move_dhcp_release_and_dhcp_lease_time_to_contrib_lease_tools.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From c6cdf6bbee27d1127847ce7bdff2a22a785f9723 Mon Sep 17 00:00:00 2001
-From: Simon Kelley <simon(a)thekelleys.org.uk>
-Date: Tue, 3 May 2016 21:14:14 +0100
-Subject: [PATCH] Move dhcp_release and dhcp_lease_time to contrib/lease_tools.
-
----
- contrib/{wrt => lease-tools}/Makefile | 0
- contrib/{wrt => lease-tools}/dhcp_lease_time.1 | 0
- contrib/{wrt => lease-tools}/dhcp_lease_time.c | 0
- contrib/{wrt => lease-tools}/dhcp_release.1 | 0
- contrib/{wrt => lease-tools}/dhcp_release.c | 0
- debian/rules | 12 ++++++------
- 6 files changed, 6 insertions(+), 6 deletions(-)
- rename contrib/{wrt => lease-tools}/Makefile (100%)
- rename contrib/{wrt => lease-tools}/dhcp_lease_time.1 (100%)
- rename contrib/{wrt => lease-tools}/dhcp_lease_time.c (100%)
- rename contrib/{wrt => lease-tools}/dhcp_release.1 (100%)
- rename contrib/{wrt => lease-tools}/dhcp_release.c (100%)
-
-diff --git a/contrib/wrt/Makefile b/contrib/lease-tools/Makefile
-similarity index 100%
-rename from contrib/wrt/Makefile
-rename to contrib/lease-tools/Makefile
-diff --git a/contrib/wrt/dhcp_lease_time.1 b/contrib/lease-tools/dhcp_lease_time.1
-similarity index 100%
-rename from contrib/wrt/dhcp_lease_time.1
-rename to contrib/lease-tools/dhcp_lease_time.1
-diff --git a/contrib/wrt/dhcp_lease_time.c b/contrib/lease-tools/dhcp_lease_time.c
-similarity index 100%
-rename from contrib/wrt/dhcp_lease_time.c
-rename to contrib/lease-tools/dhcp_lease_time.c
-diff --git a/contrib/wrt/dhcp_release.1 b/contrib/lease-tools/dhcp_release.1
-similarity index 100%
-rename from contrib/wrt/dhcp_release.1
-rename to contrib/lease-tools/dhcp_release.1
-diff --git a/contrib/wrt/dhcp_release.c b/contrib/lease-tools/dhcp_release.c
-similarity index 100%
-rename from contrib/wrt/dhcp_release.c
-rename to contrib/lease-tools/dhcp_release.c
-diff --git a/debian/rules b/debian/rules
-index 8612092..193b30c 100755
---- a/debian/rules
-+++ b/debian/rules
-@@ -93,7 +93,7 @@ clean:
- $(checkdir)
- rm -rf debian/daemon debian/base debian/utils debian/*~ debian/files debian/substvars debian/utils-substvars
- make clean
-- make -C contrib/wrt clean
-+ make -C contrib/lease-tools clean
-
- binary-indep: checkroot
- $(checkdir)
-@@ -184,12 +184,12 @@ ifeq ($(DEB_HOST_ARCH_OS),linux)
- -d debian/utils/usr/share/man/man1 \
- -d debian/utils/usr/bin \
- -d debian/utils/usr/share/doc/dnsmasq-utils
-- make -C contrib/wrt PREFIX=/usr DESTDIR=`pwd`/debian/utils CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" COPTS="$(DEB_COPTS)" CC=gcc
-- install -m 755 contrib/wrt/dhcp_release debian/utils/usr/bin/dhcp_release
-- install -m 644 contrib/wrt/dhcp_release.1 debian/utils/usr/share/man/man1/dhcp_release.1
-+ make -C contrib/lease-tools PREFIX=/usr DESTDIR=`pwd`/debian/utils CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" COPTS="$(DEB_COPTS)" CC=gcc
-+ install -m 755 contrib/lease-tools/dhcp_release debian/utils/usr/bin/dhcp_release
-+ install -m 644 contrib/lease-tools/dhcp_release.1 debian/utils/usr/share/man/man1/dhcp_release.1
- gzip -9n debian/utils/usr/share/man/man1/dhcp_release.1
-- install -m 755 contrib/wrt/dhcp_lease_time debian/utils/usr/bin/dhcp_lease_time
-- install -m 644 contrib/wrt/dhcp_lease_time.1 debian/utils/usr/share/man/man1/dhcp_lease_time.1
-+ install -m 755 contrib/lease-tools/dhcp_lease_time debian/utils/usr/bin/dhcp_lease_time
-+ install -m 644 contrib/lease-tools/dhcp_lease_time.1 debian/utils/usr/share/man/man1/dhcp_lease_time.1
- install -m 644 debian/copyright debian/utils/usr/share/doc/dnsmasq-utils/copyright
- install -m 644 debian/changelog debian/utils/usr/share/doc/dnsmasq-utils/changelog.Debian
- gzip -9n debian/utils/usr/share/doc/dnsmasq-utils/changelog.Debian
---
-2.5.5
-
diff --git a/src/patches/dnsmasq/004-Add_contrib_lease-tools_dhcp_release6.patch b/src/patches/dnsmasq/004-Add_contrib_lease-tools_dhcp_release6.patch
deleted file mode 100644
index 6426d39..0000000
--- a/src/patches/dnsmasq/004-Add_contrib_lease-tools_dhcp_release6.patch
+++ /dev/null
@@ -1,528 +0,0 @@
-From 69cbf78bb676e493f0a4cd6dc7ffec0fcafafed5 Mon Sep 17 00:00:00 2001
-From: Simon Kelley <simon(a)thekelleys.org.uk>
-Date: Tue, 3 May 2016 21:33:38 +0100
-Subject: [PATCH] Add contrib/lease-tools/dhcp_release6
-
----
- CHANGELOG | 6 +
- contrib/lease-tools/Makefile | 4 +-
- contrib/lease-tools/dhcp_release6.1 | 38 ++++
- contrib/lease-tools/dhcp_release6.c | 416 ++++++++++++++++++++++++++++++++++++
- debian/rules | 3 +
- 5 files changed, 465 insertions(+), 2 deletions(-)
- create mode 100644 contrib/lease-tools/dhcp_release6.1
- create mode 100644 contrib/lease-tools/dhcp_release6.c
-
-diff --git a/CHANGELOG b/CHANGELOG
-index aa53fba..7d4a061 100644
---- a/CHANGELOG
-+++ b/CHANGELOG
-@@ -65,6 +65,12 @@ version 2.76
- --servers-file to define upstream DNS servers. Thanks to
- Scott Bonar for the bug report.
-
-+ Move the dhcp_release and dhcp_lease_time tools from
-+ contrib/wrt to contrib/lease-tools.
-+
-+ Add dhcp_release6 to contrib/lease-tools. Many thanks
-+ to Sergey Nechaev for this code.
-+
-
- version 2.75
- Fix reversion on 2.74 which caused 100% CPU use when a
-diff --git a/contrib/lease-tools/Makefile b/contrib/lease-tools/Makefile
-index 68e8d32..f38f2ed 100644
---- a/contrib/lease-tools/Makefile
-+++ b/contrib/lease-tools/Makefile
-@@ -1,6 +1,6 @@
- CFLAGS?= -O2 -Wall -W
-
--all: dhcp_release dhcp_lease_time
-+all: dhcp_release dhcp_release6 dhcp_lease_time
-
- clean:
-- rm -f *~ *.o core dhcp_release dhcp_lease_time
-+ rm -f *~ *.o core dhcp_release dhcp_release6 dhcp_lease_time
-diff --git a/contrib/lease-tools/dhcp_release6.1 b/contrib/lease-tools/dhcp_release6.1
-new file mode 100644
-index 0000000..763e01c
---- /dev/null
-+++ b/contrib/lease-tools/dhcp_release6.1
-@@ -0,0 +1,38 @@
-+.TH DHCP_RELEASE 1
-+.SH NAME
-+dhcp_release6 \- Release a DHCPv6 lease on a the local dnsmasq DHCP server.
-+.SH SYNOPSIS
-+.B dhcp_release6 --iface <interface> --client-id <client-id> --server-id
-+server-id --iaid <iaid> --ip <IP> [--dry-run] [--help]
-+.SH "DESCRIPTION"
-+A utility which forces the DHCP server running on this machine to release a
-+DHCPv6 lease.
-+.SS OPTIONS
-+.IP "-a, --ip"
-+IPv6 address to release.
-+.IP "-c, --client-id"
-+Colon-separated hex string representing DHCPv6 client id. Normally
-+it can be found in leases file both on client and server.
-+.IP "-d, --dry-run"
-+Print hexadecimal representation of generated DHCPv6 release packet to standard
-+output and exit.
-+.IP "-h, --help"
-+print usage information to standard output and exit.
-+.IP "-i, --iaid"
-+Decimal representation of DHCPv6 IAID. Normally it can be found in leases file
-+both on client and server.
-+.IP "-n, --iface"
-+Network interface to send a DHCPv6 release packet from.
-+.IP "-s, --server-id"
-+Colon-separated hex string representing DHCPv6 server id. Normally
-+it can be found in leases file both on client and server.
-+.SH NOTES
-+MUST be run as root - will fail otherwise.
-+.SH LIMITATIONS
-+Only usable on IPv6 DHCP leases.
-+.SH SEE ALSO
-+.BR dnsmasq (8)
-+.SH AUTHOR
-+This manual page was written by Simon Kelley <simon(a)thekelleys.org.uk>.
-+
-+
-diff --git a/contrib/lease-tools/dhcp_release6.c b/contrib/lease-tools/dhcp_release6.c
-new file mode 100644
-index 0000000..74fb26a
---- /dev/null
-+++ b/contrib/lease-tools/dhcp_release6.c
-@@ -0,0 +1,416 @@
-+/*
-+ dhcp_release6 --iface <interface> --client-id <client-id> --server-id
-+ server-id --iaid <iaid> --ip <IP> [--dry-run] [--help]
-+ MUST be run as root - will fail othewise
-+ */
-+
-+/* Send a DHCPRELEASE message to IPv6 multicast address via the specified interface
-+ to tell the local DHCP server to delete a particular lease.
-+
-+ The interface argument is the interface in which a DHCP
-+ request _would_ be received if it was coming from the client,
-+ rather than being faked up here.
-+
-+ The client-id argument is colon-separated hex string and mandatory. Normally
-+ it can be found in leases file both on client and server
-+
-+ The server-id argument is colon-separated hex string and mandatory. Normally
-+ it can be found in leases file both on client and server.
-+
-+ The iaid argument is numeric string and mandatory. Normally
-+ it can be found in leases file both on client and server.
-+
-+ IP is an IPv6 adress to release
-+
-+ If --dry-run is specified, dhcp_release6 just prints hexadecimal represantation of
-+ packet to send to stdout and exits.
-+
-+ If --help is specified, dhcp_release6 print usage information to stdout and exits
-+
-+
-+
-+ */
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <strings.h>
-+#include <sys/types.h>
-+#include <sys/socket.h>
-+#include <arpa/inet.h>
-+#include <getopt.h>
-+#include <errno.h>
-+#include <unistd.h>
-+
-+#define NOT_REPLY_CODE 115
-+typedef unsigned char u8;
-+typedef unsigned short u16;
-+typedef unsigned int u32;
-+
-+enum DHCP6_TYPES{
-+ SOLICIT = 1,
-+ ADVERTISE = 2,
-+ REQUEST = 3,
-+ CONFIRM = 4,
-+ RENEW = 5,
-+ REBIND = 6,
-+ REPLY = 7,
-+ RELEASE = 8,
-+ DECLINE = 9,
-+ RECONFIGURE = 10,
-+ INFORMATION_REQUEST = 11,
-+ RELAY_FORW = 12,
-+ RELAY_REPL = 13
-+
-+};
-+enum DHCP6_OPTIONS{
-+ CLIENTID = 1,
-+ SERVERID = 2,
-+ IA_NA = 3,
-+ IA_TA = 4,
-+ IAADDR = 5,
-+ ORO = 6,
-+ PREFERENCE = 7,
-+ ELAPSED_TIME = 8,
-+ RELAY_MSG = 9,
-+ AUTH = 11,
-+ UNICAST = 12,
-+ STATUS_CODE = 13,
-+ RAPID_COMMIT = 14,
-+ USER_CLASS = 15,
-+ VENDOR_CLASS = 16,
-+ VENDOR_OPTS = 17,
-+ INTERFACE_ID = 18,
-+ RECONF_MSG = 19,
-+ RECONF_ACCEPT = 20,
-+};
-+
-+enum DHCP6_STATUSES{
-+ SUCCESS = 0,
-+ UNSPEC_FAIL = 1,
-+ NOADDR_AVAIL=2,
-+ NO_BINDING = 3,
-+ NOT_ON_LINK = 4,
-+ USE_MULTICAST =5
-+};
-+static struct option longopts[] = {
-+ {"ip", required_argument, 0, 'a'},
-+ {"server-id", required_argument, 0, 's'},
-+ {"client-id", required_argument, 0, 'c'},
-+ {"iface", required_argument, 0, 'n'},
-+ {"iaid", required_argument, 0, 'i'},
-+ {"dry-run", no_argument, 0, 'd'},
-+ {"help", no_argument, 0, 'h'},
-+ {0, 0, 0, 0}
-+};
-+
-+const short DHCP6_CLIENT_PORT = 546;
-+const short DHCP6_SERVER_PORT = 547;
-+
-+const char* DHCP6_MULTICAST_ADDRESS = "ff02::1:2";
-+
-+struct dhcp6_option{
-+ uint16_t type;
-+ uint16_t len;
-+ char value[1024];
-+};
-+
-+struct dhcp6_iaaddr_option{
-+ uint16_t type;
-+ uint16_t len;
-+ struct in6_addr ip;
-+ uint32_t preferred_lifetime;
-+ uint32_t valid_lifetime;
-+
-+
-+};
-+
-+struct dhcp6_iana_option{
-+ uint16_t type;
-+ uint16_t len;
-+ uint32_t iaid;
-+ uint32_t t1;
-+ uint32_t t2;
-+ char options[1024];
-+};
-+
-+
-+struct dhcp6_packet{
-+ size_t len;
-+ char buf[2048];
-+
-+} ;
-+
-+size_t pack_duid(const char* str, char* dst){
-+
-+ char* tmp = strdup(str);
-+ char* tmp_to_free = tmp;
-+ char *ptr;
-+ uint8_t write_pos = 0;
-+ while ((ptr = strtok (tmp, ":"))) {
-+ dst[write_pos] = (uint8_t) strtol(ptr, NULL, 16);
-+ write_pos += 1;
-+ tmp = NULL;
-+
-+ }
-+ free(tmp_to_free);
-+ return write_pos;
-+}
-+
-+struct dhcp6_option create_client_id_option(const char* duid){
-+ struct dhcp6_option option;
-+ option.type = htons(CLIENTID);
-+ bzero(option.value, sizeof(option.value));
-+ option.len = htons(pack_duid(duid, option.value));
-+ return option;
-+}
-+
-+struct dhcp6_option create_server_id_option(const char* duid){
-+ struct dhcp6_option option;
-+ option.type = htons(SERVERID);
-+ bzero(option.value, sizeof(option.value));
-+ option.len = htons(pack_duid(duid, option.value));
-+ return option;
-+}
-+
-+struct dhcp6_iaaddr_option create_iaadr_option(const char* ip){
-+ struct dhcp6_iaaddr_option result;
-+ result.type =htons(IAADDR);
-+ /* no suboptions needed here, so length is 24 */
-+ result.len = htons(24);
-+ result.preferred_lifetime = 0;
-+ result.valid_lifetime = 0;
-+ int s = inet_pton(AF_INET6, ip, &(result.ip));
-+ if (s <= 0) {
-+ if (s == 0)
-+ fprintf(stderr, "Not in presentation format");
-+ else
-+ perror("inet_pton");
-+ exit(EXIT_FAILURE);
-+ }
-+ return result;
-+}
-+struct dhcp6_iana_option create_iana_option(const char * iaid, struct dhcp6_iaaddr_option ia_addr){
-+ struct dhcp6_iana_option result;
-+ result.type = htons(IA_NA);
-+ result.iaid = htonl(atoi(iaid));
-+ result.t1 = 0;
-+ result.t2 = 0;
-+ result.len = htons(12 + ntohs(ia_addr.len) + 2 * sizeof(uint16_t));
-+ memcpy(result.options, &ia_addr, ntohs(ia_addr.len) + 2 * sizeof(uint16_t));
-+ return result;
-+}
-+
-+struct dhcp6_packet create_release_packet(const char* iaid, const char* ip, const char* client_id, const char* server_id){
-+ struct dhcp6_packet result;
-+ bzero(result.buf, sizeof(result.buf));
-+ /* message_type */
-+ result.buf[0] = RELEASE;
-+ /* tx_id */
-+ bzero(result.buf+1, 3);
-+
-+ struct dhcp6_option client_option = create_client_id_option(client_id);
-+ struct dhcp6_option server_option = create_server_id_option(server_id);
-+ struct dhcp6_iaaddr_option iaaddr_option = create_iaadr_option(ip);
-+ struct dhcp6_iana_option iana_option = create_iana_option(iaid, iaaddr_option);
-+ int offset = 4;
-+ memcpy(result.buf + offset, &client_option, ntohs(client_option.len) + 2*sizeof(uint16_t));
-+ offset += (ntohs(client_option.len)+ 2 *sizeof(uint16_t) );
-+ memcpy(result.buf + offset, &server_option, ntohs(server_option.len) + 2*sizeof(uint16_t) );
-+ offset += (ntohs(server_option.len)+ 2* sizeof(uint16_t));
-+ memcpy(result.buf + offset, &iana_option, ntohs(iana_option.len) + 2*sizeof(uint16_t) );
-+ offset += (ntohs(iana_option.len)+ 2* sizeof(uint16_t));
-+ result.len = offset;
-+ return result;
-+}
-+
-+uint16_t parse_iana_suboption(char* buf, size_t len){
-+ size_t current_pos = 0;
-+ char option_value[1024];
-+ while (current_pos < len) {
-+ uint16_t option_type, option_len;
-+ memcpy(&option_type,buf + current_pos, sizeof(uint16_t));
-+ memcpy(&option_len,buf + current_pos + sizeof(uint16_t), sizeof(uint16_t));
-+ option_type = ntohs(option_type);
-+ option_len = ntohs(option_len);
-+ current_pos += 2 * sizeof(uint16_t);
-+ if (option_type == STATUS_CODE){
-+ uint16_t status;
-+ memcpy(&status, buf + current_pos, sizeof(uint16_t));
-+ status = ntohs(status);
-+ if (status != SUCCESS){
-+ memcpy(option_value, buf + current_pos + sizeof(uint16_t) , option_len - sizeof(uint16_t));
-+ option_value[option_len-sizeof(uint16_t)] ='\0';
-+ fprintf(stderr, "Error: %s\n", option_value);
-+ }
-+ return status;
-+ }
-+ }
-+ return -2;
-+}
-+
-+int16_t parse_packet(char* buf, size_t len){
-+ uint8_t type = buf[0];
-+ /*skipping tx id. you need it, uncomment following line
-+ uint16_t tx_id = ntohs((buf[1] <<16) + (buf[2] <<8) + buf[3]);
-+ */
-+ size_t current_pos = 4;
-+ if (type != REPLY ){
-+ return NOT_REPLY_CODE;
-+ }
-+ char option_value[1024];
-+ while (current_pos < len) {
-+ uint16_t option_type, option_len;
-+ memcpy(&option_type,buf + current_pos, sizeof(uint16_t));
-+ memcpy(&option_len,buf + current_pos + sizeof(uint16_t), sizeof(uint16_t));
-+ option_type = ntohs(option_type);
-+ option_len = ntohs(option_len);
-+ current_pos += 2 * sizeof(uint16_t);
-+ if (option_type == STATUS_CODE){
-+ uint16_t status;
-+ memcpy(&status, buf + current_pos, sizeof(uint16_t));
-+ status = ntohs(status);
-+ if (status != SUCCESS){
-+ memcpy(option_value, buf + current_pos +sizeof(uint16_t) , option_len -sizeof(uint16_t));
-+ fprintf(stderr, "Error: %d %s\n", status, option_value);
-+ return status;
-+ }
-+
-+ }
-+ if (option_type == IA_NA ){
-+ uint16_t result = parse_iana_suboption(buf + current_pos +24, option_len -24);
-+ if (result){
-+ return result;
-+ }
-+ }
-+ current_pos += option_len;
-+
-+ }
-+ return -1;
-+}
-+
-+void usage(const char* arg, FILE* stream){
-+ const char* usage_string ="--ip IPv6 --iface IFACE --server-id SERVER_ID --client-id CLIENT_ID --iaid IAID [--dry-run] | --help";
-+ fprintf (stream, "Usage: %s %s\n", arg, usage_string);
-+
-+}
-+
-+int send_release_packet(const char* iface, struct dhcp6_packet* packet){
-+
-+ struct sockaddr_in6 server_addr, client_addr;
-+ char response[1400];
-+ int sock = socket(PF_INET6, SOCK_DGRAM, 0);
-+ int i = 0;
-+ if (sock < 0) {
-+ perror("creating socket");
-+ return -1;
-+ }
-+ if (setsockopt(sock, SOL_SOCKET, 25, iface, strlen(iface)) == -1) {
-+ perror("SO_BINDTODEVICE");
-+ close(sock);
-+ return -1;
-+ }
-+ memset(&server_addr, 0, sizeof(server_addr));
-+ server_addr.sin6_family = AF_INET6;
-+ client_addr.sin6_family = AF_INET6;
-+ client_addr.sin6_port = htons(DHCP6_CLIENT_PORT);
-+ client_addr.sin6_flowinfo = 0;
-+ client_addr.sin6_scope_id =0;
-+ inet_pton(AF_INET6, "::", &client_addr.sin6_addr);
-+ bind(sock, (struct sockaddr*)&client_addr, sizeof(struct sockaddr_in6));
-+ inet_pton(AF_INET6, DHCP6_MULTICAST_ADDRESS, &server_addr.sin6_addr);
-+ server_addr.sin6_port = htons(DHCP6_SERVER_PORT);
-+ int16_t recv_size = 0;
-+ for (i = 0; i < 5; i++) {
-+ if (sendto(sock, packet->buf, packet->len, 0,
-+ (struct sockaddr *)&server_addr,
-+ sizeof(server_addr)) < 0) {
-+ perror("sendto failed");
-+ exit(4);
-+ }
-+ recv_size = recvfrom(sock, response, sizeof(response), MSG_DONTWAIT, NULL, 0);
-+ if (recv_size == -1){
-+ if (errno == EAGAIN){
-+ sleep(1);
-+ continue;
-+ }else {
-+ perror("recvfrom");
-+ }
-+ }
-+ int16_t result = parse_packet(response, recv_size);
-+ if (result == NOT_REPLY_CODE){
-+ sleep(1);
-+ continue;
-+ }
-+ return result;
-+ }
-+ fprintf(stderr, "Response timed out\n");
-+ return -1;
-+
-+}
-+
-+
-+int main(int argc, char * const argv[]) {
-+ const char* iface = "";
-+ const char* ip = "";
-+ const char* client_id = "";
-+ const char* server_id = "";
-+ const char* iaid = "";
-+ int dry_run = 0;
-+ while (1) {
-+ int option_index = 0;
-+ int c = getopt_long(argc, argv, "a:s:c:n:i:hd", longopts, &option_index);
-+ if (c == -1){
-+ break;
-+ }
-+ switch(c){
-+ case 0:
-+ if (longopts[option_index].flag !=0){
-+ break;
-+ }
-+ printf ("option %s", longopts[option_index].name);
-+ if (optarg)
-+ printf (" with arg %s", optarg);
-+ printf ("\n");
-+ break;
-+ case 'i':
-+ iaid = optarg;
-+ break;
-+ case 'n':
-+ iface = optarg;
-+ break;
-+ case 'a':
-+ ip = optarg;
-+ break;
-+ case 'c':
-+ client_id = optarg;
-+ break;
-+ case 'd':
-+ dry_run = 1;
-+ break;
-+ case 's':
-+ server_id = optarg;
-+ break;
-+ case 'h':
-+ usage(argv[0], stdout);
-+ break;
-+ case '?':
-+ usage(argv[0], stderr);
-+ return -1;
-+ default:
-+ abort();
-+
-+ }
-+
-+ }
-+ struct dhcp6_packet packet = create_release_packet(iaid, ip, client_id, server_id);
-+ if (dry_run){
-+ uint16_t i;
-+ for(i=0;i<packet.len;i++){
-+ printf("%hhx", packet.buf[i]);
-+ }
-+ printf("\n");
-+ return 0;
-+ }
-+ return send_release_packet(iface, &packet);
-+
-+}
-diff --git a/debian/rules b/debian/rules
-index 193b30c..d748829 100755
---- a/debian/rules
-+++ b/debian/rules
-@@ -188,6 +188,9 @@ ifeq ($(DEB_HOST_ARCH_OS),linux)
- install -m 755 contrib/lease-tools/dhcp_release debian/utils/usr/bin/dhcp_release
- install -m 644 contrib/lease-tools/dhcp_release.1 debian/utils/usr/share/man/man1/dhcp_release.1
- gzip -9n debian/utils/usr/share/man/man1/dhcp_release.1
-+ install -m 755 contrib/lease-tools/dhcp_release6 debian/utils/usr/bin/dhcp_release6
-+ install -m 644 contrib/lease-tools/dhcp_release6.1 debian/utils/usr/share/man/man1/dhcp_release6.1
-+ gzip -9n debian/utils/usr/share/man/man1/dhcp_release6.1
- install -m 755 contrib/lease-tools/dhcp_lease_time debian/utils/usr/bin/dhcp_lease_time
- install -m 644 contrib/lease-tools/dhcp_lease_time.1 debian/utils/usr/share/man/man1/dhcp_lease_time.1
- install -m 644 debian/copyright debian/utils/usr/share/doc/dnsmasq-utils/copyright
---
-2.5.5
-
diff --git a/src/patches/dnsmasq/005-Limit_number_of_upstream_nameservers_when_logging_configuration.patch b/src/patches/dnsmasq/005-Limit_number_of_upstream_nameservers_when_logging_configuration.patch
deleted file mode 100644
index 3486104..0000000
--- a/src/patches/dnsmasq/005-Limit_number_of_upstream_nameservers_when_logging_configuration.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From b97026035ecc870ea0f12f537b214237cf3d0af6 Mon Sep 17 00:00:00 2001
-From: Simon Kelley <simon(a)thekelleys.org.uk>
-Date: Tue, 3 May 2016 22:34:06 +0100
-Subject: [PATCH] Limit number of upstream nameservers when logging
- configuration.
-
----
- CHANGELOG | 5 +++++
- src/config.h | 1 +
- src/network.c | 10 ++++++++--
- 3 files changed, 14 insertions(+), 2 deletions(-)
-
-diff --git a/CHANGELOG b/CHANGELOG
-index 7d4a061..f3220d8 100644
---- a/CHANGELOG
-+++ b/CHANGELOG
-@@ -71,6 +71,11 @@ version 2.76
- Add dhcp_release6 to contrib/lease-tools. Many thanks
- to Sergey Nechaev for this code.
-
-+ To avoid filling logs in configurations which define
-+ many upstream nameservers, don't log more that 30 servers.
-+ The number to be logged can be changed as SERVERS_LOGGED
-+ in src/config.h.
-+
-
- version 2.75
- Fix reversion on 2.74 which caused 100% CPU use when a
-diff --git a/src/config.h b/src/config.h
-index c3bbbcb..80a50e1 100644
---- a/src/config.h
-+++ b/src/config.h
-@@ -25,6 +25,7 @@
- #define TIMEOUT 10 /* drop UDP queries after TIMEOUT seconds */
- #define FORWARD_TEST 50 /* try all servers every 50 queries */
- #define FORWARD_TIME 20 /* or 20 seconds */
-+#define SERVERS_LOGGED 30 /* Only log this many servers when logging state */
- #define RANDOM_SOCKS 64 /* max simultaneous random ports */
- #define LEASE_RETRY 60 /* on error, retry writing leasefile after LEASE_RETRY seconds */
- #define CACHESIZ 150 /* default cache size */
-diff --git a/src/network.c b/src/network.c
-index da8a7f4..e7722fd 100644
---- a/src/network.c
-+++ b/src/network.c
-@@ -1429,7 +1429,7 @@ void check_servers(void)
- {
- struct irec *iface;
- struct server *serv;
-- int port = 0;
-+ int port = 0, count;
-
- /* interface may be new since startup */
- if (!option_bool(OPT_NOWILD))
-@@ -1442,7 +1442,7 @@ void check_servers(void)
- serv->flags |= SERV_DO_DNSSEC;
- #endif
-
-- for (serv = daemon->servers; serv; serv = serv->next)
-+ for (count = 0, serv = daemon->servers; serv; serv = serv->next)
- {
- if (!(serv->flags & (SERV_LITERAL_ADDRESS | SERV_NO_ADDR | SERV_USE_RESOLV | SERV_NO_REBIND)))
- {
-@@ -1509,6 +1509,9 @@ void check_servers(void)
-
- if (!(serv->flags & SERV_NO_REBIND) && !(serv->flags & SERV_LITERAL_ADDRESS))
- {
-+ if (++count > SERVERS_LOGGED)
-+ continue;
-+
- if (serv->flags & (SERV_HAS_DOMAIN | SERV_FOR_NODOTS | SERV_USE_RESOLV))
- {
- char *s1, *s2, *s3 = "";
-@@ -1540,6 +1543,9 @@ void check_servers(void)
- my_syslog(LOG_INFO, _("using nameserver %s#%d"), daemon->namebuff, port);
- }
- }
-+
-+ if (count - 1 > SERVERS_LOGGED)
-+ my_syslog(LOG_INFO, _("using %d more nameservers"), count - SERVERS_LOGGED - 1);
-
- cleanup_servers();
- }
---
-2.5.5
-
diff --git a/src/patches/dnsmasq/006-Fix_for_DHCP_in_transmission_interface_when_--bridge-interface_in_use.patch b/src/patches/dnsmasq/006-Fix_for_DHCP_in_transmission_interface_when_--bridge-interface_in_use.patch
deleted file mode 100644
index 3c90ca3..0000000
--- a/src/patches/dnsmasq/006-Fix_for_DHCP_in_transmission_interface_when_--bridge-interface_in_use.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From ff325644c7afae2588583f935f4ea9b9694eb52e Mon Sep 17 00:00:00 2001
-From: Neil Jerram <Neil.Jerram(a)metaswitch.com>
-Date: Tue, 3 May 2016 22:45:14 +0100
-Subject: [PATCH] Fix for DHCP in transmission interface when
- --bridge-interface in use.
-
-From f3d832b41f44c856003517c583fbd7af4dca722c Mon Sep 17 00:00:00 2001
-From: Neil Jerram <Neil.Jerram(a)metaswitch.com>
-Date: Fri, 8 Apr 2016 19:23:47 +0100
-Subject: [PATCH] Fix DHCPv4 reply via --bridge-interface alias interface
-
-Sending a DHCPv4 reply through a --bridge-interface alias interface
-was inadvertently broken by
-
- commit 65c721200023ef0023114459a8d12f8b0a24cfd8
- Author: Lung-Pin Chang <changlp(a)cs.nctu.edu.tw>
- Date: Thu Mar 19 23:22:21 2015 +0000
-
- dhcp: set outbound interface via cmsg in unicast reply
-
- If multiple routes to the same network exist, Linux blindly picks
- the first interface (route) based on destination address, which might not be
- the one we're actually offering leases. Rather than relying on this,
- always set the interface for outgoing unicast DHCP packets.
-
-because in the aliasing case, iface_index is changed from the index of
-the interface on which the packet was received, to be the interface
-index of the 'bridge' interface (where the DHCP context is expected to
-be defined, and so needs to be looked up).
-
-For the cmsg code that the cited commit added, we need the original
-iface_index; so this commit saves that off before the aliasing code
-can change it, as rcvd_iface_index, and then uses rcvd_iface_index
-instead of iface_index for the cmsg code.
----
- src/dhcp.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/dhcp.c b/src/dhcp.c
-index 00145bc..10f1fb9 100644
---- a/src/dhcp.c
-+++ b/src/dhcp.c
-@@ -146,6 +146,7 @@ void dhcp_packet(time_t now, int pxe_fd)
- struct iovec iov;
- ssize_t sz;
- int iface_index = 0, unicast_dest = 0, is_inform = 0;
-+ int rcvd_iface_index;
- struct in_addr iface_addr;
- struct iface_param parm;
- #ifdef HAVE_LINUX_NETWORK
-@@ -230,6 +231,7 @@ void dhcp_packet(time_t now, int pxe_fd)
- --bridge-interface option), change ifr.ifr_name so that we look
- for DHCP contexts associated with the aliased interface instead
- of with the aliasing one. */
-+ rcvd_iface_index = iface_index;
- for (bridge = daemon->bridges; bridge; bridge = bridge->next)
- {
- for (alias = bridge->alias; alias; alias = alias->next)
-@@ -387,7 +389,7 @@ void dhcp_packet(time_t now, int pxe_fd)
- msg.msg_controllen = sizeof(control_u);
- cmptr = CMSG_FIRSTHDR(&msg);
- pkt = (struct in_pktinfo *)CMSG_DATA(cmptr);
-- pkt->ipi_ifindex = iface_index;
-+ pkt->ipi_ifindex = rcvd_iface_index;
- pkt->ipi_spec_dst.s_addr = 0;
- msg.msg_controllen = cmptr->cmsg_len = CMSG_LEN(sizeof(struct in_pktinfo));
- cmptr->cmsg_level = IPPROTO_IP;
---
-2.5.5
-
--
2.8.2