From: xie xingguo Date: Fri, 15 Mar 2019 06:24:38 +0000 (+0800) Subject: common/dns_resolve: add 'weight' to record X-Git-Tag: v15.0.0~143^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e6b6bd8092b8fc11c14f29894227d6d4ec691957;p=ceph.git common/dns_resolve: add 'weight' to record Signed-off-by: xie xingguo --- diff --git a/src/common/dns_resolve.cc b/src/common/dns_resolve.cc index eb223a6836c2..b427234f134b 100644 --- a/src/common/dns_resolve.cc +++ b/src/common/dns_resolve.cc @@ -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; diff --git a/src/common/dns_resolve.h b/src/common/dns_resolve.h index f5d94109c6e7..d3bbf103b52d 100644 --- a/src/common/dns_resolve.h +++ b/src/common/dns_resolve.h @@ -79,6 +79,7 @@ class DNSResolver { struct Record { uint16_t priority; + uint16_t weight; entity_addr_t addr; }; diff --git a/src/test/common/dns_resolve.cc b/src/test/common/dns_resolve.cc index 9bd2a93cdca0..e5b1e5f7b9de 100644 --- a/src/test/common/dns_resolve.cc +++ b/src/test/common/dns_resolve.cc @@ -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) {