This will allow more codesharing with code dealing with the peer endpoints.

Signed-off-by: Daniel Gröber <d...@darkboxed.org>
---
 src/config.c      |  2 --
 src/ipc-freebsd.h |  2 +-
 src/ipc-linux.h   |  6 +++---
 src/ipc-openbsd.h |  4 ++--
 src/ipc-uapi.h    |  2 +-
 src/ipc-windows.h |  4 ++--
 src/show.c        | 24 +++++++++++-------------
 src/showconf.c    |  2 +-
 8 files changed, 21 insertions(+), 25 deletions(-)

diff --git a/src/config.c b/src/config.c
index 01c73f9..5c8594b 100644
--- a/src/config.c
+++ b/src/config.c
@@ -264,8 +264,6 @@ static inline bool parse_listen(struct sockaddr_inet 
*listen, uint32_t *flags, c
        if (!parse_endpoint(listen, value, AF_UNSPEC, /*allow_retry=*/0))
                return false;
 
-       listen->sinet_port = ntohs(listen->sinet_port);
-
        *flags |= WGDEVICE_HAS_LISTEN;
        return true;
 }
diff --git a/src/ipc-freebsd.h b/src/ipc-freebsd.h
index a06b245..75f692b 100644
--- a/src/ipc-freebsd.h
+++ b/src/ipc-freebsd.h
@@ -271,7 +271,7 @@ static int kernel_set_device(struct wgdevice *dev)
        if (dev->flags & WGDEVICE_HAS_PRIVATE_KEY)
                nvlist_add_binary(nvl_device, "private-key", dev->private_key, 
sizeof(dev->private_key));
        if (dev->flags & WGDEVICE_HAS_LISTEN_PORT)
