summaryrefslogtreecommitdiff
path: root/utils.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2020-06-19 00:07:33 +0200
committerDavid Härdeman <david@hardeman.nu>2020-06-19 00:07:33 +0200
commitb32800e33ec16f7c592fa09b1a8b1f30a2e9df77 (patch)
tree591605397c24a7876d46a41fb264085eda3bc8d8 /utils.c
parent723458dfa7e6246b5de7c7943175c78cf901366a (diff)
Add an addrstr to struct sockaddr_in46, rename to struct saddr
Diffstat (limited to 'utils.c')
-rw-r--r--utils.c57
1 files changed, 29 insertions, 28 deletions
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, "<unknown>");
+ sprintf(conn->local.addrstr, "<unknown>");
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