summaryrefslogtreecommitdiff
path: root/src/msg/tcp.h
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2009-10-02 13:43:59 -0700
committerSage Weil <sage@newdream.net>2009-10-02 13:43:59 -0700
commit0ddaad3d51496ecdfc811c286a0587cddf7e0117 (patch)
tree8b523b7aa18bee9d506716e7ced8c71e0e703e5f /src/msg/tcp.h
parentdd732cbfc1c92f0d8dba2743a979baad6685a98c (diff)
downloadceph-0ddaad3d51496ecdfc811c286a0587cddf7e0117.tar.gz
msgr: use getnameinfo to format socket addresses
Diffstat (limited to 'src/msg/tcp.h')
-rw-r--r--src/msg/tcp.h23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/msg/tcp.h b/src/msg/tcp.h
index dc27ef6bb0a..0a701a27f87 100644
--- a/src/msg/tcp.h
+++ b/src/msg/tcp.h
@@ -7,21 +7,26 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
+#include <sys/socket.h>
+#include <netdb.h>
using std::ostream;
-inline ostream& operator<<(ostream& out, const sockaddr_in &a)
+inline ostream& operator<<(ostream& out, const sockaddr_storage &ss)
{
- unsigned char *addr = (unsigned char*)&a.sin_addr.s_addr;
- //out << "(" << a.sin_family << ")";
- out << (unsigned)addr[0] << "."
- << (unsigned)addr[1] << "."
- << (unsigned)addr[2] << "."
- << (unsigned)addr[3] << ":"
- << ntohs(a.sin_port);
- return out;
+ char buf[NI_MAXHOST];
+ getnameinfo((struct sockaddr *)&ss, sizeof(ss), buf, sizeof(buf), 0, 0, NI_NUMERICHOST);
+ return out << buf;
}
+inline ostream& operator<<(ostream& out, const sockaddr_in &ss)
+{
+ char buf[NI_MAXHOST];
+ getnameinfo((struct sockaddr *)&ss, sizeof(ss), buf, sizeof(buf), 0, 0, NI_NUMERICHOST);
+ return out << buf;
+}
+
+
inline int tcp_read(int sd, char *buf, int len) {
while (len > 0) {
int got = ::recv( sd, buf, len, 0 );