]> git.ipfire.org Git - people/ms/dnsmasq.git/commitdiff
Make --address=/example.com/ equivalent to --server=/example.com/
authorSimon Kelley <simon@thekelleys.org.uk>
Thu, 19 Mar 2015 22:50:22 +0000 (22:50 +0000)
committerSimon Kelley <simon@thekelleys.org.uk>
Thu, 19 Mar 2015 22:50:22 +0000 (22:50 +0000)
man/dnsmasq.8
src/network.c
src/option.c

index 2db780d90987f675fe70d72f9333aa1fd41bbf98..1f1dd7b69c53a10589e0440cb9fbd6b43792c7dd 100644 (file)
@@ -460,7 +460,7 @@ but provides some syntactic sugar to make specifying address-to-name queries eas
 is exactly equivalent to 
 .B --server=/3.2.1.in-addr.arpa/192.168.0.1
 .TP
-.B \-A, --address=/<domain>/[domain/]<ipaddr>
+.B \-A, --address=/<domain>/[domain/][<ipaddr>]
 Specify an IP address to return for any host in the given domains.
 Queries in the domains are never forwarded and always replied to
 with the specified IP address which may be IPv4 or IPv6. To give
@@ -472,7 +472,10 @@ domain specification works in the same was as for --server, with the
 additional facility that /#/ matches any domain. Thus
 --address=/#/1.2.3.4 will always return 1.2.3.4 for any query not
 answered from /etc/hosts or DHCP and not sent to an upstream
-nameserver by a more specific --server directive.
+nameserver by a more specific --server directive. As for --server,
+one or more domains with no address returns a no-such-domain answer, so
+--address=/example.com/ is equivalent to --server=/example.com/ and returns 
+NXDOMAIN for example.com and all its subdomains.
 .TP
 .B --ipset=/<domain>/[domain/]<ipset>[,<ipset>]
 Places the resolved IP addresses of queries for the specified domains
index 7045253d467b88e9375882c6ada14153a116c45c..992f023c31de67887c94c8bda40b87d76a3451b3 100644 (file)
@@ -1459,7 +1459,7 @@ void check_servers(void)
            }
        }
       
-      if (!(serv->flags & SERV_NO_REBIND))
+      if (!(serv->flags & SERV_NO_REBIND) && !(serv->flags & SERV_LITERAL_ADDRESS))
        {
          if (serv->flags & (SERV_HAS_DOMAIN | SERV_FOR_NODOTS | SERV_USE_RESOLV))
            {
@@ -1475,7 +1475,7 @@ void check_servers(void)
                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 if (!(serv->flags & SERV_LITERAL_ADDRESS))
+             else 
                my_syslog(LOG_INFO, _("using nameserver %s#%d for %s %s"), daemon->namebuff, port, s1, s2);
            }
 #ifdef HAVE_LOOP
index eace40bb566c9430fb68582f5a0739102953606d..3009eb545fdec0469cc400763c9f9ef8133205b8 100644 (file)
@@ -2284,8 +2284,6 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
          {
            if (!(newlist->flags & SERV_NO_REBIND))
              newlist->flags |= SERV_NO_ADDR; /* no server */
-           if (newlist->flags & SERV_LITERAL_ADDRESS)
-             ret_err(gen_err);
          }
 
        else if (strcmp(arg, "#") == 0)