Skip to content

Commit

Permalink
Merge "Default zones will have an empty forwarders {} list."
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Mar 16, 2016
2 parents 3dfccc9 + 638e7b0 commit fdb705e
Show file tree
Hide file tree
Showing 6 changed files with 385 additions and 48 deletions.
25 changes: 12 additions & 13 deletions src/dns/bind/named_config.cc
Expand Up @@ -74,13 +74,6 @@ void NamedConfig::ChangeView(const VirtualDnsConfig *vdns) {
zones.push_back(old_domain);
RemoveZoneFiles(vdns, zones);
}
// If reverse resolution is disabled now, remove the reverse zone files
bool reverse_resolution = vdns->IsReverseResolutionEnabled();
if (!reverse_resolution && vdns->HasReverseResolutionChanged()) {
ZoneList zones;
MakeReverseZoneList(vdns, zones);
RemoveZoneFiles(vdns, zones);
}
}

void NamedConfig::DelView(const VirtualDnsConfig *vdns) {
Expand Down Expand Up @@ -262,11 +255,13 @@ void NamedConfig::WriteViewConfig(const VirtualDnsConfig *updated_vdns) {
file_ << " forwarders {" << default_forwarders_ << "};" << endl;
}

bool reverse_resolution = curr_vdns->IsReverseResolutionEnabled();
for (unsigned int i = 0; i < zones.size(); i++) {
WriteZone(view_name, zones[i], true);
WriteZone(view_name, zones[i], true, reverse_resolution, next_dns);
// update the zone view map, to be used to generate default view
if (curr_vdns->IsExternalVisible())
zone_view_map.insert(ZoneViewPair(zones[i], view_name));

}

file_ << "};" << endl << endl;
Expand All @@ -290,18 +285,25 @@ void NamedConfig::WriteDefaultView(ZoneViewMap &zone_view_map) {
}
for (ZoneViewMap::iterator it = zone_view_map.begin();
it != zone_view_map.end(); ++it) {
WriteZone(it->second, it->first, false);
WriteZone(it->second, it->first, false, false, "");
}
file_ << "};" << endl << endl;
}

