You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by am...@apache.org on 2015/07/17 22:33:43 UTC
trafficserver git commit: TS-3281: Add configuration option to not
split local domains during name resolution domain expansion.
Repository: trafficserver
Updated Branches:
refs/heads/master add34803d -> 9212544ba
TS-3281: Add configuration option to not split local domains during name resolution domain expansion.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/9212544b
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/9212544b
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/9212544b
Branch: refs/heads/master
Commit: 9212544ba75508ad8fda579b81cb71e2f549b739
Parents: add3480
Author: Masaori Koshiba <mk...@yahoo-corp.jp>
Authored: Fri Jul 17 15:31:50 2015 -0500
Committer: Alan M. Carroll <am...@apache.org>
Committed: Fri Jul 17 15:32:55 2015 -0500
----------------------------------------------------------------------
.../configuration/records.config.en.rst | 4 +++-
iocore/dns/DNS.cc | 4 ++--
iocore/dns/SplitDNS.cc | 3 ++-
lib/ts/ink_res_init.cc | 25 +++++++++++---------
lib/ts/ink_resolver.h | 2 +-
5 files changed, 22 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/9212544b/doc/reference/configuration/records.config.en.rst
----------------------------------------------------------------------
diff --git a/doc/reference/configuration/records.config.en.rst b/doc/reference/configuration/records.config.en.rst
index 161676a..8ada5e1 100644
--- a/doc/reference/configuration/records.config.en.rst
+++ b/doc/reference/configuration/records.config.en.rst
@@ -1748,7 +1748,9 @@ DNS
.. ts:cv:: CONFIG proxy.config.dns.search_default_domains INT 0
:Reloadable:
- Enables (``1``) or disables (``0``) local domain expansion.
+ - ``0`` = disables local domain expansion
+ - ``1`` = enable local domain expansion
+ - ``2`` = enable local domain expansion, but restrain splitting local domain name
Traffic Server can attempt to resolve unqualified hostnames by
expanding to the local domain. For example if a client makes a
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/9212544b/iocore/dns/DNS.cc
----------------------------------------------------------------------
diff --git a/iocore/dns/DNS.cc b/iocore/dns/DNS.cc
index 157e716..4601147 100644
--- a/iocore/dns/DNS.cc
+++ b/iocore/dns/DNS.cc
@@ -305,9 +305,9 @@ DNSProcessor::dns_init()
}
ats_free(ns_list);
}
- // The default domain (4th param) and search list (5th param) will
+ // The default domain (5th param) and search list (6th param) will
// come from /etc/resolv.conf.
- if (ink_res_init(&l_res, nameserver, nserv, NULL, NULL, dns_resolv_conf) < 0)
+ if (ink_res_init(&l_res, nameserver, nserv, dns_search, NULL, NULL, dns_resolv_conf) < 0)
Warning("Failed to build DNS res records for the servers (%s). Using resolv.conf.", dns_ns_list);
// Check for local forced bindings.
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/9212544b/iocore/dns/SplitDNS.cc
----------------------------------------------------------------------
diff --git a/iocore/dns/SplitDNS.cc b/iocore/dns/SplitDNS.cc
index 346e4a9..6ca614f 100644
--- a/iocore/dns/SplitDNS.cc
+++ b/iocore/dns/SplitDNS.cc
@@ -499,7 +499,8 @@ SplitDNSRecord::Init(matcher_line *line_info)
ink_res_state res = new ts_imp_res_state;
memset(res, 0, sizeof(ts_imp_res_state));
- if ((-1 == ink_res_init(res, m_servers.x_server_ip, m_dnsSrvr_cnt, m_servers.x_def_domain, m_servers.x_domain_srch_list, NULL))) {
+ if ((-1 == ink_res_init(res, m_servers.x_server_ip, m_dnsSrvr_cnt, dns_search, m_servers.x_def_domain,
+ m_servers.x_domain_srch_list, NULL))) {
char ab[INET6_ADDRPORTSTRLEN];
return config_parse_error("Failed to build res record for the servers %s ...",
ats_ip_ntop(&m_servers.x_server_ip[0].sa, ab, sizeof ab));
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/9212544b/lib/ts/ink_res_init.cc
----------------------------------------------------------------------
diff --git a/lib/ts/ink_res_init.cc b/lib/ts/ink_res_init.cc
index b86b3cf..958f2dd 100644
--- a/lib/ts/ink_res_init.cc
+++ b/lib/ts/ink_res_init.cc
@@ -292,6 +292,7 @@ int
ink_res_init(ink_res_state statp, ///< State object to update.
IpEndpoint const *pHostList, ///< Additional servers.
size_t pHostListSize, ///< # of entries in @a pHostList.
+ int dnsSearch, /// Option of search_default_domains.
const char *pDefDomain, ///< Default domain (may be NULL).
const char *pSearchList, ///< Unknown
const char *pResolvConf ///< Path to configuration file.
@@ -532,19 +533,21 @@ ink_res_init(ink_res_state statp, ///< State object to update.
*pp++ = statp->defdname;
*pp = NULL;
- dots = 0;
- for (cp = statp->defdname; *cp; cp++)
- dots += (*cp == '.');
+ if (dnsSearch == 1) {
+ dots = 0;
+ for (cp = statp->defdname; *cp; cp++)
+ dots += (*cp == '.');
- cp = statp->defdname;
- while (pp < statp->dnsrch + INK_MAXDFLSRCH) {
- if (dots < INK_LOCALDOMAINPARTS)
- break;
- cp = strchr(cp, '.') + 1; /*%< we know there is one */
- *pp++ = cp;
- dots--;
+ cp = statp->defdname;
+ while (pp < statp->dnsrch + INK_MAXDFLSRCH) {
+ if (dots < INK_LOCALDOMAINPARTS)
+ break;
+ cp = strchr(cp, '.') + 1; /*%< we know there is one */
+ *pp++ = cp;
+ dots--;
+ }
+ *pp = NULL;
}
- *pp = NULL;
#ifdef DEBUG
if (statp->options & INK_RES_DEBUG) {
printf(";; res_init()... default dnsrch list:\n");
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/9212544b/lib/ts/ink_resolver.h
----------------------------------------------------------------------
diff --git a/lib/ts/ink_resolver.h b/lib/ts/ink_resolver.h
index 314676b..5d2546a 100644
--- a/lib/ts/ink_resolver.h
+++ b/lib/ts/ink_resolver.h
@@ -266,7 +266,7 @@ struct ts_imp_res_state {
};
typedef ts_imp_res_state *ink_res_state;
-int ink_res_init(ink_res_state, IpEndpoint const *pHostList, size_t pHostListSize, const char *pDefDomain = NULL,
+int ink_res_init(ink_res_state, IpEndpoint const *pHostList, size_t pHostListSize, int dnsSearch, const char *pDefDomain = NULL,
const char *pSearchList = NULL, const char *pResolvConf = NULL);
int ink_res_mkquery(ink_res_state, int, const char *, int, int, const unsigned char *, int, const unsigned char *, unsigned char *,