aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/lib.h1
-rw-r--r--lib/net.c13
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/lib.h b/lib/lib.h
index 94662983..939d6127 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -294,6 +294,7 @@ struct addrinfo *xgetaddrinfo(char *host, char *port, int family, int socktype,
int xconnect(struct addrinfo *ai_arg);
int xpoll(struct pollfd *fds, int nfds, int timeout);
int pollinate(int in1, int in2, int out1, int out2, int timeout, int shutdown_timeout);
+char *ntop(struct sockaddr *sa);
// password.c
int get_salt(char *salt, char * algo);
diff --git a/lib/net.c b/lib/net.c
index 5c6d4f7c..846be31f 100644
--- a/lib/net.c
+++ b/lib/net.c
@@ -102,3 +102,16 @@ int pollinate(int in1, int in2, int out1, int out2, int timeout, int shutdown_ti
}
}
}
+
+// Return converted numeric address in libbuf
+char *ntop(struct sockaddr *sa)
+{
+ void *addr;
+
+ if (sa->sa_family == AF_INET) addr = &((struct sockaddr_in *)sa)->sin_addr;
+ else addr = &((struct sockaddr_in6 *)sa)->sin6_addr;
+
+ inet_ntop(sa->sa_family, addr, libbuf, sizeof(libbuf));
+
+ return libbuf;
+}