<meta http-equiv="Content-Type" content="text/html; charset=GB18030"><div>Hi, Simon,</div><div><br></div><div>Yes, server=/#/<ip> is not defined in the documentation, but it was indeed a valid <span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc">configuration before the domain-search rewrite (https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commit;h=12a9aa7c628e2d7dcd34949603848a3fb53fce9c), and had a dedicated log output format:</span></span></span></div><div><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc"><br></span></span></span></div><div><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc">$ src/dnsmasq -d -p 5353 -R -h -q -c 0 -S '1.1.1.1' -S '/#/8.8.8.8' -S '1.0.0.1'<br>dnsmasq: started, version 2.85-11-g50ccf9c cache disabled<br>dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth no-cryptohash no-DNSSEC loop-detect inotify dumpfile<br>dnsmasq: using nameserver 1.0.0.1#53<br>dnsmasq: using nameserver 8.8.8.8#53 for default  <br>dnsmasq: using nameserver 1.1.1.1#53<br></span></span></span></div><div><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc"></span></span></span><br><div class="J0lOec"><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc">Then you as the author, please don't tell me that you haven't seen the log in the format of "using nameserver <ip>#<port> for default</span></span></span><span class="zEswK"></span>".</div><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc"></span></span></span></div><div><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc"><br></span></span></span></div><div><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc">But after the domain-search rewrite, </span></span></span><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc"><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc">it is no longer available and is not even compatible with the old configuration at all:<br></span></span></span></span></span></span></div><div><br></div><div>$ src/dnsmasq -d -p 5353 -R -h -q -c 0 -S '1.1.1.1' -S '/#/8.8.8.8' -S '1.0.0.1'<br>dnsmasq: started, version 2.87test9 cache disabled<br>dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset no-nftset auth no-cryptohash no-DNSSEC loop-detect inotify dumpfile<br>dnsmasq: using nameserver 1.1.1.1#53<br>dnsmasq: using nameserver 8.8.8.8#53 for domain # <br>dnsmasq: using nameserver 1.0.0.1#53</div><div><br></div><div>dnsmasq no longer forwards any request to 8.8.8.8, unless the domain is #. Could you tell me what is "domain #"?</div><div><br></div><div>My patch is to get the "<span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc">using nameserver <ip>#<port> for default</span></span></span><span class="zEswK"></span>" back.</div><div><br></div><div>Sincere greetings,</div><div>лÖ°î (XIE Zhibang)<br></div><div><br><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc"><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0" data-number-of-phrases="1"><span class="Q4iAWc"></span></span></span></span></span></span></div><div style="position: relative;"><div><br></div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>From:</b>                                                                                                                        "Simon Kelley"                                                                                    <simon@thekelleys.org.uk>;</div><div><b>Date:</b> Mon, Aug 8, 2022 06:27 PM</div><div><b>To:</b> "dnsmasq-discuss"<dnsmasq-discuss@lists.thekelleys.org.uk>;<wbr></div><div></div><div><b>Subject:</b> Re: [Dnsmasq-discuss] [PATCH] Fix --server=/#/...... which was lostin 2.86</div></div><div><br></div>I'm not sure what you are trying to do here.<br><br>the /#/ domain is only defined in the man page for --address and it <br>states that it matches any domain which doesn't have a more specific match.<br><br>Even though,<br><br>server=/#/<ip><br><br>is not defined in the documentation; by extension it is exactly the same as<br><br>server=<ip><br><br><br>Which uses that server when a more specific domain doesn't match.<br><br><br><br>Please could you detail the configuration you are using, what the <br>current behaviour is, and what behaviour you think it should have?<br><br><br>Cheers,<br><br>Simon.<br><br><br><br><br><br>On 23/07/2022 17:06, Ð»Ö°î(XIE Zhibang) via Dnsmasq-discuss wrote:<br>>  > If the proposed change is related to commit 26bbf5a314d833bea say so.<br>>  > (Yes, I'm asking for an even better commit message.)<br>> I don't think the two are related, the only connection is that they are <br>> both victims.<br>> <br>>  > Why the reshuffle?  What about SERV_DEFAULT 65536 and avoiding the <br>> reshuffle?<br>> Then the order will be default server, IPv6 literal, IPv4 literal, <br>> all-zero literal......<br>> Just check the order_qsort() in domain-match.c.<br>> <br>> ---Original---<br>> *From:* "Geert Stappers via <br>> Dnsmasq-discuss"<dnsmasq-discuss@lists.thekelleys.org.uk><br>> *Date:* Sat, Jul 23, 2022 23:08 PM<br>> *To:* "dnsmasq-discuss"<dnsmasq-discuss@lists.thekelleys.org.uk>;<br>> *Subject:* Re: [Dnsmasq-discuss] [PATCH] Fix --server=/#/...... which <br>> was lostin 2.86<br>> <br>> On Sat, Jul 23, 2022 at 02:02:31PM +0000, Ð»Ö°î (XIE Zhibang) via <br>> Dnsmasq-discuss wrote:<br>>  > A victim of the domain-search rewrite.<br>>  > --server=/#/...... means to use the server for default. The new<br>>  > implementation orders the default server first, but because of the<br>>  > rewrote domain-search, it needs strict-order to ensure the default.<br>> <br>> <br>> Much better as only the "git commit summary".<br>> <br>> <br>> If the proposed change is related to commit 26bbf5a314d833bea say so.<br>> (Yes, I'm asking for an even better commit message.)<br>> <br>> <br>>  > Signed-off-by: Ð»Ö°î (XIE Zhibang) <Yeking@Red54.com><br>>  > ---<br>>  >  src/dnsmasq.h      | 34 ++++++++++++++++++----------------<br>>  >  src/domain-match.c | 15 +++++++++++----<br>>  >  src/network.c      |  2 +-<br>>  >  3 files changed, 30 insertions(+), 21 deletions(-)<br>>  ><br>>  > diff --git a/src/dnsmasq.h b/src/dnsmasq.h<br>>  > index a8937ce..7512756 100644<br>>  > --- a/src/dnsmasq.h<br>>  > +++ b/src/dnsmasq.h<br>>  > @@ -534,23 +534,24 @@ union mysockaddr {<br>>  ><br>>  ><br>>  >  /* The actual values here matter, since we sort on them to get <br>> records in the order<br>>  > -   IPv6 addr, IPv4 addr, all zero return, resolvconf servers, <br>> upstream server, no-data return  */<br>>  > +   IPv6 addr, IPv4 addr, all zero return, default server, resolvconf <br>> servers, upstream server, no-data return */<br>>  >  #define SERV_LITERAL_ADDRESS    1  /* addr is the answer, or NoDATA <br>> is the answer, depending on the next four flags */<br>>  >  #define SERV_USE_RESOLV         2  /* forward this domain in the <br>> normal way */<br>>  > -#define SERV_ALL_ZEROS          4  /* return all zeros for A and AAAA */<br>>  > -#define SERV_4ADDR              8  /* addr is IPv4 */<br>>  > -#define SERV_6ADDR             16  /* addr is IPv6 */<br>>  > -#define SERV_HAS_SOURCE        32  /* source address defined */<br>>  > -#define SERV_FOR_NODOTS        64  /* server for names with no <br>> domain part only */<br>>  > -#define SERV_WARNED_RECURSIVE 128  /* avoid warning spam */<br>>  > -#define SERV_FROM_DBUS        256  /* 1 if source is DBus */<br>>  > -#define SERV_MARK             512  /* for mark-and-delete and log <br>> code */<br>>  > -#define SERV_WILDCARD        1024  /* domain has leading '*' */<br>>  > -#define SERV_FROM_RESOLV     2048  /* 1 for servers from resolv, 0 <br>> for command line. */<br>>  > -#define SERV_FROM_FILE       4096  /* read from --servers-file */<br>>  > -#define SERV_LOOP            8192  /* server causes forwarding loop */<br>>  > -#define SERV_DO_DNSSEC      16384  /* Validate DNSSEC when using <br>> this server */<br>>  > -#define SERV_GOT_TCP        32768  /* Got some data from the TCP <br>> connection */<br>>  > +#define SERV_DEFAULT            4  /* Use the server for default <br>> (need strict-order) */<br>>  > +#define SERV_ALL_ZEROS          8  /* return all zeros for A and AAAA */<br>>  > +#define SERV_4ADDR             16  /* addr is IPv4 */<br>>  > +#define SERV_6ADDR             32  /* addr is IPv6 */<br>>  > +#define SERV_HAS_SOURCE        64  /* source address defined */<br>>  > +#define SERV_FOR_NODOTS       128  /* server for names with no <br>> domain part only */<br>>  > +#define SERV_WARNED_RECURSIVE 256  /* avoid warning spam */<br>>  > +#define SERV_FROM_DBUS        512  /* 1 if source is DBus */<br>>  > +#define SERV_MARK            1024  /* for mark-and-delete and log <br>> code */<br>>  > +#define SERV_WILDCARD        2048  /* domain has leading '*' */<br>>  > +#define SERV_FROM_RESOLV     4096  /* 1 for servers from resolv, 0 <br>> for command line. */<br>>  > +#define SERV_FROM_FILE       8192  /* read from --servers-file */<br>>  > +#define SERV_LOOP           16384  /* server causes forwarding loop */<br>>  > +#define SERV_DO_DNSSEC      32768  /* Validate DNSSEC when using <br>> this server */<br>>  > +#define SERV_GOT_TCP        65536  /* Got some data from the TCP <br>> connection */<br>> <br>> Why the reshuffle?  What about SERV_DEFAULT 65536 and avoiding the <br>> reshuffle?<br>> <br>> <br>> <br>> Regards<br>> Geert Stappers<br>> Fully aware that 2^16 does NOT fit in a 16-bit integer.<br>> -- <br>> Silence is hard to parse<br>> <br>> _______________________________________________<br>> Dnsmasq-discuss mailing list<br>> Dnsmasq-discuss@lists.thekelleys.org.uk<br>> https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss<br>> <br>> _______________________________________________<br>> Dnsmasq-discuss mailing list<br>> Dnsmasq-discuss@lists.thekelleys.org.uk<br>> https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss<br><br>_______________________________________________<br>Dnsmasq-discuss mailing list<br>Dnsmasq-discuss@lists.thekelleys.org.uk<br>https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss<br></div>