void NamedConfig::WriteZone(const string &vdns, const string &name,
bool is_master) {
bool is_master, bool is_rr, const string &next_dns) {
file_ << " zone \"" << name << "\" IN \{" << endl;
if (is_master) {
file_ << " type master;" << endl;
file_ << " file \"" << GetZoneFilePath(vdns, name) << "\";" << endl;
file_ << " allow-update {127.0.0.1;};" << endl;
if (!next_dns.empty()) {
if (!is_rr && (name.find("in-addr.arpa") != std::string::npos)) {
file_ << " forwarders { };" << endl;
}
} else {
file_ << " forwarders { };" << endl;
}
} else {
file_ << " type static-stub;" << endl;
file_ << " virtual-server-name \"" << vdns << "\";" << endl;
Expand Down Expand Up @@ -404,9 +406,6 @@ void NamedConfig::MakeZoneList(const VirtualDnsConfig *vdns_config,
zones.push_back(dns_domain);

// Reverse zones
if (!vdns_config->IsReverseResolutionEnabled()) {
return;
}
MakeReverseZoneList(vdns_config, zones);
}

Expand Down
2 changes: 1 addition & 1 deletion src/dns/bind/named_config.h
Expand Up @@ -114,7 +114,7 @@ class NamedConfig {
void WriteViewConfig(const VirtualDnsConfig *updated_vdns);
void WriteDefaultView(ZoneViewMap &zone_view_map);
void WriteZone(const std::string &vdns, const std::string &name,
bool is_master);
bool is_master, bool is_rr, const std::string &next_dns);
void AddZoneFiles(ZoneList &zones, const VirtualDnsConfig *vdns);
void RemoveZoneFile(const VirtualDnsConfig *vdns, std::string &zone);
std::string GetZoneNSName(const std::string domain_name);
Expand Down
6 changes: 3 additions & 3 deletions src/dns/mgr/dns_mgr.cc
Expand Up @@ -183,13 +183,13 @@ void DnsManager::DnsPtrZone(const Subnet &subnet, const VirtualDnsConfig *vdns,
if (!bind_status_.IsUp())
return;

bool reverse_resolution = vdns->IsReverseResolutionEnabled();
std::string dns_domain = vdns->GetDomainName();
if (dns_domain.empty() || !reverse_resolution) {
if (dns_domain.empty()) {
DNS_BIND_TRACE(DnsBindTrace, "Ptr Zone <" << vdns->GetName() <<
"> ; ignoring event: " << DnsConfig::ToEventString(ev) <<
" Domain: " << dns_domain << " Reverse Resolution: " <<
(reverse_resolution ? "enabled" : "disabled"));
(vdns->IsReverseResolutionEnabled()? "enabled" :
"disabled"));
return;
}

Expand Down
70 changes: 39 additions & 31 deletions src/dns/test/dns_bind_test.cc
Expand Up @@ -271,16 +271,13 @@ TEST_F(DnsBindTest, Reordered) {
boost::replace_all(content, "true", "false");
EXPECT_TRUE(parser_.Parse(content));
task_util::WaitForIdle();
for (int i = 0; i < 4; i++) {
EXPECT_TRUE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.rr_ext_disabled"));
// Now we create all zones irrespective of reverse_resolution
for (int i = 0; i < 17; i++) {
string s1 = cfg->GetZoneFilePath(dns_domains[i]);
EXPECT_TRUE(FileExists(s1.c_str()));
}
for (int i = 4; i < 17; i++) {
string s1 = cfg->GetZoneFilePath(dns_domains[i]);
EXPECT_FALSE(FileExists(s1.c_str()));
}
EXPECT_TRUE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.9"));

// change external-visible and reverse_resolution fields to true
boost::replace_all(content, "false", "true");
Expand Down Expand Up @@ -547,20 +544,21 @@ TEST_F(DnsBindTest, ReorderedExternalReverseResolutionDisabled) {
};

EXPECT_TRUE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.9"));
"controller/src/dns/testdata/named.conf.rr_ext_disabled"));
for (int i = 0; i < 4; i++) {
string s1 = cfg->GetZoneFilePath(dns_domains[i]);
EXPECT_TRUE(FileExists(s1.c_str()));
}
for (int i = 4; i < 17; i++) {
string s1 = cfg->GetZoneFilePath(dns_domains[i]);
EXPECT_FALSE(FileExists(s1.c_str()));
EXPECT_TRUE(FileExists(s1.c_str()));
}

EXPECT_TRUE(FileExists("rndc.conf"));
EXPECT_TRUE(FilesEqual("rndc.conf",
"controller/src/dns/testdata/rndc.conf"));

// Case1 : Add subnet to an ipam
const char config_change[] = "\
<config>\
<virtual-network-network-ipam ipam='ipam2' vn='vn3'> \
Expand Down Expand Up @@ -589,14 +587,16 @@ TEST_F(DnsBindTest, ReorderedExternalReverseResolutionDisabled) {
}
for (int i = 4; i < 17; i++) {
string s1 = cfg->GetZoneFilePath(dns_domains[i]);
EXPECT_FALSE(FileExists(s1.c_str()));
EXPECT_TRUE(FileExists(s1.c_str()));
}

string zone = "3.2.25.in-addr.arpa";
string s1 = cfg->GetZoneFilePath(zone);
EXPECT_FALSE(FileExists(s1.c_str()));
EXPECT_TRUE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.9"));
EXPECT_TRUE(FileExists(s1.c_str()));
EXPECT_FALSE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.rr_ext_disabled.2"));

// Case 2: Add and Delete a subnet from an ipam
const char config_change_1[] = "\
<config>\
<virtual-network-network-ipam ipam='ipam1' vn='vn1'> \
Expand Down Expand Up @@ -648,24 +648,25 @@ TEST_F(DnsBindTest, ReorderedExternalReverseResolutionDisabled) {
string new_dns_domains[] = {
"3.2.129.in-addr.arpa",
"3.2.130.in-addr.arpa",
"3.2.25.in-addr.arpa",
};


EXPECT_TRUE(parser_.Parse(config_change_1));
task_util::WaitForIdle();
EXPECT_TRUE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.9"));
for (int i = 0; i < 4; i++) {
EXPECT_FALSE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.rr_ext_disabled"));

for (int i = 0; i < 12; i++) {
string s1 = cfg->GetZoneFilePath(dns_domains[i]);
EXPECT_TRUE(FileExists(s1.c_str()));
}
for (int i = 4; i < 17; i++) {
for (int i = 12; i < 17; i++) {
string s1 = cfg->GetZoneFilePath(dns_domains[i]);
EXPECT_FALSE(FileExists(s1.c_str()));
}
for (int i = 0; i < 3; i++) {
for (int i = 0; i < 2; i++) {
string s1 = cfg->GetZoneFilePath(new_dns_domains[i]);
EXPECT_FALSE(FileExists(s1.c_str()));
EXPECT_TRUE(FileExists(s1.c_str()));
}

const char config_change_2[] = "\
Expand Down Expand Up @@ -707,8 +708,19 @@ TEST_F(DnsBindTest, ReorderedExternalReverseResolutionDisabled) {

EXPECT_TRUE(parser_.Parse(config_change_2));
task_util::WaitForIdle();
EXPECT_TRUE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.9"));

string deleted_dns_subnets[] = {
"3.2.129.in-addr.arpa",
"3.2.130.in-addr.arpa",
"13.2.12.in-addr.arpa",
};

for (int i = 0; i < 3; i++) {
string s1 = cfg->GetZoneFilePath(deleted_dns_subnets[i]);
EXPECT_FALSE(FileExists(s1.c_str()));
}
EXPECT_FALSE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.rr_ext_disabled"));

const char config_change_3[] = "\
<delete>\
Expand All @@ -735,31 +747,31 @@ TEST_F(DnsBindTest, ReorderedExternalReverseResolutionDisabled) {
string deleted_domains[] = {
"3.2.129.in-addr.arpa",
"3.2.130.in-addr.arpa",
"13.2.12.in-addr.arpa",
"0.3.13.in-addr.arpa",
"13.2.12.in-addr.arpa",
"1.3.13.in-addr.arpa",
"2.3.13.in-addr.arpa",
"3.3.13.in-addr.arpa",
};

string remaining_domains[] = {
"3.2.25.in-addr.arpa",
"192.1.1.in-addr.arpa",
"193.1.1.in-addr.arpa",
"3.2.1.in-addr.arpa",
"3.2.25.in-addr.arpa",
};

EXPECT_TRUE(parser_.Parse(config_change_3));
task_util::WaitForIdle();
EXPECT_TRUE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.9"));
EXPECT_FALSE(FilesEqual(cfg->named_config_file().c_str(),
"controller/src/dns/testdata/named.conf.rr_ext_disabled"));
for (int i = 0; i < 7; i++) {
string s1 = cfg->GetZoneFilePath(deleted_domains[i]);
EXPECT_FALSE(FileExists(s1.c_str()));
}
for (int i = 0; i < 4; i++) {
string s1 = cfg->GetZoneFilePath(remaining_domains[i]);
EXPECT_FALSE(FileExists(s1.c_str()));
EXPECT_TRUE(FileExists(s1.c_str()));
}

const char config_change_4[] = "\
Expand All @@ -786,10 +798,6 @@ TEST_F(DnsBindTest, ReorderedExternalReverseResolutionDisabled) {
string s1 = cfg->GetZoneFilePath(dns_domains[i]);
EXPECT_FALSE(FileExists(s1.c_str()));
}
for (int i = 0; i < 3; i++) {
string s1 = cfg->GetZoneFilePath(new_dns_domains[i]);
EXPECT_FALSE(FileExists(s1.c_str()));
}
}

} // namespace
Expand Down

0 comments on commit fdb705e

Please sign in to comment.