From edae62a54d41abacb2b7d9e9c71e682ffe347c50 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Tue, 2 Jul 2019 15:14:57 +0800 Subject: [PATCH] fix filter-aaaa --- .../patches/099-dnsmasq-filter-aaaa.patch | 55 -------------- .../310-dnsmasq-add-filter-aaaa-option.patch | 76 +++++++++++++++++++ 2 files changed, 76 insertions(+), 55 deletions(-) delete mode 100755 package/network/services/dnsmasq/patches/099-dnsmasq-filter-aaaa.patch create mode 100755 package/network/services/dnsmasq/patches/310-dnsmasq-add-filter-aaaa-option.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 deleted file mode 100755 index 359106a47f..0000000000 --- a/package/network/services/dnsmasq/patches/099-dnsmasq-filter-aaaa.patch +++ /dev/null @@ -1,55 +0,0 @@ ---- a/src/dnsmasq.h -+++ b/src/dnsmasq.h -@@ -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 - -#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 -@@ -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 }, - { "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_FILTER_AAAA, OPT_FILTER_AAAA, NULL, gettext_noop("Filter all AAAA requests."), NULL }, - { 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 -@@ -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; -+ } - } - - if (!ans) - return 0; /* failed to answer a question */ - } diff --git a/package/network/services/dnsmasq/patches/310-dnsmasq-add-filter-aaaa-option.patch b/package/network/services/dnsmasq/patches/310-dnsmasq-add-filter-aaaa-option.patch new file mode 100755 index 0000000000..284ee6e27c --- /dev/null +++ b/package/network/services/dnsmasq/patches/310-dnsmasq-add-filter-aaaa-option.patch @@ -0,0 +1,76 @@ +From 806b739bf9ac263c60fef915f71890b13a40fe52 Mon Sep 17 00:00:00 2001 +From: Totaly FuRy +Date: Sun, 14 Oct 2018 11:23:38 +0200 +Subject: [PATCH 2/2] dnsmasq: add filter-aaaa option + +--- + src/dnsmasq.h | 3 ++- + src/option.c | 3 +++ + src/rfc1035.c | 10 ++++++++++ + 3 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/src/dnsmasq.h b/src/dnsmasq.h +index 4229d72..0435a84 100644 +--- a/src/dnsmasq.h ++++ b/src/dnsmasq.h +@@ -263,7 +263,8 @@ struct event_desc { + #define OPT_RAPID_COMMIT 57 + #define OPT_UBUS 58 + #define OPT_METRIC 59 +-#define OPT_LAST 60 ++#define OPT_FILTER_AAAA 60 ++#define OPT_LAST 61 + + /* 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 552a4c7..998024e 100644 +--- a/src/option.c ++++ b/src/option.c +@@ -167,6 +167,7 @@ struct myoption { + #define LOPT_NAME_MATCH 355 + #define LOPT_CAA 356 + #define LOPT_METRIC_ORDER 357 ++#define LOPT_FILTER_AAAA 358 + + #ifdef HAVE_GETOPT_LONG + static const struct option opts[] = +@@ -333,6 +334,7 @@ static const struct myoption opts[] = + { "quiet-dhcp6", 0, 0, LOPT_QUIET_DHCP6 }, + { "quiet-ra", 0, 0, LOPT_QUIET_RA }, + { "dns-loop-detect", 0, 0, LOPT_LOOP_DETECT }, ++ { "filter-aaaa", 0, 0, LOPT_FILTER_AAAA }, + { "script-arp", 0, 0, LOPT_SCRIPT_ARP }, + { "dhcp-ttl", 1, 0 , LOPT_DHCPTTL }, + { "dhcp-reply-delay", 1, 0, LOPT_REPLY_DELAY }, +@@ -518,6 +520,7 @@ static struct { + { 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 }, + { LOPT_DUMPMASK, ARG_ONE, "", gettext_noop("Mask which packets to dump"), 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 6290f22..b160e2c 100644 +--- a/src/rfc1035.c ++++ b/src/rfc1035.c +@@ -1574,6 +1574,16 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen, + break; + #endif + ++ //patch to filter aaaa forwards ++ //found : https://gist.github.com/bearice/7d3dc0e63e003d752622 ++ 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 (qtype != type && qtype != T_ANY) + continue; + +-- +2.11.0