From 5a04335f986acb91ff5df31df3f22d4f1ac98ba9 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Tue, 2 Jul 2019 14:54:56 +0800 Subject: [PATCH] 099-dnsmasq-filter-aaaa.patch: fix bug --- .../patches/099-dnsmasq-filter-aaaa.patch | 91 ++++++++----------- 1 file changed, 36 insertions(+), 55 deletions(-) mode change 100644 => 100755 package/network/services/dnsmasq/patches/099-dnsmasq-filter-aaaa.patch diff --git a/package/network/services/dnsmasq/patches/099-dnsmasq-filter-aaaa.patch b/package/network/services/dnsmasq/patches/099-dnsmasq-filter-aaaa.patch old mode 100644 new mode 100755 index 3b447b167c..359106a47f --- a/package/network/services/dnsmasq/patches/099-dnsmasq-filter-aaaa.patch +++ b/package/network/services/dnsmasq/patches/099-dnsmasq-filter-aaaa.patch @@ -1,74 +1,55 @@ -From 966471712184cfb3b067f2ae8dad9d8e2a896cae Mon Sep 17 00:00:00 2001 -From: Bearice Ren -Date: Tue, 20 Sep 2016 11:52:08 +0800 -Subject: [PATCH] add filter-aaaa option - ---- - src/dnsmasq.h | 3 ++- - src/option.c | 3 +++ - src/rfc1035.c | 9 +++++++++ - 3 files changed, 14 insertions(+), 1 deletion(-) - -diff --git a/src/dnsmasq.h b/src/dnsmasq.h -index 1896a64..e10d6c4 100644 --- a/src/dnsmasq.h +++ b/src/dnsmasq.h -@@ -238,7 +238,8 @@ struct event_desc { - #define OPT_SCRIPT_ARP 53 - #define OPT_MAC_B64 54 - #define OPT_MAC_HEX 55 --#define OPT_LAST 56 -+#define OPT_FILTER_AAAA 56 -+#define OPT_LAST 57 +@@ -259,7 +259,8 @@ struct event_desc { +#define OPT_TFTP_APREF_MAC 56 +#define OPT_RAPID_COMMIT 57 +#define OPT_UBUS 58 +-#define OPT_LAST 59 ++#define OPT_FILTER_AAAA 59 ++#define OPT_LAST 60 - /* extra flags for my_syslog, we use a couple of facilities since they are known - not to occupy the same bits as priorities, no matter how syslog.h is set up. */ -diff --git a/src/option.c b/src/option.c -index d8c57d6..1cc65bf 100644 +#define OPTION_BITS (sizeof(unsigned int)*8) +#define OPTION_SIZE ( (OPT_LAST/OPTION_BITS)+((OPT_LAST%OPTION_BITS)!=0) ) --- a/src/option.c +++ b/src/option.c -@@ -159,6 +159,7 @@ struct myoption { - #define LOPT_SCRIPT_ARP 347 - #define LOPT_DHCPTTL 348 - #define LOPT_TFTP_MTU 349 -+#define LOPT_FILTER_AAAA 350 - - #ifdef HAVE_GETOPT_LONG - static const struct option opts[] = -@@ -323,6 +324,7 @@ static const struct myoption opts[] = +@@ -166,6 +166,7 @@ struct myoption { +#define LOPT_UBUS 354 +#define LOPT_NAME_MATCH 355 +#define LOPT_CAA 356 ++#define LOPT_FILTER_AAAA 357 + +#ifdef HAVE_GETOPT_LONG +static const struct option opts[] = +@@ -333,6 +334,7 @@ static const struct myoption opts[] = { "dns-loop-detect", 0, 0, LOPT_LOOP_DETECT }, { "script-arp", 0, 0, LOPT_SCRIPT_ARP }, { "dhcp-ttl", 1, 0 , LOPT_DHCPTTL }, + { "filter-aaaa", 0, 0, LOPT_FILTER_AAAA }, - { NULL, 0, 0, 0 } - }; - -@@ -494,6 +496,7 @@ static struct { + { "dhcp-reply-delay", 1, 0, LOPT_REPLY_DELAY }, + { "dhcp-rapid-commit", 0, 0, LOPT_RAPID_COMMIT }, + { "dumpfile", 1, 0, LOPT_DUMPFILE }, +@@ -511,6 +513,7 @@ static struct { { LOPT_LOOP_DETECT, OPT_LOOP_DETECT, NULL, gettext_noop("Detect and remove DNS forwarding loops."), NULL }, - { LOPT_IGNORE_ADDR, ARG_DUP, "", gettext_noop("Ignore DNS responses containing ipaddr."), NULL }, - { LOPT_DHCPTTL, ARG_ONE, "", gettext_noop("Set TTL in DNS responses with DHCP-derived addresses."), NULL }, + { LOPT_IGNORE_ADDR, ARG_DUP, "", gettext_noop("Ignore DNS responses containing ipaddr."), NULL }, + { LOPT_DHCPTTL, ARG_ONE, "", gettext_noop("Set TTL in DNS responses with DHCP-derived addresses."), NULL }, + { LOPT_FILTER_AAAA, OPT_FILTER_AAAA, NULL, gettext_noop("Filter all AAAA requests."), NULL }, - { 0, 0, NULL, NULL, NULL } - }; - -diff --git a/src/rfc1035.c b/src/rfc1035.c -index 24d08c1..1594962 100644 + { LOPT_REPLY_DELAY, ARG_ONE, "", gettext_noop("Delay DHCP replies for at least number of seconds."), NULL }, + { LOPT_RAPID_COMMIT, OPT_RAPID_COMMIT, NULL, gettext_noop("Enables DHCPv4 Rapid Commit option."), NULL }, + { LOPT_DUMPFILE, ARG_ONE, "", gettext_noop("Path to debug packet dump file"), NULL }, --- a/src/rfc1035.c +++ b/src/rfc1035.c -@@ -1783,6 +1783,15 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen, +@@ -1968,6 +1968,12 @@ size_t answer_request(struct dns_header + if (!dryrun) + log_query(F_CONFIG | F_NEG, name, &addr, NULL); } ++ ++ if (qtype == T_AAAA && option_bool(OPT_FILTER_AAAA) ){ ++ ans = 1; ++ if (!dryrun) log_query(F_CONFIG | F_IPV6 | F_NEG, name, &addr, NULL); ++ break; ++ } } -+ //patch to filter aaaa forwards -+ if (qtype == T_AAAA && option_bool(OPT_FILTER_AAAA) ){ -+ //return a null reply -+ ans = 1; -+ if (!dryrun) log_query(F_CONFIG | F_IPV6 | F_NEG, name, &addr, NULL); -+ break; -+ } -+ //end of patch -+ if (!ans) return 0; /* failed to answer a question */ } ---