From 912c3b6ae57fa1aa7ecf94cd0a440eb59778c21c Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 6 May 2016 10:39:57 -0400 Subject: [PATCH] msg/msg_types: operator<< for sockaddr Signed-off-by: Sage Weil --- src/msg/msg_types.cc | 23 +++++++++++++++++++++-- src/msg/msg_types.h | 1 + 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/msg/msg_types.cc b/src/msg/msg_types.cc index b02db768bfb..c966cea42a0 100644 --- a/src/msg/msg_types.cc +++ b/src/msg/msg_types.cc @@ -149,6 +149,25 @@ ostream& operator<<(ostream& out, const sockaddr_storage &ss) NI_NUMERICHOST | NI_NUMERICSERV); if (ss.ss_family == AF_INET6) return out << '[' << buf << "]:" << serv; - return out //<< ss.ss_family << ":" - << buf << ':' << serv; + return out << buf << ':' << serv; +} + +ostream& operator<<(ostream& out, const sockaddr *sa) +{ + char buf[NI_MAXHOST] = { 0 }; + char serv[NI_MAXSERV] = { 0 }; + size_t hostlen; + + if (sa->sa_family == AF_INET) + hostlen = sizeof(struct sockaddr_in); + else if (sa->sa_family == AF_INET6) + hostlen = sizeof(struct sockaddr_in6); + else + hostlen = sizeof(struct sockaddr_storage); + getnameinfo(sa, hostlen, buf, sizeof(buf), + serv, sizeof(serv), + NI_NUMERICHOST | NI_NUMERICSERV); + if (sa->sa_family == AF_INET6) + return out << '[' << buf << "]:" << serv; + return out << buf << ':' << serv; } diff --git a/src/msg/msg_types.h b/src/msg/msg_types.h index 4f9fddbf8ac..32177c9e240 100644 --- a/src/msg/msg_types.h +++ b/src/msg/msg_types.h @@ -26,6 +26,7 @@ namespace ceph { } extern ostream& operator<<(ostream& out, const sockaddr_storage &ss); +extern ostream& operator<<(ostream& out, const sockaddr *sa); class entity_name_t { public: -- 2.47.3