From 2c8cb0c572956a59d6495e4d2e0463bc14bf8d0e Mon Sep 17 00:00:00 2001 From: Kevin Darbyshire-Bryant Date: Mon, 6 Feb 2017 21:45:41 +0000 Subject: [PATCH] dnsmasq: bump to dnsmasq v2.77test4 --bogus-priv now applies to IPv6 prefixes as specified in RFC6303 - this is significantly friendlier to upstream servers. CNAME fix in auth mode - A domain can only have a CNAME if it has no other records Drop 2 patches now included upstream. Compile & run tested Archer C7 v2 Signed-off-by: Kevin Darbyshire-Bryant --- package/network/services/dnsmasq/Makefile | 4 +- .../dnsmasq/patches/010-reduce-logging.patch | 83 ----------- .../patches/020-implement-RFC6842.patch | 132 ------------------ 3 files changed, 2 insertions(+), 217 deletions(-) delete mode 100644 package/network/services/dnsmasq/patches/010-reduce-logging.patch delete mode 100644 package/network/services/dnsmasq/patches/020-implement-RFC6842.patch diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile index c686e8c7da..1f5e704781 100644 --- a/package/network/services/dnsmasq/Makefile +++ b/package/network/services/dnsmasq/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dnsmasq -PKG_VERSION:=2.77test3 +PKG_VERSION:=2.77test4 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq/test-releases -PKG_HASH:=a5cd2b78048c0b16a9cbd2486430039c7d91b958c395edf3233cd9ae1a9eb8c1 +PKG_HASH:=d71f52b54b876f8b30418cd9c8d5926a2f294aa8347ee41992da3762d14b3c51 PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=COPYING diff --git a/package/network/services/dnsmasq/patches/010-reduce-logging.patch b/package/network/services/dnsmasq/patches/010-reduce-logging.patch deleted file mode 100644 index 9141a135a4..0000000000 --- a/package/network/services/dnsmasq/patches/010-reduce-logging.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 3e2496fb16fb78cb95fffdac80f967310a34b1fa Mon Sep 17 00:00:00 2001 -From: Hannu Nyman -Date: Sat, 11 Feb 2017 13:44:08 +0000 -Subject: [PATCH] Decrease the number of individual sites listed in log. - -By default 30 first servers are listed individually to system log, and -then a count of the remaining items. With e.g. a NXDOMAIN based adblock -service, dnsmasq lists 30 unnecessary ad sites every time when dnsmasq -evaluates the list. But the actual nameservers in use are evaluated last -and are not displayed as they get included in the "remaining items" total. - -Handle the "local addresses only" separately and list only a few of them. -Remove the "local addresses only" from the general count. ---- - CHANGELOG | 4 ++++ - src/config.h | 1 + - src/network.c | 9 ++++++++- - 3 files changed, 13 insertions(+), 1 deletion(-) - -diff --git a/CHANGELOG b/CHANGELOG -index 788aaf9..f7f5125 100644 ---- a/CHANGELOG -+++ b/CHANGELOG -@@ -69,6 +69,10 @@ version 2.77 - servers. Specifically, be prepared to open a new TCP - connection when we want to make multiple queries - but the upstream server accepts fewer queries per connection. -+ -+ Improve logging of upstream servers when there are a lot -+ of "local addresses only" entries. Thanks to Hannu Nyman for -+ the patch. - - - version 2.76 -diff --git a/src/config.h b/src/config.h -index be9cf05..cf527b3 100644 ---- a/src/config.h -+++ b/src/config.h -@@ -27,6 +27,7 @@ - #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 LOCALS_LOGGED 8 /* Only log this many local addresses 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 770558a..eb41624 100644 ---- a/src/network.c -+++ b/src/network.c -@@ -1438,6 +1438,7 @@ void check_servers(void) - struct server *serv; - struct serverfd *sfd, *tmp, **up; - int port = 0, count; -+ int locals = 0; - - /* interface may be new since startup */ - if (!option_bool(OPT_NOWILD)) -@@ -1541,7 +1542,11 @@ void check_servers(void) - s1 = _("domain"), s2 = serv->domain; - - if (serv->flags & SERV_NO_ADDR) -- my_syslog(LOG_INFO, _("using local addresses only for %s %s"), s1, s2); -+ { -+ count--; -+ if (++locals <= LOCALS_LOGGED) -+ my_syslog(LOG_INFO, _("using local addresses only for %s %s"), s1, s2); -+ } - else if (serv->flags & SERV_USE_RESOLV) - my_syslog(LOG_INFO, _("using standard nameservers for %s %s"), s1, s2); - else -@@ -1558,6 +1563,8 @@ void check_servers(void) - } - } - -+ if (locals > LOCALS_LOGGED) -+ my_syslog(LOG_INFO, _("using %d more local addresses"), locals - LOCALS_LOGGED); - if (count - 1 > SERVERS_LOGGED) - my_syslog(LOG_INFO, _("using %d more nameservers"), count - SERVERS_LOGGED - 1); - --- -1.7.10.4 - diff --git a/package/network/services/dnsmasq/patches/020-implement-RFC6842.patch b/package/network/services/dnsmasq/patches/020-implement-RFC6842.patch deleted file mode 100644 index 905e40b8ca..0000000000 --- a/package/network/services/dnsmasq/patches/020-implement-RFC6842.patch +++ /dev/null @@ -1,132 +0,0 @@ -From 88a77a78ad27adc3ed87b7ee603643d26cb896ee Mon Sep 17 00:00:00 2001 -From: Simon Kelley -Date: Sat, 11 Feb 2017 17:02:02 +0000 -Subject: [PATCH] Implement RFC-6842 (Client-ids in DHCP replies.) - ---- - CHANGELOG | 5 ++++- - src/rfc2131.c | 33 ++++++++++++++++++++++----------- - 2 files changed, 26 insertions(+), 12 deletions(-) - -diff --git a/CHANGELOG b/CHANGELOG -index f7f5125..a4ee280 100644 ---- a/CHANGELOG -+++ b/CHANGELOG -@@ -74,7 +74,10 @@ version 2.77 - of "local addresses only" entries. Thanks to Hannu Nyman for - the patch. - -- -+ Implement RFC 6842. Thanks to Reddeiah Raju Konduru for -+ pointing out that this was missing. -+ -+ - version 2.76 - Include 0.0.0.0/8 in DNS rebind checks. This range - translates to hosts on the local network, or, at -diff --git a/src/rfc2131.c b/src/rfc2131.c -index 978c8dc..3e97402 100644 ---- a/src/rfc2131.c -+++ b/src/rfc2131.c -@@ -38,7 +38,7 @@ static void log_packet(char *type, void *addr, unsigned char *ext_mac, - static unsigned char *option_find(struct dhcp_packet *mess, size_t size, int opt_type, int minsize); - static unsigned char *option_find1(unsigned char *p, unsigned char *end, int opt, int minsize); - static size_t dhcp_packet_size(struct dhcp_packet *mess, unsigned char *agent_id, unsigned char *real_end); --static void clear_packet(struct dhcp_packet *mess, unsigned char *end); -+static void clear_packet(struct dhcp_packet *mess, unsigned char *end, unsigned int sz); - static int in_list(unsigned char *list, int opt); - static void do_options(struct dhcp_context *context, - struct dhcp_packet *mess, -@@ -611,7 +611,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index, - now); - lease_set_interface(lease, int_index, now); - -- clear_packet(mess, end); -+ clear_packet(mess, end, 0); - do_options(context, mess, end, NULL, hostname, get_domain(mess->yiaddr), - netid, subnet_addr, 0, 0, -1, NULL, vendor_class_len, now, 0xffffffff, 0); - } -@@ -814,7 +814,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index, - if (!service || !service->basename || !context) - return 0; - -- clear_packet(mess, end); -+ clear_packet(mess, end, sz); - - mess->yiaddr = mess->ciaddr; - mess->ciaddr.s_addr = 0; -@@ -882,7 +882,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index, - mess->flags |= htons(0x8000); /* broadcast */ - } - -- clear_packet(mess, end); -+ clear_packet(mess, end, sz); - - /* Redirect EFI clients to port 4011 */ - if (pxearch >= 6) -@@ -1062,7 +1062,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index, - log_packet("DHCPOFFER" , &mess->yiaddr, emac, emac_len, iface_name, NULL, NULL, mess->xid); - - time = calc_time(context, config, option_find(mess, sz, OPTION_LEASE_TIME, 4)); -- clear_packet(mess, end); -+ clear_packet(mess, end, sz); - option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPOFFER); - option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr)); - option_put(mess, end, OPTION_LEASE_TIME, 4, time); -@@ -1245,7 +1245,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index, - log_packet("DHCPNAK", &mess->yiaddr, emac, emac_len, iface_name, NULL, message, mess->xid); - - mess->yiaddr.s_addr = 0; -- clear_packet(mess, end); -+ clear_packet(mess, end, sz); - option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPNAK); - option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr)); - option_put_string(mess, end, OPTION_MESSAGE, message, borken_opt); -@@ -1401,7 +1401,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index, - - log_packet("DHCPACK", &mess->yiaddr, emac, emac_len, iface_name, hostname, NULL, mess->xid); - -- clear_packet(mess, end); -+ clear_packet(mess, end, sz); - option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPACK); - option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr)); - option_put(mess, end, OPTION_LEASE_TIME, 4, time); -@@ -1452,7 +1452,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index, - override = lease->override; - } - -- clear_packet(mess, end); -+ clear_packet(mess, end, sz); - option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPACK); - option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, ntohl(server_id(context, override, fallback).s_addr)); - -@@ -2180,12 +2180,23 @@ static struct dhcp_opt *pxe_opts(int pxe_arch, struct dhcp_netid *netid, struct - - return ret; - } -- --static void clear_packet(struct dhcp_packet *mess, unsigned char *end) -+ -+static void clear_packet(struct dhcp_packet *mess, unsigned char *end, unsigned int sz) - { -+ unsigned char *opt; -+ unsigned int clid_tot = 0; -+ -+ /* If sz is non-zero, save any client-id option by copying it as the first -+ option in the new packet */ -+ if (sz != 0 && (opt = option_find(mess, sz, OPTION_CLIENT_ID, 1))) -+ { -+ clid_tot = option_len(opt) + 2u; -+ memmove(&mess->options[0] + sizeof(u32), opt, clid_tot); -+ } -+ - memset(mess->sname, 0, sizeof(mess->sname)); - memset(mess->file, 0, sizeof(mess->file)); -- memset(&mess->options[0] + sizeof(u32), 0, end - (&mess->options[0] + sizeof(u32))); -+ memset(&mess->options[0] + sizeof(u32) + clid_tot, 0, end - (&mess->options[0] + sizeof(u32) + clid_tot)); - mess->siaddr.s_addr = 0; - } - --- -1.7.10.4 -