]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/dns_resolve: add 'weight' to record
authorxie xingguo <xie.xingguo@zte.com.cn>
Fri, 15 Mar 2019 06:24:38 +0000 (14:24 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Mon, 18 Mar 2019 02:29:11 +0000 (10:29 +0800)
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/common/dns_resolve.cc
src/common/dns_resolve.h
src/test/common/dns_resolve.cc

index eb223a6836c2d0ccc4eaf863a65bae08bbdb3c07..b427234f134b9fd787f7091f7a0ee75be45cb3f7 100644 (file)
@@ -337,7 +337,7 @@ int DNSResolver::resolve_srv_hosts(CephContext *cct, const string& service_name,
 
     auto rdata = ns_rr_rdata(rr);
     uint16_t priority = ns_get16(rdata); rdata += NS_INT16SZ;
-    rdata += NS_INT16SZ;       // weight
+    uint16_t weight = ns_get16(rdata); rdata += NS_INT16SZ;
     uint16_t port = ns_get16(rdata); rdata += NS_INT16SZ;
     memset(full_target, 0, sizeof(full_target));
     ns_name_uncompress(ns_msg_base(handle), ns_msg_end(handle),
@@ -360,7 +360,7 @@ int DNSResolver::resolve_srv_hosts(CephContext *cct, const string& service_name,
        return -EINVAL;
       }
       target = target.substr(0, end);
-      (*srv_hosts)[target] = {priority, addr};
+      (*srv_hosts)[target] = {priority, weight, addr};
     }
   }
   return 0;
index f5d94109c6e71c4ce3389a187b7825d34620110d..d3bbf103b52da32cdfbacbfbe7e8f7fcc64c46c8 100644 (file)
@@ -79,6 +79,7 @@ class DNSResolver {
 
     struct Record {
       uint16_t priority;
+      uint16_t weight;
       entity_addr_t addr;
     };
 
index 9bd2a93cdca0bd3d916bf7628557f1ae05337731..e5b1e5f7b9defb83650c14ecc6d4478b4457a363 100644 (file)
@@ -148,15 +148,21 @@ TEST_F(DNSResolverTest, resolve_srv_hosts_empty_domain) {
   os << it->second.addr;
   ASSERT_EQ(os.str(), "v2:192.168.1.11:6789/0");
   os.str("");
+  ASSERT_EQ(it->second.priority, 10);
+  ASSERT_EQ(it->second.weight, 40);
   it = records.find("mon.b");
   ASSERT_NE(it, records.end());
   os << it->second.addr;
   ASSERT_EQ(os.str(), "v2:192.168.1.12:6789/0");
   os.str("");
+  ASSERT_EQ(it->second.priority, 10);
+  ASSERT_EQ(it->second.weight, 35);
   it = records.find("mon.c");
   ASSERT_NE(it, records.end());
   os << it->second.addr;
   ASSERT_EQ(os.str(), "v2:192.168.1.13:6789/0");
+  ASSERT_EQ(it->second.priority, 10);
+  ASSERT_EQ(it->second.weight, 25);
 }
 
 TEST_F(DNSResolverTest, resolve_srv_hosts_full_domain) {