From 4d36732fe23a15cd79ca7dcd8f0ea21975c6a75c Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Thu, 5 May 2016 19:54:42 +0200 Subject: [PATCH] dnsmasq: Update to 2.76test13 with latest patches (001-006) Update from 'dnsmasq 2.76test10' to '2.76test13' Includes latest patches (001-006) from upstream. Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/dnsmasq | 15 +- ...rameter_to_--host-record_and_--cname.patch | 265 --------- .../001-Debian_init_d_script_fix.patch | 74 +++ .../dnsmasq/002-Add_--dhcp-ttl_option.patch | 117 ---- .../dnsmasq/002-Add_--help_to_manpage.patch | 66 +++ ...cp_lease_time_to_contrib_lease_tools.patch | 73 +++ .../dnsmasq/003-Update_CHANGELOG.patch | 17 - .../dnsmasq/004-Add_--tftp-mtu_option.patch | 136 ----- ...dd_contrib_lease-tools_dhcp_release6.patch | 528 ++++++++++++++++++ ...length_to_TTL_when_--dhcp-ttl_in_use.patch | 37 -- ...meservers_when_logging_configuration.patch | 85 +++ ...rface_when_--bridge-interface_in_use.patch | 70 +++ 12 files changed, 904 insertions(+), 579 deletions(-) delete mode 100644 src/patches/dnsmasq/001-Add_TTL_parameter_to_--host-record_and_--cname.patch create mode 100644 src/patches/dnsmasq/001-Debian_init_d_script_fix.patch delete mode 100644 src/patches/dnsmasq/002-Add_--dhcp-ttl_option.patch create mode 100644 src/patches/dnsmasq/002-Add_--help_to_manpage.patch create mode 100644 src/patches/dnsmasq/003-Move_dhcp_release_and_dhcp_lease_time_to_contrib_lease_tools.patch delete mode 100644 src/patches/dnsmasq/003-Update_CHANGELOG.patch delete mode 100644 src/patches/dnsmasq/004-Add_--tftp-mtu_option.patch create mode 100644 src/patches/dnsmasq/004-Add_contrib_lease-tools_dhcp_release6.patch delete mode 100644 src/patches/dnsmasq/005-Apply_ceiling_of_lease_length_to_TTL_when_--dhcp-ttl_in_use.patch create mode 100644 src/patches/dnsmasq/005-Limit_number_of_upstream_nameservers_when_logging_configuration.patch create 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 84585c1e02..feb1789d80 100644 --- a/lfs/dnsmasq +++ b/lfs/dnsmasq @@ -24,7 +24,7 @@ include Config -VER = 2.76test10 +VER = 2.76test13 THISAPP = dnsmasq-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -43,7 +43,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 4b51474ed6081b18c61407077f254cf7 +$(DL_FILE)_MD5 = bb66cef5b41e0cddf8272b0911855568 install : $(TARGET) @@ -73,11 +73,12 @@ $(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-Add_TTL_parameter_to_--host-record_and_--cname.patch - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/002-Add_--dhcp-ttl_option.patch - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/003-Update_CHANGELOG.patch - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/004-Add_--tftp-mtu_option.patch - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/005-Apply_ceiling_of_lease_length_to_TTL_when_--dhcp-ttl_in_use.patch + 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-Add-support-to-read-ISC-DHCP-lease-file.patch cd $(DIR_APP) && sed -i src/config.h \ diff --git a/src/patches/dnsmasq/001-Add_TTL_parameter_to_--host-record_and_--cname.patch b/src/patches/dnsmasq/001-Add_TTL_parameter_to_--host-record_and_--cname.patch deleted file mode 100644 index 86fbc9c12d..0000000000 --- a/src/patches/dnsmasq/001-Add_TTL_parameter_to_--host-record_and_--cname.patch +++ /dev/null @@ -1,265 +0,0 @@ -From df3d54f776a3c9b60735b45c0b7fd88b66a2d5c4 Mon Sep 17 00:00:00 2001 -From: Simon Kelley -Date: Wed, 24 Feb 2016 21:03:38 +0000 -Subject: [PATCH] Add TTL parameter to --host-record and --cname. - ---- - man/dnsmasq.8 | 12 ++++++++++-- - src/cache.c | 7 +++++++ - src/dnsmasq.h | 2 ++ - src/option.c | 46 ++++++++++++++++++++++++++++++++++++++-------- - src/rfc1035.c | 6 +++++- - 5 files changed, 62 insertions(+), 11 deletions(-) - -diff --git a/man/dnsmasq.8 b/man/dnsmasq.8 -index b782eaf..7bc1394 100644 ---- a/man/dnsmasq.8 -+++ b/man/dnsmasq.8 -@@ -529,7 +529,7 @@ zone files: the port, weight and priority numbers are in a different - order. More than one SRV record for a given service/domain is allowed, - all that match are returned. - .TP --.B --host-record=[,....],[],[] -+.B --host-record=[,....],[],[][,] - Add A, AAAA and PTR records to the DNS. This adds one or more names to - the DNS with associated IPv4 (A) and IPv6 (AAAA) records. A name may - appear in more than one -@@ -546,6 +546,10 @@ is in effect. Short and long names may appear in the same - .B host-record, - eg. - .B --host-record=laptop,laptop.thekelleys.org,192.168.0.1,1234::100 -+ -+If the time-to-live is given, it overrides the default, which is zero -+or the value of --local-ttl. The value is a positive integer and gives -+the time-to-live in seconds. - .TP - .B \-Y, --txt-record=[[,],] - Return a TXT DNS record. The value of TXT record is a set of strings, -@@ -559,7 +563,7 @@ Return a PTR DNS record. - .B --naptr-record=,,,,,[,] - Return an NAPTR DNS record, as specified in RFC3403. - .TP --.B --cname=, -+.B --cname=,[,] - Return a CNAME record which indicates that is really - . There are significant limitations on the target; it must be a - DNS name which is known to dnsmasq from /etc/hosts (or additional -@@ -568,6 +572,10 @@ hosts files), from DHCP, from --interface-name or from another - If the target does not satisfy this - criteria, the whole cname is ignored. The cname must be unique, but it - is permissable to have more than one cname pointing to the same target. -+ -+If the time-to-live is given, it overrides the default, which is zero -+or the value of -local-ttl. The value is a positive integer and gives -+the time-to-live in seconds. - .TP - .B --dns-rr=,,[] - Return an arbitrary DNS Resource Record. The number is the type of the -diff --git a/src/cache.c b/src/cache.c -index a9eaa65..4ecd535 100644 ---- a/src/cache.c -+++ b/src/cache.c -@@ -778,6 +778,7 @@ static void add_hosts_cname(struct crec *target) - (crec = whine_malloc(sizeof(struct crec)))) - { - crec->flags = F_FORWARD | F_IMMORTAL | F_NAMEP | F_CONFIG | F_CNAME; -+ crec->ttd = a->ttl; - crec->name.namep = a->alias; - crec->addr.cname.target.cache = target; - crec->addr.cname.uid = target->uid; -@@ -981,6 +982,7 @@ int read_hostsfile(char *filename, unsigned int index, int cache_size, struct cr - strcat(cache->name.sname, "."); - strcat(cache->name.sname, domain_suffix); - cache->flags = flags; -+ cache->ttd = daemon->local_ttl; - add_hosts_entry(cache, &addr, addrlen, index, rhash, hashsz); - name_count++; - } -@@ -988,6 +990,7 @@ int read_hostsfile(char *filename, unsigned int index, int cache_size, struct cr - { - strcpy(cache->name.sname, canon); - cache->flags = flags; -+ cache->ttd = daemon->local_ttl; - add_hosts_entry(cache, &addr, addrlen, index, rhash, hashsz); - name_count++; - } -@@ -1057,6 +1060,7 @@ void cache_reload(void) - ((cache = whine_malloc(sizeof(struct crec))))) - { - cache->flags = F_FORWARD | F_NAMEP | F_CNAME | F_IMMORTAL | F_CONFIG; -+ cache->ttd = a->ttl; - cache->name.namep = a->alias; - cache->addr.cname.target.int_name = intr; - cache->addr.cname.uid = SRC_INTERFACE; -@@ -1071,6 +1075,7 @@ void cache_reload(void) - (cache->addr.ds.keydata = blockdata_alloc(ds->digest, ds->digestlen))) - { - cache->flags = F_FORWARD | F_IMMORTAL | F_DS | F_CONFIG | F_NAMEP; -+ cache->ttd = daemon->local_ttl; - cache->name.namep = ds->name; - cache->addr.ds.keylen = ds->digestlen; - cache->addr.ds.algo = ds->algo; -@@ -1095,6 +1100,7 @@ void cache_reload(void) - (cache = whine_malloc(sizeof(struct crec)))) - { - cache->name.namep = nl->name; -+ cache->ttd = hr->ttl; - cache->flags = F_HOSTS | F_IMMORTAL | F_FORWARD | F_REVERSE | F_IPV4 | F_NAMEP | F_CONFIG; - add_hosts_entry(cache, (struct all_addr *)&hr->addr, INADDRSZ, SRC_CONFIG, (struct crec **)daemon->packet, revhashsz); - } -@@ -1103,6 +1109,7 @@ void cache_reload(void) - (cache = whine_malloc(sizeof(struct crec)))) - { - cache->name.namep = nl->name; -+ cache->ttd = hr->ttl; - cache->flags = F_HOSTS | F_IMMORTAL | F_FORWARD | F_REVERSE | F_IPV6 | F_NAMEP | F_CONFIG; - add_hosts_entry(cache, (struct all_addr *)&hr->addr6, IN6ADDRSZ, SRC_CONFIG, (struct crec **)daemon->packet, revhashsz); - } -diff --git a/src/dnsmasq.h b/src/dnsmasq.h -index 6d1c5ae..6344df5 100644 ---- a/src/dnsmasq.h -+++ b/src/dnsmasq.h -@@ -308,6 +308,7 @@ struct ptr_record { - }; - - struct cname { -+ int ttl; - char *alias, *target; - struct cname *next; - }; -@@ -344,6 +345,7 @@ struct auth_zone { - - - struct host_record { -+ int ttl; - struct name_list { - char *name; - struct name_list *next; -diff --git a/src/option.c b/src/option.c -index c98bdc9..7c5e6bc 100644 ---- a/src/option.c -+++ b/src/option.c -@@ -448,20 +448,20 @@ static struct { - { LOPT_GEN_NAMES, ARG_DUP, "[=tag:]", gettext_noop("Generate hostnames based on MAC address for nameless clients."), NULL}, - { LOPT_PROXY, ARG_DUP, "[=]...", gettext_noop("Use these DHCP relays as full proxies."), NULL }, - { LOPT_RELAY, ARG_DUP, ",[,]", gettext_noop("Relay DHCP requests to a remote server"), NULL}, -- { LOPT_CNAME, ARG_DUP, ",", gettext_noop("Specify alias name for LOCAL DNS name."), NULL }, -+ { LOPT_CNAME, ARG_DUP, ",[,]", gettext_noop("Specify alias name for LOCAL DNS name."), NULL }, - { LOPT_PXE_PROMT, ARG_DUP, ",[]", gettext_noop("Prompt to send to PXE clients."), NULL }, - { LOPT_PXE_SERV, ARG_DUP, "", gettext_noop("Boot service for PXE menu."), NULL }, - { LOPT_TEST, 0, NULL, gettext_noop("Check configuration syntax."), NULL }, - { LOPT_ADD_MAC, ARG_DUP, "[=base64|text]", gettext_noop("Add requestor's MAC address to forwarded DNS queries."), NULL }, - { LOPT_ADD_SBNET, ARG_ONE, "[,]", gettext_noop("Add specified IP subnet to forwarded DNS queries."), NULL }, -- { LOPT_CPE_ID, ARG_ONE, "", gettext_noop("Add client identification to forwarded DNS queries."), NULL }, -+ { LOPT_CPE_ID, ARG_ONE, "", gettext_noop("Add client identification to forwarded DNS queries."), NULL }, - { LOPT_DNSSEC, OPT_DNSSEC_PROXY, NULL, gettext_noop("Proxy DNSSEC validation results from upstream nameservers."), NULL }, - { LOPT_INCR_ADDR, OPT_CONSEC_ADDR, NULL, gettext_noop("Attempt to allocate sequential IP addresses to DHCP clients."), NULL }, - { LOPT_CONNTRACK, OPT_CONNTRACK, NULL, gettext_noop("Copy connection-track mark from queries to upstream connections."), NULL }, - { LOPT_FQDN, OPT_FQDN_UPDATE, NULL, gettext_noop("Allow DHCP clients to do their own DDNS updates."), NULL }, - { LOPT_RA, OPT_RA, NULL, gettext_noop("Send router-advertisements for interfaces doing DHCPv6"), NULL }, - { LOPT_DUID, ARG_ONE, ",", gettext_noop("Specify DUID_EN-type DHCPv6 server DUID"), NULL }, -- { LOPT_HOST_REC, ARG_DUP, ",
", gettext_noop("Specify host (A/AAAA and PTR) records"), NULL }, -+ { LOPT_HOST_REC, ARG_DUP, ",
[,]", gettext_noop("Specify host (A/AAAA and PTR) records"), NULL }, - { LOPT_RR, ARG_DUP, ",,[]", gettext_noop("Specify arbitrary DNS resource record"), NULL }, - { LOPT_CLVERBIND, OPT_CLEVERBIND, NULL, gettext_noop("Bind to interfaces in use - check for new interfaces"), NULL }, - { LOPT_AUTHSERV, ARG_ONE, ",", gettext_noop("Export local names to global DNS"), NULL }, -@@ -3692,12 +3692,15 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma - case LOPT_CNAME: /* --cname */ - { - struct cname *new; -- char *alias; -- char *target; -+ char *alias, *target, *ttls; -+ int ttl = -1; - - if (!(comma = split(arg))) - ret_err(gen_err); - -+ if ((ttls = split(comma)) && !atoi_check(ttls, &ttl)) -+ ret_err(_("bad TTL")); -+ - alias = canonicalise_opt(arg); - target = canonicalise_opt(comma); - -@@ -3713,6 +3716,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma - daemon->cnames = new; - new->alias = alias; - new->target = target; -+ new->ttl = ttl; - } - - break; -@@ -3913,14 +3917,22 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma - { - struct host_record *new = opt_malloc(sizeof(struct host_record)); - memset(new, 0, sizeof(struct host_record)); -- -+ new->ttl = -1; -+ - if (!arg || !(comma = split(arg))) - ret_err(_("Bad host-record")); - - while (arg) - { - struct all_addr addr; -- if (inet_pton(AF_INET, arg, &addr)) -+ char *dig; -+ -+ for (dig = arg; *dig != 0; dig++) -+ if (*dig < '0' || *dig > '9') -+ break; -+ if (*dig == 0) -+ new->ttl = atoi(arg); -+ else if (inet_pton(AF_INET, arg, &addr)) - new->addr = addr.addr.addr4; - #ifdef HAVE_IPV6 - else if (inet_pton(AF_INET6, arg, &addr)) -@@ -4601,7 +4613,25 @@ void read_opts(int argc, char **argv, char *compile_opts) - } - } - } -- -+ -+ if (daemon->host_records) -+ { -+ struct host_record *hr; -+ -+ for (hr = daemon->host_records; hr; hr = hr->next) -+ if (hr->ttl == -1) -+ hr->ttl = daemon->local_ttl; -+ } -+ -+ if (daemon->cnames) -+ { -+ struct cname *cn; -+ -+ for (cn = daemon->cnames; cn; cn = cn->next) -+ if (cn->ttl == -1) -+ cn->ttl = daemon->local_ttl; -+ } -+ - if (daemon->if_addrs) - { - struct iname *tmp; -diff --git a/src/rfc1035.c b/src/rfc1035.c -index 9c0ddb5..3535a71 100644 ---- a/src/rfc1035.c -+++ b/src/rfc1035.c -@@ -1169,9 +1169,13 @@ static unsigned long crec_ttl(struct crec *crecp, time_t now) - /* Return 0 ttl for DHCP entries, which might change - before the lease expires. */ - -- if (crecp->flags & (F_IMMORTAL | F_DHCP)) -+ if (crecp->flags & F_DHCP) - return daemon->local_ttl; - -+ /* Immortal entries other than DHCP are local, and hold TTL in TTD field. */ -+ if (crecp->flags & F_IMMORTAL) -+ return crecp->ttd; -+ - /* Return the Max TTL value if it is lower then the actual TTL */ - if (daemon->max_ttl == 0 || ((unsigned)(crecp->ttd - now) < daemon->max_ttl)) - return crecp->ttd - now; --- -1.7.10.4 - diff --git a/src/patches/dnsmasq/001-Debian_init_d_script_fix.patch b/src/patches/dnsmasq/001-Debian_init_d_script_fix.patch new file mode 100644 index 0000000000..86d0480928 --- /dev/null +++ b/src/patches/dnsmasq/001-Debian_init_d_script_fix.patch @@ -0,0 +1,74 @@ +From 332c41e2ff533649dc48b6bab00804d795f348f5 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +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 Thur, 10 Sep 2015 23:07:21 +0000 + + dnsmasq (2.75-1) unstable; urgency=low + + * New upstream. (closes: #794095) +- ++ + -- Simon Kelley Thur, 30 Jul 2015 20:58:31 +0000 + + dnsmasq (2.74-1) unstable; urgency=low + + * New upstream. (LP: #1468611) +- ++ + -- Simon Kelley 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/002-Add_--dhcp-ttl_option.patch b/src/patches/dnsmasq/002-Add_--dhcp-ttl_option.patch deleted file mode 100644 index 45e3b9b07e..0000000000 --- a/src/patches/dnsmasq/002-Add_--dhcp-ttl_option.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 832e47beab95c2918b5264f0504f2fe6fe523e4c Mon Sep 17 00:00:00 2001 -From: Simon Kelley -Date: Wed, 24 Feb 2016 21:24:45 +0000 -Subject: [PATCH] Add --dhcp-ttl option. - ---- - man/dnsmasq.8 | 5 ++++- - src/dnsmasq.h | 2 +- - src/option.c | 13 +++++++++++-- - src/rfc1035.c | 2 +- - 4 files changed, 17 insertions(+), 5 deletions(-) - -diff --git a/man/dnsmasq.8 b/man/dnsmasq.8 -index 7bc1394..2bcce20 100644 ---- a/man/dnsmasq.8 -+++ b/man/dnsmasq.8 -@@ -60,7 +60,7 @@ in the same way as for DHCP-derived names. Note that this does not - apply to domain names in cnames, PTR records, TXT records etc. - .TP - .B \-T, --local-ttl=