From 3d6bdb2cc11a293f536f38a975e4ae2095d467fa Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Fri, 19 Jun 2020 00:57:54 +0200 Subject: Add some helper functions for saddrs, reduce code duplication --- utils.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'utils.c') diff --git a/utils.c b/utils.c index 9071cb3..8c7b663 100644 --- a/utils.c +++ b/utils.c @@ -196,14 +196,14 @@ connection_set_local(struct cfg *cfg, struct connection *conn, int fd) &conn->local.addrlen) < 0) sprintf(conn->local.addrstr, ""); else - saddr_set_str(&conn->local); + saddr_set_addrstr(&conn->local); } void connection_set_remote(struct cfg *cfg, struct connection *conn, struct saddr *remote) { conn->remote = *remote; - saddr_set_str(&conn->remote); + saddr_set_addrstr(&conn->remote); } static void connect_next(struct cfg *cfg, struct uring_task *task, struct connection *conn); @@ -322,7 +322,30 @@ saddr_addr(struct saddr *saddr, char *buf, size_t len) } void -saddr_set_str(struct saddr *saddr) +saddr_set_ipv4(struct saddr *saddr, in_addr_t ip, in_port_t port) +{ + memset(&saddr->in4, 0, sizeof(saddr->in4)); + saddr->in4.sin_family = AF_INET; + saddr->in4.sin_port = port; + saddr->in4.sin_addr.s_addr = ip; + saddr->addrlen = sizeof(saddr->in4); + saddr_set_addrstr(saddr); +} + +void +saddr_set_ipv6(struct saddr *saddr, const struct in6_addr *ip, in_port_t port) +{ + memset(&saddr->in6, 0, sizeof(saddr->in6)); + saddr->in6.sin6_family = AF_INET6; + saddr->in6.sin6_port = port; + if (ip) + saddr->in6.sin6_addr = *ip; + saddr->addrlen = sizeof(saddr->in6); + saddr_set_addrstr(saddr); +} + +void +saddr_set_addrstr(struct saddr *saddr) { char abuf[ADDRSTRLEN]; -- cgit v1.2.3