Repository: mesos Updated Branches: refs/heads/master a44d61d8d -> e32163cee
Converted diagnosis socket Info to a struct. Review: https://reviews.apache.org/r/26290 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/e32163ce Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/e32163ce Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/e32163ce Branch: refs/heads/master Commit: e32163ceeac4ebd99ed75733d7caaeaa2ebe0602 Parents: a44d61d Author: Jie Yu <[email protected]> Authored: Thu Oct 2 15:37:31 2014 -0700 Committer: Jie Yu <[email protected]> Committed: Thu Oct 2 15:37:41 2014 -0700 ---------------------------------------------------------------------- src/linux/routing/diagnosis/diagnosis.hpp | 42 ++++++++------------ .../isolators/network/port_mapping.cpp | 12 +++--- src/tests/routing_tests.cpp | 4 +- 3 files changed, 23 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/e32163ce/src/linux/routing/diagnosis/diagnosis.hpp ---------------------------------------------------------------------- diff --git a/src/linux/routing/diagnosis/diagnosis.hpp b/src/linux/routing/diagnosis/diagnosis.hpp index 2edde67..9161841 100644 --- a/src/linux/routing/diagnosis/diagnosis.hpp +++ b/src/linux/routing/diagnosis/diagnosis.hpp @@ -60,9 +60,8 @@ const int ALL = MAX - 1; // The diagnosis information of a socket. We only included a few // members of 'struct idiagnl_msg' from libnl3-idiag, but more could // be added later on. -class Info +struct Info { -public: Info(int _family, int _state, const Option<uint16_t>& _sourcePort, @@ -70,39 +69,30 @@ public: const Option<net::IP>& _sourceIP, const Option<net::IP>& _destinationIP, const Option<struct tcp_info>& _tcpInfo) - : family_(_family), - state_(_state), - sourcePort_(_sourcePort), - destinationPort_(_destinationPort), - sourceIP_(_sourceIP), - destinationIP_(_destinationIP), - tcpInfo_(_tcpInfo) {} - - int family() const { return family_; } - int state() const { return state_; } - const Option<uint16_t>& sourcePort() const { return sourcePort_; } - const Option<uint16_t>& destinationPort() const { return destinationPort_; } - const Option<net::IP>& sourceIP() const { return sourceIP_; } - const Option<net::IP>& destinationIP() const { return destinationIP_; } - const Option<struct tcp_info>& tcpInfo() const { return tcpInfo_; } - -private: - int family_; - int state_; + : family(_family), + state(_state), + sourcePort(_sourcePort), + destinationPort(_destinationPort), + sourceIP(_sourceIP), + destinationIP(_destinationIP), + tcpInfo(_tcpInfo) {} + + int family; + int state; // sourcePort, destinationPort, sourceIP and destinationIP should // all be present because this version of kernel API that libnl3 // uses can only return TCP sockets. We leave them as optional here // because future support of other families could leave them as // empty values. - Option<uint16_t> sourcePort_; - Option<uint16_t> destinationPort_; - Option<net::IP> sourceIP_; - Option<net::IP> destinationIP_; + Option<uint16_t> sourcePort; + Option<uint16_t> destinationPort; + Option<net::IP> sourceIP; + Option<net::IP> destinationIP; // tcp_info is included in the kernel header files so we expose it // directly. - Option<struct tcp_info> tcpInfo_; + Option<struct tcp_info> tcpInfo; }; http://git-wip-us.apache.org/repos/asf/mesos/blob/e32163ce/src/slave/containerizer/isolators/network/port_mapping.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/network/port_mapping.cpp b/src/slave/containerizer/isolators/network/port_mapping.cpp index 96d68ad..88ae509 100644 --- a/src/slave/containerizer/isolators/network/port_mapping.cpp +++ b/src/slave/containerizer/isolators/network/port_mapping.cpp @@ -555,27 +555,25 @@ int PortMappingStatistics::execute() foreach (const diagnosis::socket::Info& info, infos.get()) { // We double check on family regardless. - if (info.family() != AF_INET) { + if (info.family != AF_INET) { continue; } // These connections have already been established, so they should // have a valid destination IP. - CHECK_SOME(info.destinationIP()); + CHECK_SOME(info.destinationIP); // We don't care about the RTT value of a local connection. // TODO(chzhcn): Technically, we should check if the destination // IP is any of the 127.0.0.1/8 IP addresses. - if (info.destinationIP().get().address() == LOOPBACK_IP.address()) { + if (info.destinationIP.get().address() == LOOPBACK_IP.address()) { continue; } - Option<struct tcp_info> tcpInfo = info.tcpInfo(); - // The connection was already established. It should definitely // have a tcp_info available. - CHECK_SOME(tcpInfo); - RTTs.push_back(tcpInfo.get().tcpi_rtt); + CHECK_SOME(info.tcpInfo); + RTTs.push_back(info.tcpInfo.get().tcpi_rtt); } // Only print to stdout when we have results. http://git-wip-us.apache.org/repos/asf/mesos/blob/e32163ce/src/tests/routing_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/routing_tests.cpp b/src/tests/routing_tests.cpp index 4ef9fac..bd4d071 100644 --- a/src/tests/routing_tests.cpp +++ b/src/tests/routing_tests.cpp @@ -240,8 +240,8 @@ TEST_F(RoutingTest, INETSockets) foreach (const diagnosis::socket::Info& info, infos.get()) { // Both source and destination IPs should be present since // 'AF_INET' is asked for. - EXPECT_SOME(info.sourceIP()); - EXPECT_SOME(info.destinationIP()); + EXPECT_SOME(info.sourceIP); + EXPECT_SOME(info.destinationIP); } }
