From 85ccb0066a86a3558ae81cd357463f8dc631f94b Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Wed, 14 Mar 2018 15:40:46 -0700 Subject: fixes #289 nng_sockaddr could just be a union fixes #290 sockaddr improvements --- src/platform/posix/posix_ipc.c | 3 +-- src/platform/posix/posix_resolv_gai.c | 21 ++++++++++----------- src/platform/posix/posix_sockaddr.c | 14 +++++++------- src/platform/posix/posix_tcp.c | 14 +++++++------- src/platform/windows/win_ipc.c | 2 +- src/platform/windows/win_resolv.c | 24 ++++++++++++------------ src/platform/windows/win_sockaddr.c | 30 +++++++++++++++--------------- src/platform/windows/win_tcp.c | 14 +++++++------- 8 files changed, 60 insertions(+), 62 deletions(-) (limited to 'src/platform') diff --git a/src/platform/posix/posix_ipc.c b/src/platform/posix/posix_ipc.c index cd9da243..f7cfc0db 100644 --- a/src/platform/posix/posix_ipc.c +++ b/src/platform/posix/posix_ipc.c @@ -59,8 +59,7 @@ nni_plat_ipc_ep_init(nni_plat_ipc_ep **epp, const nni_sockaddr *sa, int mode) break; case NNI_EP_MODE_LISTEN: - if ((rv = nni_plat_ipc_remove_stale( - sa->s_un.s_path.sa_path)) != 0) { + if ((rv = nni_plat_ipc_remove_stale(sa->s_ipc.sa_path)) != 0) { return (rv); } diff --git a/src/platform/posix/posix_resolv_gai.c b/src/platform/posix/posix_resolv_gai.c index f2f8a9fc..496fb97b 100644 --- a/src/platform/posix/posix_resolv_gai.c +++ b/src/platform/posix/posix_resolv_gai.c @@ -171,19 +171,18 @@ nni_posix_resolv_task(void *arg) switch (probe->ai_addr->sa_family) { case AF_INET: - rv = 0; - sin = (void *) probe->ai_addr; - sa->s_un.s_in.sa_family = NNG_AF_INET; - sa->s_un.s_in.sa_port = sin->sin_port; - sa->s_un.s_in.sa_addr = sin->sin_addr.s_addr; + rv = 0; + sin = (void *) probe->ai_addr; + sa->s_in.sa_family = NNG_AF_INET; + sa->s_in.sa_port = sin->sin_port; + sa->s_in.sa_addr = sin->sin_addr.s_addr; break; case AF_INET6: - rv = 0; - sin6 = (void *) probe->ai_addr; - sa->s_un.s_in6.sa_family = NNG_AF_INET6; - sa->s_un.s_in6.sa_port = sin6->sin6_port; - memcpy(sa->s_un.s_in6.sa_addr, sin6->sin6_addr.s6_addr, - 16); + rv = 0; + sin6 = (void *) probe->ai_addr; + sa->s_in6.sa_family = NNG_AF_INET6; + sa->s_in6.sa_port = sin6->sin6_port; + memcpy(sa->s_in6.sa_addr, sin6->sin6_addr.s6_addr, 16); break; } } diff --git a/src/platform/posix/posix_sockaddr.c b/src/platform/posix/posix_sockaddr.c index e9691d91..ba088ed9 100644 --- a/src/platform/posix/posix_sockaddr.c +++ b/src/platform/posix/posix_sockaddr.c @@ -36,10 +36,10 @@ nni_posix_nn2sockaddr(void *sa, const nni_sockaddr *na) if ((sa == NULL) || (na == NULL)) { return (0); } - switch (na->s_un.s_family) { + switch (na->s_family) { case NNG_AF_INET: sin = (void *) sa; - nsin = &na->s_un.s_in; + nsin = &na->s_in; memset(sin, 0, sizeof(*sin)); sin->sin_family = PF_INET; sin->sin_port = nsin->sa_port; @@ -48,7 +48,7 @@ nni_posix_nn2sockaddr(void *sa, const nni_sockaddr *na) case NNG_AF_INET6: sin6 = (void *) sa; - nsin6 = &na->s_un.s_in6; + nsin6 = &na->s_in6; memset(sin6, 0, sizeof(*sin6)); #ifdef SIN6_LEN sin6->sin6_len = sizeof(*sin6); @@ -60,7 +60,7 @@ nni_posix_nn2sockaddr(void *sa, const nni_sockaddr *na) case NNG_AF_IPC: spath = (void *) sa; - nspath = &na->s_un.s_path; + nspath = &na->s_ipc; memset(spath, 0, sizeof(*spath)); // Make sure that the path fits! sz = sizeof(spath->sun_path); @@ -89,21 +89,21 @@ nni_posix_sockaddr2nn(nni_sockaddr *na, const void *sa) switch (((struct sockaddr *) sa)->sa_family) { case AF_INET: sin = (void *) sa; - nsin = &na->s_un.s_in; + nsin = &na->s_in; nsin->sa_family = NNG_AF_INET; nsin->sa_port = sin->sin_port; nsin->sa_addr = sin->sin_addr.s_addr; break; case AF_INET6: sin6 = (void *) sa; - nsin6 = &na->s_un.s_in6; + nsin6 = &na->s_in6; nsin6->sa_family = NNG_AF_INET6; nsin6->sa_port = sin6->sin6_port; memcpy(nsin6->sa_addr, sin6->sin6_addr.s6_addr, 16); break; case AF_UNIX: spath = (void *) sa; - nspath = &na->s_un.s_path; + nspath = &na->s_ipc; nspath->sa_family = NNG_AF_IPC; (void) snprintf(nspath->sa_path, sizeof(nspath->sa_path), "%s", spath->sun_path); diff --git a/src/platform/posix/posix_tcp.c b/src/platform/posix/posix_tcp.c index 8a6fe9d1..9caa157f 100644 --- a/src/platform/posix/posix_tcp.c +++ b/src/platform/posix/posix_tcp.c @@ -40,11 +40,11 @@ nni_plat_tcp_ep_init(nni_plat_tcp_ep **epp, const nni_sockaddr *lsa, return (rv); } - if ((rsa != NULL) && (rsa->s_un.s_family != NNG_AF_UNSPEC)) { + if ((rsa != NULL) && (rsa->s_family != NNG_AF_UNSPEC)) { len = nni_posix_nn2sockaddr((void *) &ss, rsa); nni_posix_epdesc_set_remote(ed, &ss, len); } - if ((lsa != NULL) && (lsa->s_un.s_family != NNG_AF_UNSPEC)) { + if ((lsa != NULL) && (lsa->s_family != NNG_AF_UNSPEC)) { len = nni_posix_nn2sockaddr((void *) &ss, lsa); nni_posix_epdesc_set_local(ed, &ss, len); } @@ -130,15 +130,15 @@ nni_plat_tcp_ntop(const nni_sockaddr *sa, char *ipstr, char *portstr) const void *ap; uint16_t port; int af; - switch (sa->s_un.s_family) { + switch (sa->s_family) { case NNG_AF_INET: - ap = &sa->s_un.s_in.sa_addr; - port = sa->s_un.s_in.sa_port; + ap = &sa->s_in.sa_addr; + port = sa->s_in.sa_port; af = AF_INET; break; case NNG_AF_INET6: - ap = &sa->s_un.s_in6.sa_addr; - port = sa->s_un.s_in6.sa_port; + ap = &sa->s_in6.sa_addr; + port = sa->s_in6.sa_port; af = AF_INET6; break; default: diff --git a/src/platform/windows/win_ipc.c b/src/platform/windows/win_ipc.c index 84afbaa5..5843917c 100644 --- a/src/platform/windows/win_ipc.c +++ b/src/platform/windows/win_ipc.c @@ -193,7 +193,7 @@ nni_plat_ipc_ep_init(nni_plat_ipc_ep **epp, const nni_sockaddr *sa, int mode) const char * path; nni_plat_ipc_ep *ep; - path = sa->s_un.s_path.sa_path; + path = sa->s_ipc.sa_path; if (nni_strnlen(path, NNG_MAXADDRLEN) >= NNG_MAXADDRLEN) { return (NNG_EINVAL); } diff --git a/src/platform/windows/win_resolv.c b/src/platform/windows/win_resolv.c index 6ee55d16..d07b4fd5 100644 --- a/src/platform/windows/win_resolv.c +++ b/src/platform/windows/win_resolv.c @@ -1,5 +1,6 @@ // -// Copyright 2017 Garrett D'Amore +// Copyright 2018 Staysail Systems, Inc. +// Copyright 2018 Capitar IT Group BV // // This software is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this @@ -145,19 +146,18 @@ nni_win_resolv_task(void *arg) switch (probe->ai_addr->sa_family) { case AF_INET: - rv = 0; - sin = (void *) probe->ai_addr; - sa->s_un.s_in.sa_family = NNG_AF_INET; - sa->s_un.s_in.sa_port = sin->sin_port; - sa->s_un.s_in.sa_addr = sin->sin_addr.s_addr; + rv = 0; + sin = (void *) probe->ai_addr; + sa->s_in.sa_family = NNG_AF_INET; + sa->s_in.sa_port = sin->sin_port; + sa->s_in.sa_addr = sin->sin_addr.s_addr; break; case AF_INET6: - rv = 0; - sin6 = (void *) probe->ai_addr; - sa->s_un.s_in6.sa_family = NNG_AF_INET6; - sa->s_un.s_in6.sa_port = sin6->sin6_port; - memcpy(sa->s_un.s_in6.sa_addr, sin6->sin6_addr.s6_addr, - 16); + rv = 0; + sin6 = (void *) probe->ai_addr; + sa->s_in6.sa_family = NNG_AF_INET6; + sa->s_in6.sa_port = sin6->sin6_port; + memcpy(sa->s_in6.sa_addr, sin6->sin6_addr.s6_addr, 16); break; } } diff --git a/src/platform/windows/win_sockaddr.c b/src/platform/windows/win_sockaddr.c index f66542c6..141a1ce5 100644 --- a/src/platform/windows/win_sockaddr.c +++ b/src/platform/windows/win_sockaddr.c @@ -1,6 +1,6 @@ // -// Copyright 2017 Garrett D'Amore -// Copyright 2017 Capitar IT Group BV +// Copyright 2018 Staysail Systems, Inc. +// Copyright 2018 Capitar IT Group BV // // This software is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this @@ -23,21 +23,21 @@ nni_win_nn2sockaddr(SOCKADDR_STORAGE *ss, const nni_sockaddr *sa) if ((ss == NULL) || (sa == NULL)) { return (-1); } - switch (sa->s_un.s_family) { + switch (sa->s_family) { case NNG_AF_INET: sin = (void *) ss; memset(sin, 0, sizeof(*sin)); sin->sin_family = PF_INET; - sin->sin_port = sa->s_un.s_in.sa_port; - sin->sin_addr.s_addr = sa->s_un.s_in.sa_addr; + sin->sin_port = sa->s_in.sa_port; + sin->sin_addr.s_addr = sa->s_in.sa_addr; return (sizeof(*sin)); case NNG_AF_INET6: sin6 = (void *) ss; memset(sin6, 0, sizeof(*sin6)); sin6->sin6_family = PF_INET6; - sin6->sin6_port = sa->s_un.s_in6.sa_port; - memcpy(sin6->sin6_addr.s6_addr, sa->s_un.s_in6.sa_addr, 16); + sin6->sin6_port = sa->s_in6.sa_port; + memcpy(sin6->sin6_addr.s6_addr, sa->s_in6.sa_addr, 16); return (sizeof(*sin6)); } return (-1); @@ -54,17 +54,17 @@ nni_win_sockaddr2nn(nni_sockaddr *sa, const SOCKADDR_STORAGE *ss) } switch (ss->ss_family) { case PF_INET: - sin = (void *) ss; - sa->s_un.s_in.sa_family = NNG_AF_INET; - sa->s_un.s_in.sa_port = sin->sin_port; - sa->s_un.s_in.sa_addr = sin->sin_addr.s_addr; + sin = (void *) ss; + sa->s_in.sa_family = NNG_AF_INET; + sa->s_in.sa_port = sin->sin_port; + sa->s_in.sa_addr = sin->sin_addr.s_addr; return (0); case PF_INET6: - sin6 = (void *) ss; - sa->s_un.s_in6.sa_family = NNG_AF_INET6; - sa->s_un.s_in6.sa_port = sin6->sin6_port; - memcpy(sa->s_un.s_in6.sa_addr, sin6->sin6_addr.s6_addr, 16); + sin6 = (void *) ss; + sa->s_in6.sa_family = NNG_AF_INET6; + sa->s_in6.sa_port = sin6->sin6_port; + memcpy(sa->s_in6.sa_addr, sin6->sin6_addr.s6_addr, 16); return (0); } return (-1); diff --git a/src/platform/windows/win_tcp.c b/src/platform/windows/win_tcp.c index 8062eb3e..17f7845d 100644 --- a/src/platform/windows/win_tcp.c +++ b/src/platform/windows/win_tcp.c @@ -274,10 +274,10 @@ nni_plat_tcp_ep_init(nni_plat_tcp_ep **epp, const nni_sockaddr *lsa, ep->s = INVALID_SOCKET; - if ((rsa != NULL) && (rsa->s_un.s_family != NNG_AF_UNSPEC)) { + if ((rsa != NULL) && (rsa->s_family != NNG_AF_UNSPEC)) { ep->remlen = nni_win_nn2sockaddr(&ep->remaddr, rsa); } - if ((lsa != NULL) && (lsa->s_un.s_family != NNG_AF_UNSPEC)) { + if ((lsa != NULL) && (lsa->s_family != NNG_AF_UNSPEC)) { ep->loclen = nni_win_nn2sockaddr(&ep->locaddr, lsa); } @@ -659,15 +659,15 @@ nni_plat_tcp_ntop(const nni_sockaddr *sa, char *ipstr, char *portstr) const void *ap; uint16_t port; int af; - switch (sa->s_un.s_family) { + switch (sa->s_family) { case NNG_AF_INET: - ap = &sa->s_un.s_in.sa_addr; - port = sa->s_un.s_in.sa_port; + ap = &sa->s_in.sa_addr; + port = sa->s_in.sa_port; af = AF_INET; break; case NNG_AF_INET6: - ap = &sa->s_un.s_in6.sa_addr; - port = sa->s_un.s_in6.sa_port; + ap = &sa->s_in6.sa_addr; + port = sa->s_in6.sa_port; af = AF_INET6; break; default: -- cgit v1.2.3-70-g09d2