summaryrefslogtreecommitdiff
path: root/utils.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2020-06-05 17:41:04 +0200
committerDavid Härdeman <david@hardeman.nu>2020-06-05 17:41:04 +0200
commit3d2d0d4b3aa64aba018b049edf9c0396d5a598d5 (patch)
tree2c4700417d240793a3dfe0aa9de9696ece91baa2 /utils.c
parentdb90b7982410c20bca2c3dc206a690012edecce4 (diff)
Split out active proxy connection handling to separate file
Diffstat (limited to 'utils.c')
-rw-r--r--utils.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/utils.c b/utils.c
index a84f63b..91e44b3 100644
--- a/utils.c
+++ b/utils.c
@@ -2,6 +2,34 @@
#include <errno.h>
#include <stdint.h>
#include <limits.h>
+#include <arpa/inet.h>
+
+#include "main.h"
+#include "utils.h"
+
+char *
+sockaddr_to_str(struct sockaddr_in46 *addr, char *buf, size_t buflen)
+{
+ char abuf[ADDRSTRLEN];
+
+ switch (addr->storage.ss_family) {
+ case AF_INET:
+ snprintf(buf, buflen, "AF_INET4 %s %u",
+ inet_ntop(addr->in4.sin_family, &addr->in4.sin_addr, abuf, sizeof(abuf)),
+ (unsigned)ntohs(addr->in4.sin_port));
+ break;
+ case AF_INET6:
+ snprintf(buf, buflen, "AF_INET6 %s %u",
+ inet_ntop(addr->in6.sin6_family, &addr->in6.sin6_addr, abuf, sizeof(abuf)),
+ (unsigned)ntohs(addr->in6.sin6_port));
+ break;
+ default:
+ snprintf(buf, buflen, "AF_UNKNOWN");
+ break;
+ }
+
+ return buf;
+}
int
strtou16_strict(const char *str, uint16_t *result)