-               nvlist_add_number(nvl_device, "listen-port", dev->listen_port);
+               nvlist_add_number(nvl_device, "listen-port", 
ntohs(dev->listen_port));
        if (dev->flags & WGDEVICE_HAS_LISTEN) {
                errno = EOPNOTSUPP;
                goto err;
diff --git a/src/ipc-linux.h b/src/ipc-linux.h
index 3e3f27c..735c49f 100644
--- a/src/ipc-linux.h
+++ b/src/ipc-linux.h
@@ -162,9 +162,9 @@ again:
                if (dev->flags & WGDEVICE_HAS_PRIVATE_KEY)
                        mnl_attr_put(nlh, WGDEVICE_A_PRIVATE_KEY, 
sizeof(dev->private_key), dev->private_key);
                if (dev->flags & WGDEVICE_HAS_LISTEN_PORT)
-                       mnl_attr_put_u16(nlh, WGDEVICE_A_LISTEN_PORT, 
dev->listen_port);
+                       mnl_attr_put_u16(nlh, WGDEVICE_A_LISTEN_PORT, 
ntohs(dev->listen_port));
                if (dev->flags & WGDEVICE_HAS_LISTEN) {
-                       mnl_attr_put_u16(nlh, WGDEVICE_A_LISTEN_PORT, 
dev->listen_port);
+                       mnl_attr_put_u16(nlh, WGDEVICE_A_LISTEN_PORT, 
ntohs(dev->listen_port));
                        if (dev->listen_family == AF_INET) {
                                mnl_attr_put(nlh, WGDEVICE_A_LISTEN_ADDR, 
sizeof(struct in_addr), &dev->listen4.sin_addr);
                                mnl_attr_put_u32(nlh, 
WGDEVICE_A_LISTEN_IFINDEX, dev->listen_inet.sin_scope_id);
@@ -446,7 +446,7 @@ static int parse_device(const struct nlattr *attr, void 
*data)
                break;
        case WGDEVICE_A_LISTEN_PORT:
                if (!mnl_attr_validate(attr, MNL_TYPE_U16))
-                       device->listen_port = mnl_attr_get_u16(attr);
+                       device->listen_port = htons(mnl_attr_get_u16(attr));
                break;
        case WGDEVICE_A_LISTEN_ADDR: {
                union {
diff --git a/src/ipc-openbsd.h b/src/ipc-openbsd.h
index eddec45..478b4c6 100644
--- a/src/ipc-openbsd.h
+++ b/src/ipc-openbsd.h
@@ -96,7 +96,7 @@ static int kernel_get_device(struct wgdevice **device, const 
char *iface)
        }
 
        if (wg_iface->i_flags & WG_INTERFACE_HAS_PORT) {
-               dev->listen_port = wg_iface->i_port;
+               dev->listen_port = htons(wg_iface->i_port);
                dev->flags |= WGDEVICE_HAS_LISTEN_PORT;
        }
 
@@ -209,7 +209,7 @@ static int kernel_set_device(struct wgdevice *dev)
        }
 
        if (dev->flags & WGDEVICE_HAS_LISTEN_PORT) {
-               wg_iface->i_port = dev->listen_port;
+               wg_iface->i_port = ntohs(dev->listen_port);
                wg_iface->i_flags |= WG_INTERFACE_HAS_PORT;
        }
        if (dev->flags & WGDEVICE_HAS_LISTEN) {
diff --git a/src/ipc-uapi.h b/src/ipc-uapi.h
index 7079fbd..0fc1524 100644
--- a/src/ipc-uapi.h
+++ b/src/ipc-uapi.h
@@ -46,7 +46,7 @@ static int userspace_set_device(struct wgdevice *dev)
                fprintf(f, "private_key=%s\n", hex);
        }
        if (dev->flags & WGDEVICE_HAS_LISTEN_PORT)
-               fprintf(f, "listen_port=%u\n", dev->listen_port);
+               fprintf(f, "listen_port=%u\n", ntohs(dev->listen_port));
        if (dev->flags & WGDEVICE_HAS_LISTEN)
                return -EOPNOTSUPP;
        if (dev->flags & WGDEVICE_HAS_FWMARK)
diff --git a/src/ipc-windows.h b/src/ipc-windows.h
index 77e32b3..fb8f35c 100644
--- a/src/ipc-windows.h
+++ b/src/ipc-windows.h
@@ -249,7 +249,7 @@ static int kernel_get_device(struct wgdevice **device, 
const char *iface)
        dev->name[sizeof(dev->name) - 1] = '\0';
 
        if (wg_iface->Flags & WG_IOCTL_INTERFACE_HAS_LISTEN_PORT) {
-               dev->listen_port = wg_iface->ListenPort;
+               dev->listen_port = htons(wg_iface->ListenPort);
                dev->flags |= WGDEVICE_HAS_LISTEN_PORT;
        }
 
@@ -378,7 +378,7 @@ static int kernel_set_device(struct wgdevice *dev)
        }
 
        if (dev->flags & WGDEVICE_HAS_LISTEN_PORT) {
-               wg_iface->ListenPort = dev->listen_port;
+               wg_iface->ListenPort = ntohs(dev->listen_port);
                wg_iface->Flags |= WG_IOCTL_INTERFACE_HAS_LISTEN_PORT;
        }
        if (dev->flags & WGDEVICE_HAS_LISTEN) {
diff --git a/src/show.c b/src/show.c
index 754f952..3048183 100644
--- a/src/show.c
+++ b/src/show.c
@@ -127,26 +127,24 @@ char *print_endpoint(const struct sockaddr *addr)
        return buf;
 }
 
-char *print_sockaddr_inet(const struct sockaddr_inet *sa_const)
+char *print_sockaddr_inet(const struct sockaddr_inet *sa)
 {
        char host[4096 + 1], service[512 + 1], ifname_buf[IF_NAMESIZE+10] = "%";
        static char buf[sizeof(host) + sizeof(service) + sizeof(ifname_buf) + 
4];
-        struct sockaddr_inet sa = *sa_const;
        socklen_t sa_len = 0;
        unsigned int ifindex = 0;
        int ret;
 
-       sa.sinet_port = htons(sa.sinet_port);
-
-       if (sa.sinet_family == AF_INET) {
+       if (sa->sinet_family == AF_INET) {
                sa_len = sizeof(struct sockaddr_in);
-               ifindex = sa.sin_scope_id;
-       } else if (sa.sinet_family == AF_INET6) {
+               ifindex = sa->sin_scope_id;
+       } else if (sa->sinet_family == AF_INET6) {
                sa_len = sizeof(struct sockaddr_in6);
-               ifindex = sa.sin6_scope_id;
+               ifindex = sa->sin6_scope_id;
        }
-       ret = getnameinfo((struct sockaddr*)&sa, sa_len, host, sizeof(host), 
service, sizeof(service), NI_DGRAM | NI_NUMERICSERV | NI_NUMERICHOST);
+       ret = getnameinfo((struct sockaddr*)sa, sa_len, host, sizeof(host), 
service, sizeof(service), NI_DGRAM | NI_NUMERICSERV | NI_NUMERICHOST);
        if (ret) {
+               fprintf(stderr, "error: print_sockaddr_inet: %s", 
gai_strerror(ret));
                buf[0] = '\0';
                goto out;
        }
@@ -160,7 +158,7 @@ char *print_sockaddr_inet(const struct sockaddr_inet 
*sa_const)
                }
        }
 
-       if ((sa.sinet_family == AF_INET6 && strchr(host, ':')) || ifindex)
+       if ((sa->sinet_family == AF_INET6 && strchr(host, ':')) || ifindex)
                snprintf(buf, sizeof(buf), "[%s%s]:%s", host, ifname, service);
        else
                snprintf(buf, sizeof(buf), "%s:%s", host, service);
@@ -261,7 +259,7 @@ static void pretty_print(struct wgdevice *device)
        if (device->listen_family != AF_UNSPEC)
                terminal_printf("  " TERMINAL_BOLD "listening on" 
TERMINAL_RESET ": %s\n", print_sockaddr_inet(&device->listen_inet));
        else if (device->listen_port)
-               terminal_printf("  " TERMINAL_BOLD "listening port" 
TERMINAL_RESET ": %u\n", device->listen_port);
+               terminal_printf("  " TERMINAL_BOLD "listening port" 
TERMINAL_RESET ": %u\n", ntohs(device->listen_port));
        if (device->fwmark)
                terminal_printf("  " TERMINAL_BOLD "fwmark" TERMINAL_RESET ": 
0x%x\n", device->fwmark);
        if (device->first_peer) {
@@ -306,7 +304,7 @@ static void dump_print(struct wgdevice *device, bool 
with_interface)
        if (device->listen_family != AF_UNSPEC)
                printf("%s\t", print_sockaddr_inet(&device->listen_inet));
        else
-               printf("%u\t", device->listen_port);
+               printf("%u\t", ntohs(device->listen_port));
        if (device->fwmark)
                printf("0x%x\n", device->fwmark);
        else
@@ -350,7 +348,7 @@ static bool ugly_print(struct wgdevice *device, const char 
*param, bool with_int
        } else if (!strcmp(param, "listen-port")) {
                if (with_interface)
                        printf("%s\t", device->name);
-               printf("%u\n", device->listen_port);
+               printf("%u\n", ntohs(device->listen_port));
        } else if (!strcmp(param, "listen")) {
                if (with_interface)
                        printf("%s\t", device->name);
diff --git a/src/showconf.c b/src/showconf.c
index d165eb2..c99a6a0 100644
--- a/src/showconf.c
+++ b/src/showconf.c
@@ -44,7 +44,7 @@ int showconf_main(int argc, const char *argv[])
        if (device->listen_family != AF_UNSPEC)
                printf("Listen = %s", 
print_sockaddr_inet(&device->listen_inet));
        else if (device->listen_port)
-               printf("ListenPort = %u\n", device->listen_port);
+               printf("ListenPort = %u\n", ntohs(device->listen_port));
        if (device->fwmark)
                printf("FwMark = 0x%x\n", device->fwmark);
        if (device->flags & WGDEVICE_HAS_PRIVATE_KEY) {
-- 
2.39.2

Reply via email to