Commit 9a3ec071 authored by Thomas Markwalder's avatar Thomas Markwalder
Browse files

[3222] Made b10-dhcp-ddns server matching case insensitve

The method used in D2 to match a FQDN (or reverse IP addrss)
to a list of servers, DdnsDomainListMgr::matchDomain(), was
made case insensitive.
parent e6d57d89
......@@ -20,6 +20,7 @@
#include <boost/foreach.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <string>
......@@ -131,7 +132,7 @@ DdnsDomainListMgr::matchDomain(const std::string& fqdn, DdnsDomainPtr& domain) {
// If the lengths are identical and the names match we're done.
if (req_len == dom_len) {
if (fqdn == domain_name) {
if (boost::iequals(fqdn,domain_name)) {
// exact match, done
domain = map_pair.second;
return (true);
......@@ -143,7 +144,7 @@ DdnsDomainListMgr::matchDomain(const std::string& fqdn, DdnsDomainPtr& domain) {
// prevents "onetwo.net" from matching "two.net".
size_t offset = req_len - dom_len;
if ((fqdn[offset - 1] == '.') &&
(fqdn.compare(offset, std::string::npos, domain_name) == 0)) {
(boost::iequals(fqdn.substr(offset), domain_name))) {
// Fqdn contains domain name, keep it if its better than
// any we have matched so far.
if (dom_len > match_len) {
......
......@@ -1066,6 +1066,10 @@ TEST_F(D2CfgMgrTest, forwardMatch) {
EXPECT_TRUE(cfg_mgr_->matchForward("tmark.org", match));
EXPECT_EQ("tmark.org", match->getName());
// Verify that search is case insensisitive.
EXPECT_TRUE(cfg_mgr_->matchForward("TMARK.ORG", match));
EXPECT_EQ("tmark.org", match->getName());
// Verify that an exact match works.
EXPECT_TRUE(cfg_mgr_->matchForward("one.tmark.org", match));
EXPECT_EQ("one.tmark.org", match->getName());
......@@ -1207,7 +1211,8 @@ TEST_F(D2CfgMgrTest, matchReverse) {
" \"dns_servers\" : [ "
" { \"ip_address\": \"127.0.0.1\" } "
" ] }, "
"{ \"name\": \"2.0.3.0.8.B.D.0.1.0.0.2.ip6.arpa.\" , "
// Note mixed case to test case insensitivity.
"{ \"name\": \"2.0.3.0.8.b.d.0.1.0.0.2.IP6.ARPA.\" , "
" \"dns_servers\" : [ "
" { \"ip_address\": \"127.0.0.1\" } "
" ] },"
......@@ -1247,7 +1252,7 @@ TEST_F(D2CfgMgrTest, matchReverse) {
// Verify a IPv6 match.
EXPECT_TRUE(cfg_mgr_->matchReverse("2001:db8:302:99::",match));
EXPECT_EQ("2.0.3.0.8.B.D.0.1.0.0.2.ip6.arpa.", match->getName());
EXPECT_EQ("2.0.3.0.8.b.d.0.1.0.0.2.IP6.ARPA.", match->getName());
// Verify a IPv6 wild card match.
EXPECT_TRUE(cfg_mgr_->matchReverse("2001:db8:99:302::",match));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment