From 2d90619f88b81d1a094a875d73f8afd244480730 Mon Sep 17 00:00:00 2001 From: Matt Stancliff Date: Thu, 23 Oct 2014 12:40:02 -0400 Subject: Add centralized IP/Peer formatting functions This stops us from needing to manually check against ":" to add brackets around IPv6 addresses everywhere. --- src/anet.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/anet.c') diff --git a/src/anet.c b/src/anet.c index 1e5d85495..3e39751d7 100644 --- a/src/anet.c +++ b/src/anet.c @@ -589,6 +589,22 @@ error: return -1; } +int anetFormatIP(char *fmt, size_t fmt_len, char *ip, int port) { + if (port >= 0) + return snprintf(fmt,fmt_len, + strchr(ip,':') ? "[%s]:%d" : "%s:%d", ip, port); + else + return snprintf(fmt, fmt_len, strchr(ip,':') ? "[%s]" : "%s", ip); +} + +int anetFormatPeer(int fd, char *fmt, size_t fmt_len) { + char ip[INET6_ADDRSTRLEN]; + int port; + + anetPeerToString(fd,ip,sizeof(ip),&port); + return anetFormatIP(fmt, fmt_len, ip, port); +} + int anetSockName(int fd, char *ip, size_t ip_len, int *port) { struct sockaddr_storage sa; socklen_t salen = sizeof(sa); @@ -610,3 +626,11 @@ int anetSockName(int fd, char *ip, size_t ip_len, int *port) { } return 0; } + +int anetFormatSock(int fd, char *fmt, size_t fmt_len) { + char ip[INET6_ADDRSTRLEN]; + int port; + + anetSockName(fd,ip,sizeof(ip),&port); + return anetFormatIP(fmt, fmt_len, ip, port); +} -- cgit v1.2.1