From b32800e33ec16f7c592fa09b1a8b1f30a2e9df77 Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Fri, 19 Jun 2020 00:07:33 +0200 Subject: Add an addrstr to struct sockaddr_in46, rename to struct saddr --- utils.c | 57 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 28 deletions(-) (limited to 'utils.c') diff --git a/utils.c b/utils.c index 2d0294a..9071cb3 100644 --- a/utils.c +++ b/utils.c @@ -190,19 +190,20 @@ socket_set_low_latency(struct cfg *cfg, int sfd) void connection_set_local(struct cfg *cfg, struct connection *conn, int fd) { + conn->local.addrlen = sizeof(conn->local.storage); if (fd < 0 || getsockname(fd, (struct sockaddr *)&conn->local.storage, &conn->local.addrlen) < 0) - sprintf(conn->localstr, ""); + sprintf(conn->local.addrstr, ""); else - sockaddr_to_str(&conn->local, conn->localstr, sizeof(conn->localstr)); + saddr_set_str(&conn->local); } void -connection_set_remote(struct cfg *cfg, struct connection *conn, struct sockaddr_in46 *remote) +connection_set_remote(struct cfg *cfg, struct connection *conn, struct saddr *remote) { conn->remote = *remote; - sockaddr_to_str(&conn->remote, conn->remotestr, sizeof(conn->remotestr)); + saddr_set_str(&conn->remote); } static void connect_next(struct cfg *cfg, struct uring_task *task, struct connection *conn); @@ -214,7 +215,7 @@ connect_cb(struct cfg *cfg, struct uring_task *task, int res) if (res < 0) { debug(DBG_UR, "%s: connection to %s failed\n", - task->name, conn->remotestr); + task->name, conn->remote.addrstr); uring_task_close_fd(cfg, task); connect_next(cfg, task, conn); return; @@ -223,7 +224,7 @@ connect_cb(struct cfg *cfg, struct uring_task *task, int res) connection_set_local(cfg, conn, task->fd); debug(DBG_UR, "%s: connection established %s -> %s\n", - task->name, conn->localstr, conn->remotestr); + task->name, conn->local.addrstr, conn->remote.addrstr); conn->callback(cfg, conn, true); } @@ -231,7 +232,7 @@ connect_cb(struct cfg *cfg, struct uring_task *task, int res) static void connect_next(struct cfg *cfg, struct uring_task *task, struct connection *conn) { - struct sockaddr_in46 *remote, *tmp; + struct saddr *remote, *tmp; int sfd; unsigned i; @@ -256,7 +257,7 @@ again: conn->next_addr++; connection_set_remote(cfg, conn, remote); debug(DBG_MALLOC, "%s: attempting to connect to %s\n", - task->name, conn->remotestr); + task->name, conn->remote.addrstr); sfd = socket(conn->remote.storage.ss_family, SOCK_STREAM | SOCK_CLOEXEC, 0); if (sfd < 0) { @@ -288,28 +289,28 @@ connect_any(struct cfg *cfg, struct uring_task *task, } uint16_t -sockaddr_port(struct sockaddr_in46 *addr) +saddr_port(struct saddr *saddr) { - switch (addr->storage.ss_family) { + switch (saddr->storage.ss_family) { case AF_INET: - return ntohs(addr->in4.sin_port); + return ntohs(saddr->in4.sin_port); case AF_INET6: - return ntohs(addr->in6.sin6_port); + return ntohs(saddr->in6.sin6_port); default: return 0; } } char * -sockaddr_addr(struct sockaddr_in46 *addr, char *buf, size_t len) +saddr_addr(struct saddr *saddr, char *buf, size_t len) { - switch (addr->storage.ss_family) { + switch (saddr->storage.ss_family) { case AF_INET: - if (inet_ntop(addr->in4.sin_family, &addr->in4.sin_addr, buf, len)) + if (inet_ntop(saddr->in4.sin_family, &saddr->in4.sin_addr, buf, len)) return buf; break; case AF_INET6: - if (inet_ntop(addr->in6.sin6_family, &addr->in6.sin6_addr, buf, len)) + if (inet_ntop(saddr->in6.sin6_family, &saddr->in6.sin6_addr, buf, len)) return buf; break; default: @@ -320,28 +321,28 @@ sockaddr_addr(struct sockaddr_in46 *addr, char *buf, size_t len) return buf; } -char * -sockaddr_to_str(struct sockaddr_in46 *addr, char *buf, size_t len) +void +saddr_set_str(struct saddr *saddr) { char abuf[ADDRSTRLEN]; - switch (addr->storage.ss_family) { + switch (saddr->storage.ss_family) { case AF_INET: - snprintf(buf, len, "AF_INET4 %s %" PRIu16, - sockaddr_addr(addr, abuf, sizeof(abuf)), - sockaddr_port(addr)); + snprintf(saddr->addrstr, sizeof(saddr->addrstr), + "AF_INET4 %s %" PRIu16, + saddr_addr(saddr, abuf, sizeof(abuf)), + saddr_port(saddr)); break; case AF_INET6: - snprintf(buf, len, "AF_INET6 %s %" PRIu16, - sockaddr_addr(addr, abuf, sizeof(abuf)), - sockaddr_port(addr)); + snprintf(saddr->addrstr, sizeof(saddr->addrstr), + "AF_INET6 %s %" PRIu16, + saddr_addr(saddr, abuf, sizeof(abuf)), + saddr_port(saddr)); break; default: - snprintf(buf, len, "AF_UNKNOWN"); + snprintf(saddr->addrstr, sizeof(saddr->addrstr), "AF_UNKNOWN"); break; } - - return buf; } int -- cgit v1.2.3