diff options
Diffstat (limited to 'src/platform/windows')
| -rw-r--r-- | src/platform/windows/win_resolv.c | 43 | ||||
| -rw-r--r-- | src/platform/windows/win_sockaddr.c | 14 | ||||
| -rw-r--r-- | src/platform/windows/win_tcpdial.c | 26 |
3 files changed, 62 insertions, 21 deletions
diff --git a/src/platform/windows/win_resolv.c b/src/platform/windows/win_resolv.c index 92c7461f..4f353e08 100644 --- a/src/platform/windows/win_resolv.c +++ b/src/platform/windows/win_resolv.c @@ -148,17 +148,23 @@ resolv_task(resolv_item *item) rv = NNG_EADDRINVAL; for (probe = results; probe != NULL; probe = probe->ai_next) { - if ((probe->ai_addr->sa_family == AF_INET) || - (probe->ai_addr->sa_family == AF_INET6)) { + if (probe->ai_addr->sa_family == AF_INET) { break; } +#if NNG_ENABLE_IPV6 + if (probe->ai_addr->sa_family == AF_INET6) { + break; + } +#endif } nni_mtx_lock(&resolv_mtx); if ((probe != NULL) && (item->aio != NULL)) { - struct sockaddr_in *sin; + struct sockaddr_in *sin; +#ifdef NNG_ENABLE_IPV6 struct sockaddr_in6 *sin6; - nni_sockaddr *sa; +#endif + nni_sockaddr *sa; sa = item->sa; @@ -170,6 +176,7 @@ resolv_task(resolv_item *item) sa->s_in.sa_port = sin->sin_port; sa->s_in.sa_addr = sin->sin_addr.s_addr; break; +#ifdef NNG_ENABLE_IPV6 case AF_INET6: rv = 0; sin6 = (void *) probe->ai_addr; @@ -178,6 +185,7 @@ resolv_task(resolv_item *item) sa->s_in6.sa_scope = sin6->sin6_scope_id; memcpy(sa->s_in6.sa_addr, sin6->sin6_addr.s6_addr, 16); break; +#endif } } nni_mtx_unlock(&resolv_mtx); @@ -205,12 +213,18 @@ nni_resolv_ip(const char *host, const char *serv, int family, bool passive, case NNG_AF_INET: fam = AF_INET; break; +#ifdef NNG_ENABLE_IPV6 case NNG_AF_INET6: fam = AF_INET6; break; case NNG_AF_UNSPEC: fam = AF_UNSPEC; break; +#else + case NNG_AF_UNSPEC: + fam = AF_INET; + break; +#endif default: nni_aio_finish_error(aio, NNG_ENOTSUP); return; @@ -306,12 +320,15 @@ parse_ip(const char *addr, nng_sockaddr *sa, bool want_port) struct addrinfo hints; struct addrinfo *results; int rv; - bool v6 = false; - bool wrapped = false; char *port; char *host; char *buf; size_t buf_len; +#ifdef NNG_ENABLE_IPV6 + bool v6 = false; + bool wrapped = false; + char *s; +#endif if (addr == NULL) { addr = ""; @@ -323,12 +340,13 @@ parse_ip(const char *addr, nng_sockaddr *sa, bool want_port) } memcpy(buf, addr, buf_len); host = buf; + +#ifdef NNG_ENABLE_IPV6 if (*host == '[') { v6 = true; wrapped = true; host++; } else { - char *s; for (s = host; *s != '\0'; s++) { if (*s == '.') { break; @@ -358,6 +376,13 @@ parse_ip(const char *addr, nng_sockaddr *sa, bool want_port) rv = NNG_EADDRINVAL; goto done; } +#else // NNG_ENABLE_IPV6 + for (port = host; *port != '\0'; port++) { + if (*port == ':') { + break; + } + } +#endif if ((!want_port) && (*port != '\0')) { rv = NNG_EADDRINVAL; @@ -373,9 +398,13 @@ parse_ip(const char *addr, nng_sockaddr *sa, bool want_port) memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_ADDRCONFIG | AI_NUMERICSERV | AI_NUMERICHOST | AI_PASSIVE; +#ifdef NNG_ENABLE_IPV6 if (v6) { hints.ai_family = AF_INET6; } +#else + hints.ai_family = AF_INET; +#endif rv = getaddrinfo(host, port, &hints, &results); if ((rv != 0) || (results == NULL)) { diff --git a/src/platform/windows/win_sockaddr.c b/src/platform/windows/win_sockaddr.c index 818f670b..585096e9 100644 --- a/src/platform/windows/win_sockaddr.c +++ b/src/platform/windows/win_sockaddr.c @@ -1,5 +1,5 @@ // -// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> // Copyright 2018 Capitar IT Group BV <info@capitar.com> // // This software is supplied under the terms of the MIT License, a @@ -15,8 +15,10 @@ int nni_win_nn2sockaddr(SOCKADDR_STORAGE *ss, const nni_sockaddr *sa) { - SOCKADDR_IN * sin; + SOCKADDR_IN *sin; +#ifdef NNG_ENABLE_IPV6 SOCKADDR_IN6 *sin6; +#endif if ((ss == NULL) || (sa == NULL)) { return (-1); @@ -30,6 +32,7 @@ nni_win_nn2sockaddr(SOCKADDR_STORAGE *ss, const nni_sockaddr *sa) sin->sin_addr.s_addr = sa->s_in.sa_addr; return (sizeof(*sin)); +#ifdef NNG_ENABLE_IPV6 case NNG_AF_INET6: sin6 = (void *) ss; memset(sin6, 0, sizeof(*sin6)); @@ -38,6 +41,7 @@ nni_win_nn2sockaddr(SOCKADDR_STORAGE *ss, const nni_sockaddr *sa) sin6->sin6_scope_id = sa->s_in6.sa_scope; memcpy(sin6->sin6_addr.s6_addr, sa->s_in6.sa_addr, 16); return (sizeof(*sin6)); +#endif } return (-1); } @@ -45,8 +49,10 @@ nni_win_nn2sockaddr(SOCKADDR_STORAGE *ss, const nni_sockaddr *sa) int nni_win_sockaddr2nn(nni_sockaddr *sa, const SOCKADDR_STORAGE *ss) { - SOCKADDR_IN * sin; + SOCKADDR_IN *sin; +#ifdef NNG_ENABLE_IPV6 SOCKADDR_IN6 *sin6; +#endif if ((ss == NULL) || (sa == NULL)) { return (-1); @@ -59,6 +65,7 @@ nni_win_sockaddr2nn(nni_sockaddr *sa, const SOCKADDR_STORAGE *ss) sa->s_in.sa_addr = sin->sin_addr.s_addr; return (0); +#ifdef NNG_ENABLE_IPV6 case PF_INET6: sin6 = (void *) ss; sa->s_in6.sa_family = NNG_AF_INET6; @@ -66,6 +73,7 @@ nni_win_sockaddr2nn(nni_sockaddr *sa, const SOCKADDR_STORAGE *ss) sa->s_in6.sa_scope = sin6->sin6_scope_id; memcpy(sa->s_in6.sa_addr, sin6->sin6_addr.s6_addr, 16); return (0); +#endif } return (-1); } diff --git a/src/platform/windows/win_tcpdial.c b/src/platform/windows/win_tcpdial.c index 9463c241..b4a6d745 100644 --- a/src/platform/windows/win_tcpdial.c +++ b/src/platform/windows/win_tcpdial.c @@ -1,5 +1,5 @@ // -// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> // Copyright 2018 Capitar IT Group BV <info@capitar.com> // Copyright 2018 Devolutions <info@devolutions.net> // @@ -113,7 +113,7 @@ static void tcp_dial_cancel(nni_aio *aio, void *arg, int rv) { nni_tcp_dialer *d = arg; - nni_tcp_conn * c; + nni_tcp_conn *c; nni_mtx_lock(&d->mtx); if ((c = nni_aio_get_prov_data(aio)) != NULL) { @@ -128,9 +128,9 @@ tcp_dial_cancel(nni_aio *aio, void *arg, int rv) static void tcp_dial_cb(nni_win_io *io, int rv, size_t cnt) { - nni_tcp_conn * c = io->ptr; + nni_tcp_conn *c = io->ptr; nni_tcp_dialer *d = c->dialer; - nni_aio * aio = c->conn_aio; + nni_aio *aio = c->conn_aio; BOOL ka; BOOL nd; @@ -183,7 +183,7 @@ nni_tcp_dial(nni_tcp_dialer *d, const nni_sockaddr *sa, nni_aio *aio) SOCKET s; SOCKADDR_STORAGE ss; int len; - nni_tcp_conn * c; + nni_tcp_conn *c; int rv; if (nni_aio_begin(aio) != 0) { @@ -335,13 +335,15 @@ tcp_dialer_get_locaddr(void *arg, void *buf, size_t *szp, nni_type t) static int tcp_dialer_set_locaddr(void *arg, const void *buf, size_t sz, nni_type t) { - nni_tcp_dialer * d = arg; - nng_sockaddr sa; - SOCKADDR_STORAGE ss; - struct sockaddr_in * sin; + nni_tcp_dialer *d = arg; + nng_sockaddr sa; + SOCKADDR_STORAGE ss; + struct sockaddr_in *sin; + size_t sslen; + int rv; +#ifdef NNG_ENABLE_IPV6 struct sockaddr_in6 *sin6; - size_t sslen; - int rv; +#endif if ((rv = nni_copyin_sockaddr(&sa, buf, sz, t)) != 0) { return (rv); @@ -358,12 +360,14 @@ tcp_dialer_set_locaddr(void *arg, const void *buf, size_t sz, nni_type t) return (NNG_EADDRINVAL); } break; +#ifdef NNG_ENABLE_IPV6 case AF_INET6: sin6 = (void *) &ss; if (sin6->sin6_port != 0) { return (NNG_EADDRINVAL); } break; +#endif default: return (NNG_EADDRINVAL); } |
