Make --address=/example.com/ equivalent to --server=/example.com/

This commit is contained in:
Simon Kelley
2015-03-19 22:50:22 +00:00
parent ff841ebf5a
commit 979fe86bc8
3 changed files with 7 additions and 6 deletions

View File

@@ -460,7 +460,7 @@ but provides some syntactic sugar to make specifying address-to-name queries eas
is exactly equivalent to is exactly equivalent to
.B --server=/3.2.1.in-addr.arpa/192.168.0.1 .B --server=/3.2.1.in-addr.arpa/192.168.0.1
.TP .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. Specify an IP address to return for any host in the given domains.
Queries in the domains are never forwarded and always replied to Queries in the domains are never forwarded and always replied to
with the specified IP address which may be IPv4 or IPv6. To give 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 additional facility that /#/ matches any domain. Thus
--address=/#/1.2.3.4 will always return 1.2.3.4 for any query not --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 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 .TP
.B --ipset=/<domain>/[domain/]<ipset>[,<ipset>] .B --ipset=/<domain>/[domain/]<ipset>[,<ipset>]
Places the resolved IP addresses of queries for the specified domains Places the resolved IP addresses of queries for the specified domains

View 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)) 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); my_syslog(LOG_INFO, _("using local addresses only for %s %s"), s1, s2);
else if (serv->flags & SERV_USE_RESOLV) else if (serv->flags & SERV_USE_RESOLV)
my_syslog(LOG_INFO, _("using standard nameservers for %s %s"), s1, s2); 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); my_syslog(LOG_INFO, _("using nameserver %s#%d for %s %s"), daemon->namebuff, port, s1, s2);
} }
#ifdef HAVE_LOOP #ifdef HAVE_LOOP

View 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)) if (!(newlist->flags & SERV_NO_REBIND))
newlist->flags |= SERV_NO_ADDR; /* no server */ newlist->flags |= SERV_NO_ADDR; /* no server */
if (newlist->flags & SERV_LITERAL_ADDRESS)
ret_err(gen_err);
} }
else if (strcmp(arg, "#") == 0) else if (strcmp(arg, "#") == 0)