summaryrefslogtreecommitdiff
path: root/src/anet.c
diff options
context:
space:
mode:
authorMatt Stancliff <matt@genges.com>2014-10-23 12:40:02 -0400
committerMatt Stancliff <matt@genges.com>2014-12-11 10:05:35 -0500
commit2d90619f88b81d1a094a875d73f8afd244480730 (patch)
tree7b5058186f2aac666a73018327dbf95d2feb0c10 /src/anet.c
parent3cd36a4dd9b31b351c87f1084bc6166a44044315 (diff)
downloadredis-2d90619f88b81d1a094a875d73f8afd244480730.tar.gz
Add centralized IP/Peer formatting functions
This stops us from needing to manually check against ":" to add brackets around IPv6 addresses everywhere.
Diffstat (limited to 'src/anet.c')
-rw-r--r--src/anet.c24
1 files changed, 24 insertions, 0 deletions
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);
+}