diff options
author | David Härdeman <david@hardeman.nu> | 2020-06-05 17:41:04 +0200 |
---|---|---|
committer | David Härdeman <david@hardeman.nu> | 2020-06-05 17:41:04 +0200 |
commit | 3d2d0d4b3aa64aba018b049edf9c0396d5a598d5 (patch) | |
tree | 2c4700417d240793a3dfe0aa9de9696ece91baa2 /utils.c | |
parent | db90b7982410c20bca2c3dc206a690012edecce4 (diff) |
Split out active proxy connection handling to separate file
Diffstat (limited to 'utils.c')
-rw-r--r-- | utils.c | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -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) |