]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Refactor the interface handling in the netmgr
authorOndřej Surý <ondrej@sury.org>
Wed, 26 May 2021 06:15:34 +0000 (08:15 +0200)
committerOndřej Surý <ondrej@sury.org>
Wed, 26 May 2021 07:43:12 +0000 (09:43 +0200)
The isc_nmiface_t type was holding just a single isc_sockaddr_t,
so we got rid of the datatype and use plain isc_sockaddr_t in place
where isc_nmiface_t was used before.  This means less type-casting and
shorter path to access isc_sockaddr_t members.

At the same time, instead of keeping the reference to the isc_sockaddr_t
that was passed to us when we start listening, we will keep a local
copy. This prevents the data race on destruction of the ns_interface_t
objects where pending nmsockets could reference the sockaddr of already
destroyed ns_interface_t object.

20 files changed:
bin/dig/dighost.c
bin/named/controlconf.c
bin/rndc/rndc.c
bin/tests/test_client.c
bin/tests/test_server.c
lib/dns/xfrin.c
lib/isc/httpd.c
lib/isc/include/isc/netmgr.h
lib/isc/include/isc/types.h
lib/isc/netmgr/http.c
lib/isc/netmgr/netmgr-int.h
lib/isc/netmgr/netmgr.c
lib/isc/netmgr/tcp.c
lib/isc/netmgr/tcpdns.c
lib/isc/netmgr/tlsdns.c
lib/isc/netmgr/tlsstream.c
lib/isc/netmgr/udp.c
lib/isc/tests/doh_test.c
lib/isc/tests/netmgr_test.c
lib/ns/interfacemgr.c

index fd0c7455f40784f84448af70410cd3d87122a991..da87423d6fa0cb192ff69c2c89d113ccf8789b80 100644 (file)
@@ -2797,11 +2797,10 @@ start_tcp(dig_query_t *query) {
                if (query->lookup->tls_mode) {
                        result = isc_tlsctx_createclient(&query->tlsctx);
                        RUNTIME_CHECK(result == ISC_R_SUCCESS);
-                       isc_nm_tlsdnsconnect(netmgr,
-                                            (isc_nmiface_t *)&localaddr,
-                                            (isc_nmiface_t *)&query->sockaddr,
-                                            tcp_connected, query,
-                                            local_timeout, 0, query->tlsctx);
+                       isc_nm_tlsdnsconnect(netmgr, &localaddr,
+                                            &query->sockaddr, tcp_connected,
+                                            query, local_timeout, 0,
+                                            query->tlsctx);
                } else if (query->lookup->https_mode) {
                        char uri[4096] = { 0 };
                        snprintf(uri, sizeof(uri), "https://%s:%u%s",
@@ -2816,16 +2815,14 @@ start_tcp(dig_query_t *query) {
                                        query->tlsctx);
                        }
 
-                       isc_nm_httpconnect(netmgr, (isc_nmiface_t *)&localaddr,
-                                          (isc_nmiface_t *)&query->sockaddr,
+                       isc_nm_httpconnect(netmgr, &localaddr, &query->sockaddr,
                                           uri, !query->lookup->https_get,
                                           tcp_connected, query, query->tlsctx,
                                           local_timeout, 0);
                } else {
-                       isc_nm_tcpdnsconnect(
-                               netmgr, (isc_nmiface_t *)&localaddr,
-                               (isc_nmiface_t *)&query->sockaddr,
-                               tcp_connected, query, local_timeout, 0);
+                       isc_nm_tcpdnsconnect(netmgr, &localaddr,
+                                            &query->sockaddr, tcp_connected,
+                                            query, local_timeout, 0);
                }
 
                /* XXX: set DSCP */
@@ -2998,8 +2995,7 @@ start_udp(dig_query_t *query) {
        }
 
        query_attach(query, &connectquery);
-       isc_nm_udpconnect(netmgr, (isc_nmiface_t *)&localaddr,
-                         (isc_nmiface_t *)&query->sockaddr, udp_ready,
+       isc_nm_udpconnect(netmgr, &localaddr, &query->sockaddr, udp_ready,
                          connectquery,
                          (timeout ? timeout : UDP_TIMEOUT) * 1000, 0);
 }
index d3084b3ea18c688f93b7e7f315961e5cf6e4adbd..69a4cfad703b465bfce0e86274eeb5976f182056 100644 (file)
@@ -1165,9 +1165,8 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
 #endif
 
        CHECK(isc_nm_listentcp(
-               named_g_netmgr, (isc_nmiface_t *)&listener->address,
-               control_newconn, listener, sizeof(controlconnection_t), 5, NULL,
-               &listener->sock));
+               named_g_netmgr, &listener->address, control_newconn, listener,
+               sizeof(controlconnection_t), 5, NULL, &listener->sock));
 #if 0
        /* XXX: no unix socket support yet */
        if (type == isc_socktype_unix) {
index 88ea9f3ab88d21f94ac8f95b0c507f77459409bb..97b182999f34571bec9b93a7a7e5a17018b372b9 100644 (file)
@@ -600,8 +600,8 @@ rndc_startconnect(isc_sockaddr_t *addr) {
        }
 
        atomic_fetch_add_relaxed(&connects, 1);
-       isc_nm_tcpconnect(netmgr, (isc_nmiface_t *)local, (isc_nmiface_t *)addr,
-                         rndc_connected, &rndc_ccmsg, 60000, 0);
+       isc_nm_tcpconnect(netmgr, local, addr, rndc_connected, &rndc_ccmsg,
+                         60000, 0);
 }
 
 static void
index 6337406298130c8e84d72e1696b6cdd9a472c805..422b3f8115997aea9c9ff36f8795c1942e1f588a 100644 (file)
@@ -423,20 +423,17 @@ static void
 run(void) {
        switch (protocol) {
        case UDP:
-               isc_nm_udpconnect(netmgr, (isc_nmiface_t *)&sockaddr_local,
-                                 (isc_nmiface_t *)&sockaddr_remote, connect_cb,
-                                 NULL, timeout, 0);
+               isc_nm_udpconnect(netmgr, &sockaddr_local, &sockaddr_remote,
+                                 connect_cb, NULL, timeout, 0);
                break;
        case TCP:
-               isc_nm_tcpdnsconnect(netmgr, (isc_nmiface_t *)&sockaddr_local,
-                                    (isc_nmiface_t *)&sockaddr_remote,
+               isc_nm_tcpdnsconnect(netmgr, &sockaddr_local, &sockaddr_remote,
                                     connect_cb, NULL, timeout, 0);
                break;
        case DOT: {
                isc_tlsctx_createclient(&tls_ctx);
 
-               isc_nm_tlsdnsconnect(netmgr, (isc_nmiface_t *)&sockaddr_local,
-                                    (isc_nmiface_t *)&sockaddr_remote,
+               isc_nm_tlsdnsconnect(netmgr, &sockaddr_local, &sockaddr_remote,
                                     connect_cb, NULL, timeout, 0, tls_ctx);
                break;
        }
@@ -454,10 +451,9 @@ run(void) {
                if (is_https) {
                        isc_tlsctx_createclient(&tls_ctx);
                }
-               isc_nm_httpconnect(netmgr, (isc_nmiface_t *)&sockaddr_local,
-                                  (isc_nmiface_t *)&sockaddr_remote, req_url,
-                                  is_post, connect_cb, NULL, tls_ctx, timeout,
-                                  0);
+               isc_nm_httpconnect(netmgr, &sockaddr_local, &sockaddr_remote,
+                                  req_url, is_post, connect_cb, NULL, tls_ctx,
+                                  timeout, 0);
        } break;
        default:
                INSIST(0);
index a53577e2010bdef8ea7f86597efb18030064f6a5..01d49d9188486352953f121d6d4201e8b8272006 100644 (file)
@@ -266,20 +266,20 @@ run(void) {
 
        switch (protocol) {
        case UDP:
-               result = isc_nm_listenudp(netmgr, (isc_nmiface_t *)&sockaddr,
-                                         read_cb, NULL, 0, &sock);
+               result = isc_nm_listenudp(netmgr, &sockaddr, read_cb, NULL, 0,
+                                         &sock);
                break;
        case TCP:
-               result = isc_nm_listentcpdns(netmgr, (isc_nmiface_t *)&sockaddr,
-                                            read_cb, NULL, accept_cb, NULL, 0,
-                                            0, NULL, &sock);
+               result = isc_nm_listentcpdns(netmgr, &sockaddr, read_cb, NULL,
+                                            accept_cb, NULL, 0, 0, NULL,
+                                            &sock);
                break;
        case DOT: {
                isc_tlsctx_createserver(NULL, NULL, &tls_ctx);
 
-               result = isc_nm_listentlsdns(netmgr, (isc_nmiface_t *)&sockaddr,
-                                            read_cb, NULL, accept_cb, NULL, 0,
-                                            0, NULL, tls_ctx, &sock);
+               result = isc_nm_listentlsdns(netmgr, &sockaddr, read_cb, NULL,
+                                            accept_cb, NULL, 0, 0, NULL,
+                                            tls_ctx, &sock);
                break;
        }
        case HTTPS:
@@ -288,8 +288,8 @@ run(void) {
                if (is_https) {
                        isc_tlsctx_createserver(NULL, NULL, &tls_ctx);
                }
-               result = isc_nm_listenhttp(netmgr, (isc_nmiface_t *)&sockaddr,
-                                          0, NULL, tls_ctx, &sock);
+               result = isc_nm_listenhttp(netmgr, &sockaddr, 0, NULL, tls_ctx,
+                                          &sock);
                if (result == ISC_R_SUCCESS) {
                        result = isc_nm_http_endpoint(sock, DEFAULT_DOH_PATH,
                                                      read_cb, NULL, 0);
index d9228b48c7a51c11cf81fdd3a6323f2e8f56a1cb..426aa17fa1a3419d4ad99794313544cd1db7efac 100644 (file)
@@ -936,17 +936,15 @@ xfrin_start(dns_xfrin_ctx_t *xfr) {
         */
        switch (transport_type) {
        case DNS_TRANSPORT_TCP:
-               isc_nm_tcpdnsconnect(xfr->netmgr,
-                                    (isc_nmiface_t *)&xfr->sourceaddr,
-                                    (isc_nmiface_t *)&xfr->masteraddr,
-                                    xfrin_connect_done, connect_xfr, 30000, 0);
+               isc_nm_tcpdnsconnect(xfr->netmgr, &xfr->sourceaddr,
+                                    &xfr->masteraddr, xfrin_connect_done,
+                                    connect_xfr, 30000, 0);
                break;
        case DNS_TRANSPORT_TLS:
                CHECK(isc_tlsctx_createclient(&xfr->tlsctx));
-               isc_nm_tlsdnsconnect(
-                       xfr->netmgr, (isc_nmiface_t *)&xfr->sourceaddr,
-                       (isc_nmiface_t *)&xfr->masteraddr, xfrin_connect_done,
-                       connect_xfr, 30000, 0, xfr->tlsctx);
+               isc_nm_tlsdnsconnect(xfr->netmgr, &xfr->sourceaddr,
+                                    &xfr->masteraddr, xfrin_connect_done,
+                                    connect_xfr, 30000, 0, xfr->tlsctx);
                break;
        default:
                INSIST(0);
index ca304e973b11397b82b55dbb50a1b716b2dbce6c..5daf349426cc1be018b406e537593835cf533863 100644 (file)
@@ -228,9 +228,8 @@ isc_httpdmgr_create(isc_nm_t *nm, isc_mem_t *mctx, isc_sockaddr_t *addr,
 
        isc_refcount_init(&httpdmgr->references, 1);
 
-       CHECK(isc_nm_listentcp(nm, (isc_nmiface_t *)addr, httpd_newconn,
-                              httpdmgr, sizeof(isc_httpd_t), 5, NULL,
-                              &httpdmgr->sock));
+       CHECK(isc_nm_listentcp(nm, addr, httpd_newconn, httpdmgr,
+                              sizeof(isc_httpd_t), 5, NULL, &httpdmgr->sock));
 
        httpdmgr->magic = HTTPDMGR_MAGIC;
        *httpdmgrp = httpdmgr;
index 864dea92f49be3978af7da02e885387d2a800a5a..ca40fc6bcdbd14e6ba4358c6369fdbe006ef1b56 100644 (file)
@@ -173,7 +173,7 @@ isc_nmhandle_netmgr(isc_nmhandle_t *handle);
  */
 
 isc_result_t
-isc_nm_listenudp(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nm_recv_cb_t cb,
+isc_nm_listenudp(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t cb,
                 void *cbarg, size_t extrasize, isc_nmsocket_t **sockp);
 /*%<
  * Start listening for UDP packets on interface 'iface' using net manager
@@ -190,7 +190,7 @@ isc_nm_listenudp(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nm_recv_cb_t cb,
  */
 
 void
-isc_nm_udpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_udpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                  isc_nm_cb_t cb, void *cbarg, unsigned int timeout,
                  size_t extrahandlesize);
 /*%<
@@ -278,7 +278,7 @@ isc_nm_send(isc_nmhandle_t *handle, isc_region_t *region, isc_nm_cb_t cb,
  */
 
 isc_result_t
-isc_nm_listentcp(isc_nm_t *mgr, isc_nmiface_t *iface,
+isc_nm_listentcp(isc_nm_t *mgr, isc_sockaddr_t *iface,
                 isc_nm_accept_cb_t accept_cb, void *accept_cbarg,
                 size_t extrahandlesize, int backlog, isc_quota_t *quota,
                 isc_nmsocket_t **sockp);
@@ -301,7 +301,7 @@ isc_nm_listentcp(isc_nm_t *mgr, isc_nmiface_t *iface,
  */
 
 void
-isc_nm_tcpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_tcpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                  isc_nm_cb_t cb, void *cbarg, unsigned int timeout,
                  size_t extrahandlesize);
 /*%<
@@ -319,7 +319,7 @@ isc_nm_tcpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
  */
 
 isc_result_t
-isc_nm_listentcpdns(isc_nm_t *mgr, isc_nmiface_t *iface,
+isc_nm_listentcpdns(isc_nm_t *mgr, isc_sockaddr_t *iface,
                    isc_nm_recv_cb_t recv_cb, void *recv_cbarg,
                    isc_nm_accept_cb_t accept_cb, void *accept_cbarg,
                    size_t extrahandlesize, int backlog, isc_quota_t *quota,
@@ -348,7 +348,7 @@ isc_nm_listentcpdns(isc_nm_t *mgr, isc_nmiface_t *iface,
  */
 
 isc_result_t
-isc_nm_listentlsdns(isc_nm_t *mgr, isc_nmiface_t *iface,
+isc_nm_listentlsdns(isc_nm_t *mgr, isc_sockaddr_t *iface,
                    isc_nm_recv_cb_t recv_cb, void *recv_cbarg,
                    isc_nm_accept_cb_t accept_cb, void *accept_cbarg,
                    size_t extrahandlesize, int backlog, isc_quota_t *quota,
@@ -469,22 +469,22 @@ isc_nm_setstats(isc_nm_t *mgr, isc_stats_t *stats);
  */
 
 isc_result_t
-isc_nm_listentls(isc_nm_t *mgr, isc_nmiface_t *iface,
+isc_nm_listentls(isc_nm_t *mgr, isc_sockaddr_t *iface,
                 isc_nm_accept_cb_t accept_cb, void *accept_cbarg,
                 size_t extrahandlesize, int backlog, isc_quota_t *quota,
                 isc_tlsctx_t *sslctx, isc_nmsocket_t **sockp);
 
 void
-isc_nm_tlsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_tlsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                  isc_nm_cb_t cb, void *cbarg, isc_tlsctx_t *ctx,
                  unsigned int timeout, size_t extrahandlesize);
 
 void
-isc_nm_tcpdnsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_tcpdnsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                     isc_nm_cb_t cb, void *cbarg, unsigned int timeout,
                     size_t extrahandlesize);
 void
-isc_nm_tlsdnsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_tlsdnsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                     isc_nm_cb_t cb, void *cbarg, unsigned int timeout,
                     size_t extrahandlesize, isc_tlsctx_t *sslctx);
 /*%<
@@ -502,13 +502,13 @@ isc_nm_tlsdnsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
  */
 
 void
-isc_nm_httpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_httpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                   const char *uri, bool POST, isc_nm_cb_t cb, void *cbarg,
                   isc_tlsctx_t *ctx, unsigned int timeout,
                   size_t extrahandlesize);
 
 isc_result_t
-isc_nm_listenhttp(isc_nm_t *mgr, isc_nmiface_t *iface, int backlog,
+isc_nm_listenhttp(isc_nm_t *mgr, isc_sockaddr_t *iface, int backlog,
                  isc_quota_t *quota, isc_tlsctx_t *ctx,
                  isc_nmsocket_t **sockp);
 
index b3b66f358c5abcc5d6c39473ce52387c3c3940c6..d05433a710b7fb972e08f16d52ebecef68e1fcb6 100644 (file)
@@ -67,22 +67,21 @@ typedef struct isc_netaddr   isc_netaddr_t;       /*%< Net Address */
 typedef struct isc_netprefix    isc_netprefix_t;     /*%< Net Prefix */
 typedef struct isc_nm           isc_nm_t;            /*%< Network manager */
 typedef struct isc_nmsocket     isc_nmsocket_t; /*%< Network manager socket */
-typedef struct isc_nmiface  isc_nmiface_t;  /*%< Network manager interface.  */
-typedef struct isc_nmhandle isc_nmhandle_t; /*%< Network manager handle */
-typedef struct isc_portset  isc_portset_t;  /*%< Port Set */
-typedef struct isc_quota    isc_quota_t;    /*%< Quota */
-typedef struct isc_ratelimiter isc_ratelimiter_t;    /*%< Rate Limiter */
-typedef struct isc_region      isc_region_t;        /*%< Region */
-typedef uint64_t              isc_resourcevalue_t;  /*%< Resource Value */
-typedef unsigned int          isc_result_t;         /*%< Result */
-typedef struct isc_rwlock      isc_rwlock_t;        /*%< Read Write Lock */
-typedef struct isc_sockaddr    isc_sockaddr_t;      /*%< Socket Address */
-typedef ISC_LIST(isc_sockaddr_t) isc_sockaddrlist_t; /*%< Socket Address List
-                                                     * */
-typedef struct isc_socket      isc_socket_t;        /*%< Socket */
-typedef struct isc_socketevent isc_socketevent_t;    /*%< Socket Event */
-typedef struct isc_socketmgr   isc_socketmgr_t;             /*%< Socket Manager */
-typedef struct isc_stats       isc_stats_t;         /*%< Statistics */
+typedef struct isc_nmhandle     isc_nmhandle_t; /*%< Network manager handle */
+typedef struct isc_portset      isc_portset_t;  /*%< Port Set */
+typedef struct isc_quota        isc_quota_t;    /*%< Quota */
+typedef struct isc_ratelimiter  isc_ratelimiter_t;   /*%< Rate Limiter */
+typedef struct isc_region       isc_region_t;        /*%< Region */
+typedef uint64_t                isc_resourcevalue_t; /*%< Resource Value */
+typedef unsigned int            isc_result_t;        /*%< Result */
+typedef struct isc_rwlock       isc_rwlock_t;        /*%< Read Write Lock */
+typedef struct isc_sockaddr     isc_sockaddr_t;      /*%< Socket Address */
+typedef ISC_LIST(isc_sockaddr_t) isc_sockaddrlist_t;  /*%< Socket Address List
+                                                      * */
+typedef struct isc_socket      isc_socket_t;         /*%< Socket */
+typedef struct isc_socketevent isc_socketevent_t;     /*%< Socket Event */
+typedef struct isc_socketmgr   isc_socketmgr_t;              /*%< Socket Manager */
+typedef struct isc_stats       isc_stats_t;          /*%< Statistics */
 #if defined(_WIN32) && !defined(_WIN64)
 typedef int_fast32_t isc_statscounter_t; /*%< Statistics Counter */
 #else  /* if defined(_WIN32) && !defined(_WIN64) */
index e46f2c39ff6371933d6af4c433fa73926c2a130c..0b2fbd479c904319c9a5c74ce9200e6842350abe 100644 (file)
@@ -124,7 +124,7 @@ struct isc_nm_http_session {
        isc_nmhandle_t *handle;
        isc_nmhandle_t *client_httphandle;
        isc_nmsocket_t *serversocket;
-       isc_nmiface_t server_iface;
+       isc_sockaddr_t server_iface;
 
        uint8_t buf[MAX_DNS_MESSAGE_SIZE];
        size_t bufsize;
@@ -1053,7 +1053,7 @@ http_call_connect_cb(isc_nmsocket_t *sock, isc_nm_http_session_t *session,
                     isc_result_t result) {
        isc__nm_uvreq_t *req = NULL;
        isc_nmhandle_t *httphandle = isc__nmhandle_get(sock, &sock->peer,
-                                                      &sock->iface->addr);
+                                                      &sock->iface);
 
        REQUIRE(sock->connect_cb != NULL);
 
@@ -1171,11 +1171,11 @@ error:
 }
 
 void
-isc_nm_httpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_httpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                   const char *uri, bool post, isc_nm_cb_t cb, void *cbarg,
                   isc_tlsctx_t *tlsctx, unsigned int timeout,
                   size_t extrahandlesize) {
-       isc_nmiface_t local_interface;
+       isc_sockaddr_t local_interface;
        isc_nmsocket_t *sock = NULL;
 
        REQUIRE(VALID_NM(mgr));
@@ -1185,8 +1185,7 @@ isc_nm_httpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        REQUIRE(*uri != '\0');
 
        if (local == NULL) {
-               isc_sockaddr_anyofpf(&local_interface.addr,
-                                    (peer->addr).type.sa.sa_family);
+               isc_sockaddr_anyofpf(&local_interface, peer->type.sa.sa_family);
                local = &local_interface;
        }
 
@@ -1205,10 +1204,9 @@ isc_nm_httpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
 
                req->cb.connect = cb;
                req->cbarg = cbarg;
-               req->peer = peer->addr;
-               req->local = local->addr;
-               req->handle = isc__nmhandle_get(sock, &req->peer,
-                                               &sock->iface->addr);
+               req->peer = *peer;
+               req->local = *local;
+               req->handle = isc__nmhandle_get(sock, &req->peer, &sock->iface);
 
                if (isc__nm_in_netthread()) {
                        sock->tid = isc_nm_tid();
@@ -1233,7 +1231,7 @@ isc_nm_httpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
         */
        if (local == &local_interface) {
                sock->h2.connect.local_interface = local_interface;
-               sock->iface = &sock->h2.connect.local_interface;
+               sock->iface = sock->h2.connect.local_interface;
        }
 
        if (tlsctx != NULL) {
@@ -1381,7 +1379,7 @@ server_on_begin_headers_callback(nghttp2_session *ngsession,
        socket = isc_mem_get(session->mctx, sizeof(isc_nmsocket_t));
        isc__nmsocket_init(socket, session->serversocket->mgr,
                           isc_nm_httpsocket,
-                          (isc_nmiface_t *)&session->server_iface);
+                          (isc_sockaddr_t *)&session->server_iface);
        socket->h2 = (isc_nmsocket_h2_t){
                .buf = isc_mem_allocate(session->mctx, MAX_DNS_MESSAGE_SIZE),
                .psock = socket,
@@ -2128,7 +2126,7 @@ httplisten_acceptcb(isc_nmhandle_t *handle, isc_result_t result, void *cbarg) {
 
        isc_nmhandle_attach(handle, &session->handle);
        isc__nmsocket_attach(httplistensock, &session->serversocket);
-       session->server_iface.addr = isc_nmhandle_localaddr(session->handle);
+       session->server_iface = isc_nmhandle_localaddr(session->handle);
        server_send_connection_header(session);
 
        /* TODO H2 */
@@ -2137,7 +2135,7 @@ httplisten_acceptcb(isc_nmhandle_t *handle, isc_result_t result, void *cbarg) {
 }
 
 isc_result_t
-isc_nm_listenhttp(isc_nm_t *mgr, isc_nmiface_t *iface, int backlog,
+isc_nm_listenhttp(isc_nm_t *mgr, isc_sockaddr_t *iface, int backlog,
                  isc_quota_t *quota, isc_tlsctx_t *ctx,
                  isc_nmsocket_t **sockp) {
        isc_nmsocket_t *sock = NULL;
index 907896ac72ee0b5044a3fd6892fbead26e5c394f..06c84362b2625a5cddb26675526e7316b797fe6a 100644 (file)
@@ -829,7 +829,7 @@ typedef struct isc_nmsocket_h2 {
                char *uri;
                bool post;
                isc_tlsctx_t *tlsctx;
-               isc_nmiface_t local_interface;
+               isc_sockaddr_t local_interface;
                void *cstream;
        } connect;
 } isc_nmsocket_h2_t;
@@ -887,8 +887,8 @@ struct isc_nmsocket {
                isc_tls_t *tls;
                isc_tlsctx_t *ctx;
                isc_nmsocket_t *tlslistener;
-               isc_nmiface_t server_iface;
-               isc_nmiface_t local_iface;
+               isc_sockaddr_t server_iface;
+               isc_sockaddr_t local_iface;
                atomic_bool result_updated;
                enum {
                        TLS_INIT,
@@ -932,7 +932,7 @@ struct isc_nmsocket {
        /*% Child sockets for multi-socket setups */
        isc_nmsocket_t *children;
        uint_fast32_t nchildren;
-       isc_nmiface_t *iface;
+       isc_sockaddr_t iface;
        isc_nmhandle_t *statichandle;
        isc_nmhandle_t *outerhandle;
 
@@ -1174,7 +1174,7 @@ isc___nm_uvreq_put(isc__nm_uvreq_t **req, isc_nmsocket_t *sock FLARG);
 
 void
 isc___nmsocket_init(isc_nmsocket_t *sock, isc_nm_t *mgr, isc_nmsocket_type type,
-                   isc_nmiface_t *iface FLARG);
+                   isc_sockaddr_t *iface FLARG);
 /*%<
  * Initialize socket 'sock', attach it to 'mgr', and set it to type 'type'
  * and its interface to 'iface'.
index 063f7a892ddcc9445831c85d023f6f7a744bb23d..479e11e4ab133d25de49bda38d233c30d765efaf 100644 (file)
@@ -1470,17 +1470,17 @@ isc_nmsocket_close(isc_nmsocket_t **sockp) {
 
 void
 isc___nmsocket_init(isc_nmsocket_t *sock, isc_nm_t *mgr, isc_nmsocket_type type,
-                   isc_nmiface_t *iface FLARG) {
+                   isc_sockaddr_t *iface FLARG) {
        uint16_t family;
 
        REQUIRE(sock != NULL);
        REQUIRE(mgr != NULL);
        REQUIRE(iface != NULL);
 
-       family = iface->addr.type.sa.sa_family;
+       family = iface->type.sa.sa_family;
 
        *sock = (isc_nmsocket_t){ .type = type,
-                                 .iface = iface,
+                                 .iface = *iface,
                                  .fd = -1,
                                  .ah_size = 32,
                                  .inactivehandles = isc_astack_new(
@@ -1641,19 +1641,15 @@ isc___nmhandle_get(isc_nmsocket_t *sock, isc_sockaddr_t *peer,
 #endif
 
        if (peer != NULL) {
-               memmove(&handle->peer, peer, sizeof(isc_sockaddr_t));
+               handle->peer = *peer;
        } else {
-               memmove(&handle->peer, &sock->peer, sizeof(isc_sockaddr_t));
+               handle->peer = sock->peer;
        }
 
        if (local != NULL) {
-               memmove(&handle->local, local, sizeof(isc_sockaddr_t));
-       } else if (sock->iface != NULL) {
-               memmove(&handle->local, &sock->iface->addr,
-                       sizeof(isc_sockaddr_t));
+               handle->local = *local;
        } else {
-               INSIST(0);
-               ISC_UNREACHABLE();
+               handle->local = sock->iface;
        }
 
        LOCK(&sock->lock);
index 7ea14d29f3a554e992885674211c7c9c99c53d1f..03a57542e14d49b4f4f37142e728938d77be0cea 100644 (file)
@@ -201,7 +201,6 @@ isc__nm_async_tcpconnect(isc__networker_t *worker, isc__netievent_t *ev0) {
 
        REQUIRE(VALID_NMSOCK(sock));
        REQUIRE(sock->type == isc_nm_tcpsocket);
-       REQUIRE(sock->iface != NULL);
        REQUIRE(sock->parent == NULL);
        REQUIRE(sock->tid == isc_nm_tid());
 
@@ -285,7 +284,7 @@ error:
 }
 
 void
-isc_nm_tcpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_tcpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                  isc_nm_cb_t cb, void *cbarg, unsigned int timeout,
                  size_t extrahandlesize) {
        isc_result_t result = ISC_R_SUCCESS;
@@ -298,7 +297,7 @@ isc_nm_tcpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        REQUIRE(local != NULL);
        REQUIRE(peer != NULL);
 
-       sa_family = peer->addr.type.sa.sa_family;
+       sa_family = peer->type.sa.sa_family;
 
        sock = isc_mem_get(mgr->mctx, sizeof(*sock));
        isc__nmsocket_init(sock, mgr, isc_nm_tcpsocket, local);
@@ -312,9 +311,9 @@ isc_nm_tcpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        req = isc__nm_uvreq_get(mgr, sock);
        req->cb.connect = cb;
        req->cbarg = cbarg;
-       req->peer = peer->addr;
-       req->local = local->addr;
-       req->handle = isc__nmhandle_get(sock, &req->peer, &sock->iface->addr);
+       req->peer = *peer;
+       req->local = *local;
+       req->handle = isc__nmhandle_get(sock, &req->peer, &sock->iface);
 
        result = isc__nm_socket(sa_family, SOCK_STREAM, 0, &sock->fd);
        if (result != ISC_R_SUCCESS) {
@@ -379,7 +378,7 @@ isc__nm_tcp_lb_socket(sa_family_t sa_family) {
 }
 
 static void
-start_tcp_child(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nmsocket_t *sock,
+start_tcp_child(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nmsocket_t *sock,
                uv_os_sock_t fd, int tid) {
        isc__netievent_tcplisten_t *ievent = NULL;
        isc_nmsocket_t *csock = &sock->children[tid];
@@ -400,7 +399,7 @@ start_tcp_child(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nmsocket_t *sock,
 
 #if HAVE_SO_REUSEPORT_LB || defined(WIN32)
        UNUSED(fd);
-       csock->fd = isc__nm_tcp_lb_socket(iface->addr.type.sa.sa_family);
+       csock->fd = isc__nm_tcp_lb_socket(iface->type.sa.sa_family);
 #else
        csock->fd = dup(fd);
 #endif
@@ -420,7 +419,7 @@ enqueue_stoplistening(isc_nmsocket_t *sock) {
 }
 
 isc_result_t
-isc_nm_listentcp(isc_nm_t *mgr, isc_nmiface_t *iface,
+isc_nm_listentcp(isc_nm_t *mgr, isc_sockaddr_t *iface,
                 isc_nm_accept_cb_t accept_cb, void *accept_cbarg,
                 size_t extrahandlesize, int backlog, isc_quota_t *quota,
                 isc_nmsocket_t **sockp) {
@@ -456,7 +455,7 @@ isc_nm_listentcp(isc_nm_t *mgr, isc_nmiface_t *iface,
        sock->fd = -1;
 
 #if !HAVE_SO_REUSEPORT_LB && !defined(WIN32)
-       fd = isc__nm_tcp_lb_socket(iface->addr.type.sa.sa_family);
+       fd = isc__nm_tcp_lb_socket(iface->type.sa.sa_family);
 #endif
 
        isc_barrier_init(&sock->startlistening, sock->nchildren);
@@ -501,7 +500,6 @@ isc_nm_listentcp(isc_nm_t *mgr, isc_nmiface_t *iface,
 void
 isc__nm_async_tcplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        isc__netievent_tcplisten_t *ievent = (isc__netievent_tcplisten_t *)ev0;
-       isc_nmiface_t *iface = NULL;
        sa_family_t sa_family;
        int r;
        int flags = 0;
@@ -513,11 +511,9 @@ isc__nm_async_tcplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        REQUIRE(VALID_NMSOCK(ievent->sock->parent));
 
        sock = ievent->sock;
-       iface = sock->iface;
-       sa_family = iface->addr.type.sa.sa_family;
+       sa_family = sock->iface.type.sa.sa_family;
 
        REQUIRE(sock->type == isc_nm_tcpsocket);
-       REQUIRE(sock->iface != NULL);
        REQUIRE(sock->parent != NULL);
        REQUIRE(sock->tid == isc_nm_tid());
 
@@ -550,8 +546,8 @@ isc__nm_async_tcplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        }
 
 #if HAVE_SO_REUSEPORT_LB || defined(WIN32)
-       r = isc_uv_tcp_freebind(&sock->uv_handle.tcp,
-                               &sock->iface->addr.type.sa, flags);
+       r = isc_uv_tcp_freebind(&sock->uv_handle.tcp, &sock->iface.type.sa,
+                               flags);
        if (r < 0) {
                isc__nm_incstats(sock->mgr, sock->statsindex[STATID_BINDFAIL]);
                goto done;
@@ -559,7 +555,7 @@ isc__nm_async_tcplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
 #else
        if (sock->parent->fd == -1) {
                r = isc_uv_tcp_freebind(&sock->uv_handle.tcp,
-                                       &sock->iface->addr.type.sa, flags);
+                                       &sock->iface.type.sa, flags);
                if (r < 0) {
                        isc__nm_incstats(sock->mgr,
                                         sock->statsindex[STATID_BINDFAIL]);
@@ -974,7 +970,7 @@ accept_connection(isc_nmsocket_t *ssock, isc_quota_t *quota) {
        }
 
        csock = isc_mem_get(ssock->mgr->mctx, sizeof(isc_nmsocket_t));
-       isc__nmsocket_init(csock, ssock->mgr, isc_nm_tcpsocket, ssock->iface);
+       isc__nmsocket_init(csock, ssock->mgr, isc_nm_tcpsocket, &ssock->iface);
        csock->tid = ssock->tid;
        csock->extrahandlesize = ssock->extrahandlesize;
        isc__nmsocket_attach(ssock, &csock->server);
index fe0cfccf04acc5bdd29cfc7ecf3470f0db966208..24198b90f8d337c147ad4904a594eb45e31a3457 100644 (file)
@@ -176,7 +176,6 @@ isc__nm_async_tcpdnsconnect(isc__networker_t *worker, isc__netievent_t *ev0) {
 
        REQUIRE(VALID_NMSOCK(sock));
        REQUIRE(sock->type == isc_nm_tcpdnssocket);
-       REQUIRE(sock->iface != NULL);
        REQUIRE(sock->parent == NULL);
        REQUIRE(sock->tid == isc_nm_tid());
 
@@ -252,7 +251,7 @@ error:
 }
 
 void
-isc_nm_tcpdnsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_tcpdnsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                     isc_nm_cb_t cb, void *cbarg, unsigned int timeout,
                     size_t extrahandlesize) {
        isc_result_t result = ISC_R_SUCCESS;
@@ -265,7 +264,7 @@ isc_nm_tcpdnsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        REQUIRE(local != NULL);
        REQUIRE(peer != NULL);
 
-       sa_family = peer->addr.type.sa.sa_family;
+       sa_family = peer->type.sa.sa_family;
 
        sock = isc_mem_get(mgr->mctx, sizeof(*sock));
        isc__nmsocket_init(sock, mgr, isc_nm_tcpdnssocket, local);
@@ -278,9 +277,9 @@ isc_nm_tcpdnsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        req = isc__nm_uvreq_get(mgr, sock);
        req->cb.connect = cb;
        req->cbarg = cbarg;
-       req->peer = peer->addr;
-       req->local = local->addr;
-       req->handle = isc__nmhandle_get(sock, &req->peer, &sock->iface->addr);
+       req->peer = *peer;
+       req->local = *local;
+       req->handle = isc__nmhandle_get(sock, &req->peer, &sock->iface);
 
        result = isc__nm_socket(sa_family, SOCK_STREAM, 0, &sock->fd);
        if (result != ISC_R_SUCCESS) {
@@ -354,7 +353,7 @@ enqueue_stoplistening(isc_nmsocket_t *sock) {
 }
 
 static void
-start_tcpdns_child(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nmsocket_t *sock,
+start_tcpdns_child(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nmsocket_t *sock,
                   uv_os_sock_t fd, int tid) {
        isc__netievent_tcpdnslisten_t *ievent = NULL;
        isc_nmsocket_t *csock = &sock->children[tid];
@@ -377,7 +376,7 @@ start_tcpdns_child(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nmsocket_t *sock,
 
 #if HAVE_SO_REUSEPORT_LB || defined(WIN32)
        UNUSED(fd);
-       csock->fd = isc__nm_tcpdns_lb_socket(iface->addr.type.sa.sa_family);
+       csock->fd = isc__nm_tcpdns_lb_socket(iface->type.sa.sa_family);
 #else
        csock->fd = dup(fd);
 #endif
@@ -388,7 +387,7 @@ start_tcpdns_child(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nmsocket_t *sock,
                                     (isc__netievent_t *)ievent);
 }
 isc_result_t
-isc_nm_listentcpdns(isc_nm_t *mgr, isc_nmiface_t *iface,
+isc_nm_listentcpdns(isc_nm_t *mgr, isc_sockaddr_t *iface,
                    isc_nm_recv_cb_t recv_cb, void *recv_cbarg,
                    isc_nm_accept_cb_t accept_cb, void *accept_cbarg,
                    size_t extrahandlesize, int backlog, isc_quota_t *quota,
@@ -426,7 +425,7 @@ isc_nm_listentcpdns(isc_nm_t *mgr, isc_nmiface_t *iface,
        sock->fd = -1;
 
 #if !HAVE_SO_REUSEPORT_LB && !defined(WIN32)
-       fd = isc__nm_tcpdns_lb_socket(iface->addr.type.sa.sa_family);
+       fd = isc__nm_tcpdns_lb_socket(iface->type.sa.sa_family);
 #endif
 
        isc_barrier_init(&sock->startlistening, sock->nchildren);
@@ -472,7 +471,6 @@ void
 isc__nm_async_tcpdnslisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        isc__netievent_tcpdnslisten_t *ievent =
                (isc__netievent_tcpdnslisten_t *)ev0;
-       isc_nmiface_t *iface = NULL;
        sa_family_t sa_family;
        int r;
        int flags = 0;
@@ -484,11 +482,9 @@ isc__nm_async_tcpdnslisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        REQUIRE(VALID_NMSOCK(ievent->sock->parent));
 
        sock = ievent->sock;
-       iface = sock->iface;
-       sa_family = iface->addr.type.sa.sa_family;
+       sa_family = sock->iface.type.sa.sa_family;
 
        REQUIRE(sock->type == isc_nm_tcpdnssocket);
-       REQUIRE(sock->iface != NULL);
        REQUIRE(sock->parent != NULL);
        REQUIRE(sock->tid == isc_nm_tid());
 
@@ -519,8 +515,8 @@ isc__nm_async_tcpdnslisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        }
 
 #if HAVE_SO_REUSEPORT_LB || defined(WIN32)
-       r = isc_uv_tcp_freebind(&sock->uv_handle.tcp,
-                               &sock->iface->addr.type.sa, flags);
+       r = isc_uv_tcp_freebind(&sock->uv_handle.tcp, &sock->iface.type.sa,
+                               flags);
        if (r < 0) {
                isc__nm_incstats(sock->mgr, sock->statsindex[STATID_BINDFAIL]);
                goto done;
@@ -528,7 +524,7 @@ isc__nm_async_tcpdnslisten(isc__networker_t *worker, isc__netievent_t *ev0) {
 #else
        if (sock->parent->fd == -1) {
                r = isc_uv_tcp_freebind(&sock->uv_handle.tcp,
-                                       &sock->iface->addr.type.sa, flags);
+                                       &sock->iface.type.sa, flags);
                if (r < 0) {
                        isc__nm_incstats(sock->mgr,
                                         sock->statsindex[STATID_BINDFAIL]);
@@ -950,7 +946,7 @@ accept_connection(isc_nmsocket_t *ssock, isc_quota_t *quota) {
 
        csock = isc_mem_get(ssock->mgr->mctx, sizeof(isc_nmsocket_t));
        isc__nmsocket_init(csock, ssock->mgr, isc_nm_tcpdnssocket,
-                          ssock->iface);
+                          &ssock->iface);
        csock->tid = ssock->tid;
        csock->extrahandlesize = ssock->extrahandlesize;
        isc__nmsocket_attach(ssock, &csock->server);
@@ -1093,11 +1089,13 @@ isc__nm_tcpdns_send(isc_nmhandle_t *handle, isc_region_t *region,
 static void
 tcpdns_send_cb(uv_write_t *req, int status) {
        isc__nm_uvreq_t *uvreq = (isc__nm_uvreq_t *)req->data;
-       isc_nmsocket_t *sock = uvreq->sock;
+       isc_nmsocket_t *sock = NULL;
 
        REQUIRE(VALID_UVREQ(uvreq));
        REQUIRE(VALID_NMHANDLE(uvreq->handle));
 
+       sock = uvreq->sock;
+
        if (status < 0) {
                isc__nm_incstats(sock->mgr, sock->statsindex[STATID_SENDFAIL]);
                isc__nm_failed_send_cb(sock, uvreq,
index afe6a3104361236b5c4e6ac93d97d00b58d55546..84ef82b4b0024b87178a0df62bf531e47685ac40 100644 (file)
@@ -193,7 +193,6 @@ isc__nm_async_tlsdnsconnect(isc__networker_t *worker, isc__netievent_t *ev0) {
 
        REQUIRE(VALID_NMSOCK(sock));
        REQUIRE(sock->type == isc_nm_tlsdnssocket);
-       REQUIRE(sock->iface != NULL);
        REQUIRE(sock->parent == NULL);
        REQUIRE(sock->tid == isc_nm_tid());
 
@@ -306,7 +305,7 @@ error:
 }
 
 void
-isc_nm_tlsdnsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_tlsdnsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                     isc_nm_cb_t cb, void *cbarg, unsigned int timeout,
                     size_t extrahandlesize, isc_tlsctx_t *sslctx) {
        isc_result_t result = ISC_R_SUCCESS;
@@ -320,7 +319,7 @@ isc_nm_tlsdnsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        REQUIRE(peer != NULL);
        REQUIRE(sslctx != NULL);
 
-       sa_family = peer->addr.type.sa.sa_family;
+       sa_family = peer->type.sa.sa_family;
 
        sock = isc_mem_get(mgr->mctx, sizeof(*sock));
        isc__nmsocket_init(sock, mgr, isc_nm_tlsdnssocket, local);
@@ -335,9 +334,9 @@ isc_nm_tlsdnsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        req = isc__nm_uvreq_get(mgr, sock);
        req->cb.connect = cb;
        req->cbarg = cbarg;
-       req->peer = peer->addr;
-       req->local = local->addr;
-       req->handle = isc__nmhandle_get(sock, &req->peer, &sock->iface->addr);
+       req->peer = *peer;
+       req->local = *local;
+       req->handle = isc__nmhandle_get(sock, &req->peer, &sock->iface);
 
        result = isc__nm_socket(sa_family, SOCK_STREAM, 0, &sock->fd);
        if (result != ISC_R_SUCCESS) {
@@ -411,7 +410,7 @@ isc__nm_tlsdns_lb_socket(sa_family_t sa_family) {
 }
 
 static void
-start_tlsdns_child(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nmsocket_t *sock,
+start_tlsdns_child(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nmsocket_t *sock,
                   uv_os_sock_t fd, int tid) {
        isc__netievent_tlsdnslisten_t *ievent = NULL;
        isc_nmsocket_t *csock = &sock->children[tid];
@@ -436,7 +435,7 @@ start_tlsdns_child(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nmsocket_t *sock,
 
 #if HAVE_SO_REUSEPORT_LB || defined(WIN32)
        UNUSED(fd);
-       csock->fd = isc__nm_tlsdns_lb_socket(iface->addr.type.sa.sa_family);
+       csock->fd = isc__nm_tlsdns_lb_socket(iface->type.sa.sa_family);
 #else
        csock->fd = dup(fd);
 #endif
@@ -456,7 +455,7 @@ enqueue_stoplistening(isc_nmsocket_t *sock) {
 }
 
 isc_result_t
-isc_nm_listentlsdns(isc_nm_t *mgr, isc_nmiface_t *iface,
+isc_nm_listentlsdns(isc_nm_t *mgr, isc_sockaddr_t *iface,
                    isc_nm_recv_cb_t recv_cb, void *recv_cbarg,
                    isc_nm_accept_cb_t accept_cb, void *accept_cbarg,
                    size_t extrahandlesize, int backlog, isc_quota_t *quota,
@@ -496,7 +495,7 @@ isc_nm_listentlsdns(isc_nm_t *mgr, isc_nmiface_t *iface,
        sock->fd = -1;
 
 #if !HAVE_SO_REUSEPORT_LB && !defined(WIN32)
-       fd = isc__nm_tlsdns_lb_socket(iface->addr.type.sa.sa_family);
+       fd = isc__nm_tlsdns_lb_socket(iface->type.sa.sa_family);
 #endif
 
        isc_barrier_init(&sock->startlistening, sock->nchildren);
@@ -542,7 +541,6 @@ void
 isc__nm_async_tlsdnslisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        isc__netievent_tlsdnslisten_t *ievent =
                (isc__netievent_tlsdnslisten_t *)ev0;
-       isc_nmiface_t *iface = NULL;
        sa_family_t sa_family;
        int r;
        int flags = 0;
@@ -554,11 +552,9 @@ isc__nm_async_tlsdnslisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        REQUIRE(VALID_NMSOCK(ievent->sock->parent));
 
        sock = ievent->sock;
-       iface = sock->iface;
-       sa_family = iface->addr.type.sa.sa_family;
+       sa_family = sock->iface.type.sa.sa_family;
 
        REQUIRE(sock->type == isc_nm_tlsdnssocket);
-       REQUIRE(sock->iface != NULL);
        REQUIRE(sock->parent != NULL);
        REQUIRE(sock->tid == isc_nm_tid());
 
@@ -589,8 +585,8 @@ isc__nm_async_tlsdnslisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        }
 
 #if HAVE_SO_REUSEPORT_LB || defined(WIN32)
-       r = isc_uv_tcp_freebind(&sock->uv_handle.tcp,
-                               &sock->iface->addr.type.sa, flags);
+       r = isc_uv_tcp_freebind(&sock->uv_handle.tcp, &sock->iface.type.sa,
+                               flags);
        if (r < 0) {
                isc__nm_incstats(sock->mgr, sock->statsindex[STATID_BINDFAIL]);
                goto done;
@@ -598,7 +594,7 @@ isc__nm_async_tlsdnslisten(isc__networker_t *worker, isc__netievent_t *ev0) {
 #else
        if (sock->parent->fd == -1) {
                r = isc_uv_tcp_freebind(&sock->uv_handle.tcp,
-                                       &sock->iface->addr.type.sa, flags);
+                                       &sock->iface.type.sa, flags);
                if (r < 0) {
                        isc__nm_incstats(sock->mgr,
                                         sock->statsindex[STATID_BINDFAIL]);
@@ -1440,7 +1436,7 @@ accept_connection(isc_nmsocket_t *ssock, isc_quota_t *quota) {
 
        csock = isc_mem_get(ssock->mgr->mctx, sizeof(isc_nmsocket_t));
        isc__nmsocket_init(csock, ssock->mgr, isc_nm_tlsdnssocket,
-                          ssock->iface);
+                          &ssock->iface);
        csock->tid = ssock->tid;
        csock->extrahandlesize = ssock->extrahandlesize;
        isc__nmsocket_attach(ssock, &csock->server);
index 3c2a60c46c7344be1641308e906992f1614c9a46..c8e7a70919d8e3e2c7a55a1e53da6121b5da7c4e 100644 (file)
@@ -166,8 +166,7 @@ tls_failed_read_cb(isc_nmsocket_t *sock, const isc_result_t result) {
        {
                isc_nmhandle_t *handle = NULL;
                INSIST(sock->statichandle == NULL);
-               handle = isc__nmhandle_get(sock, &sock->peer,
-                                          &sock->iface->addr);
+               handle = isc__nmhandle_get(sock, &sock->peer, &sock->iface);
                tls_call_connect_cb(sock, handle, result);
                isc__nmsocket_clearcb(sock);
                isc_nmhandle_detach(&handle);
@@ -305,8 +304,7 @@ tls_try_handshake(isc_nmsocket_t *sock) {
        if (rv == 1) {
                INSIST(SSL_is_init_finished(sock->tlsstream.tls) == 1);
                INSIST(sock->statichandle == NULL);
-               tlshandle = isc__nmhandle_get(sock, &sock->peer,
-                                             &sock->iface->addr);
+               tlshandle = isc__nmhandle_get(sock, &sock->peer, &sock->iface);
                if (sock->tlsstream.server) {
                        sock->listener->accept_cb(tlshandle, ISC_R_SUCCESS,
                                                  sock->listener->accept_cbarg);
@@ -608,20 +606,22 @@ tlslisten_acceptcb(isc_nmhandle_t *handle, isc_result_t result, void *cbarg) {
 }
 
 isc_result_t
-isc_nm_listentls(isc_nm_t *mgr, isc_nmiface_t *iface,
+isc_nm_listentls(isc_nm_t *mgr, isc_sockaddr_t *iface,
                 isc_nm_accept_cb_t accept_cb, void *accept_cbarg,
                 size_t extrahandlesize, int backlog, isc_quota_t *quota,
                 SSL_CTX *sslctx, isc_nmsocket_t **sockp) {
        isc_result_t result;
-       isc_nmsocket_t *tlssock = isc_mem_get(mgr->mctx, sizeof(*tlssock));
+       isc_nmsocket_t *tlssock = NULL;
        isc_nmsocket_t *tsock = NULL;
 
        REQUIRE(VALID_NM(mgr));
 
+       tlssock = isc_mem_get(mgr->mctx, sizeof(*tlssock));
+
        isc__nmsocket_init(tlssock, mgr, isc_nm_tlslistener, iface);
        tlssock->tlsstream.server_iface = *iface;
-       ISC_LINK_INIT(&tlssock->tlsstream.server_iface.addr, link);
-       tlssock->iface = &tlssock->tlsstream.server_iface;
+       ISC_LINK_INIT(&tlssock->tlsstream.server_iface, link);
+       tlssock->iface = tlssock->tlsstream.server_iface;
        tlssock->result = ISC_R_UNSET;
        tlssock->accept_cb = accept_cb;
        tlssock->accept_cbarg = accept_cbarg;
@@ -868,7 +868,7 @@ static void
 tcp_connected(isc_nmhandle_t *handle, isc_result_t result, void *cbarg);
 
 void
-isc_nm_tlsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_tlsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                  isc_nm_cb_t cb, void *cbarg, SSL_CTX *ctx,
                  unsigned int timeout, size_t extrahandlesize) {
        isc_nmsocket_t *nsock = NULL;
@@ -882,8 +882,8 @@ isc_nm_tlsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        nsock = isc_mem_get(mgr->mctx, sizeof(*nsock));
        isc__nmsocket_init(nsock, mgr, isc_nm_tlssocket, local);
        nsock->tlsstream.local_iface = *local;
-       ISC_LINK_INIT(&nsock->tlsstream.local_iface.addr, link);
-       nsock->iface = &nsock->tlsstream.local_iface;
+       ISC_LINK_INIT(&nsock->tlsstream.local_iface, link);
+       nsock->iface = nsock->tlsstream.local_iface;
        nsock->extrahandlesize = extrahandlesize;
        nsock->result = ISC_R_UNSET;
        nsock->connect_cb = cb;
@@ -891,10 +891,8 @@ isc_nm_tlsconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        nsock->connect_timeout = timeout;
        nsock->tlsstream.ctx = ctx;
 
-       isc_nm_tcpconnect(mgr,
-                         (isc_nmiface_t *)&nsock->tlsstream.local_iface.addr,
-                         (isc_nmiface_t *)&peer->addr, tcp_connected, nsock,
-                         nsock->connect_timeout, 0);
+       isc_nm_tcpconnect(mgr, &nsock->tlsstream.local_iface, peer,
+                         tcp_connected, nsock, nsock->connect_timeout, 0);
 }
 
 static void
index 2c944b7d82724fd40eb9ea43dc1c17e678e169bc..95521f9a2f076462fc4f1b915df1389744c2eaa2 100644 (file)
@@ -79,7 +79,7 @@ isc__nm_udp_lb_socket(sa_family_t sa_family) {
 }
 
 static void
-start_udp_child(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nmsocket_t *sock,
+start_udp_child(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nmsocket_t *sock,
                uv_os_sock_t fd, int tid) {
        isc_nmsocket_t *csock;
        isc__netievent_udplisten_t *ievent = NULL;
@@ -97,7 +97,7 @@ start_udp_child(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nmsocket_t *sock,
 
 #if HAVE_SO_REUSEPORT_LB || defined(WIN32)
        UNUSED(fd);
-       csock->fd = isc__nm_udp_lb_socket(iface->addr.type.sa.sa_family);
+       csock->fd = isc__nm_udp_lb_socket(iface->type.sa.sa_family);
 #else
        csock->fd = dup(fd);
 #endif
@@ -117,7 +117,7 @@ enqueue_stoplistening(isc_nmsocket_t *sock) {
 }
 
 isc_result_t
-isc_nm_listenudp(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nm_recv_cb_t cb,
+isc_nm_listenudp(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t cb,
                 void *cbarg, size_t extrahandlesize, isc_nmsocket_t **sockp) {
        isc_result_t result = ISC_R_SUCCESS;
        isc_nmsocket_t *sock = NULL;
@@ -152,7 +152,7 @@ isc_nm_listenudp(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nm_recv_cb_t cb,
        sock->fd = -1;
 
 #if !HAVE_SO_REUSEPORT_LB && !defined(WIN32)
-       fd = isc__nm_udp_lb_socket(iface->addr.type.sa.sa_family);
+       fd = isc__nm_udp_lb_socket(iface->type.sa.sa_family);
 #endif
 
        isc_barrier_init(&sock->startlistening, sock->nchildren);
@@ -200,7 +200,6 @@ isc_nm_listenudp(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nm_recv_cb_t cb,
 void
 isc__nm_async_udplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        isc__netievent_udplisten_t *ievent = (isc__netievent_udplisten_t *)ev0;
-       isc_nmiface_t *iface = NULL;
        isc_nmsocket_t *sock = NULL;
        int r, uv_bind_flags = 0;
        int uv_init_flags = 0;
@@ -212,11 +211,9 @@ isc__nm_async_udplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        REQUIRE(VALID_NMSOCK(ievent->sock->parent));
 
        sock = ievent->sock;
-       iface = sock->iface;
-       sa_family = iface->addr.type.sa.sa_family;
+       sa_family = sock->iface.type.sa.sa_family;
 
        REQUIRE(sock->type == isc_nm_udpsocket);
-       REQUIRE(sock->iface != NULL);
        REQUIRE(sock->parent != NULL);
        REQUIRE(sock->tid == isc_nm_tid());
 
@@ -249,8 +246,7 @@ isc__nm_async_udplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
 
 #if HAVE_SO_REUSEPORT_LB || defined(WIN32)
        r = isc_uv_udp_freebind(&sock->uv_handle.udp,
-                               &sock->parent->iface->addr.type.sa,
-                               uv_bind_flags);
+                               &sock->parent->iface.type.sa, uv_bind_flags);
        if (r < 0) {
                isc__nm_incstats(sock->mgr, sock->statsindex[STATID_BINDFAIL]);
                goto done;
@@ -259,7 +255,7 @@ isc__nm_async_udplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
        if (sock->parent->fd == -1) {
                /* This thread is first, bind the socket */
                r = isc_uv_udp_freebind(&sock->uv_handle.udp,
-                                       &sock->parent->iface->addr.type.sa,
+                                       &sock->parent->iface.type.sa,
                                        uv_bind_flags);
                if (r < 0) {
                        isc__nm_incstats(sock->mgr,
@@ -546,10 +542,13 @@ static void
 udp_send_cb(uv_udp_send_t *req, int status) {
        isc_result_t result = ISC_R_SUCCESS;
        isc__nm_uvreq_t *uvreq = uv_handle_get_data((uv_handle_t *)req);
-       isc_nmsocket_t *sock = uvreq->sock;
+       isc_nmsocket_t *sock = NULL;
 
        REQUIRE(VALID_UVREQ(uvreq));
        REQUIRE(VALID_NMHANDLE(uvreq->handle));
+
+       sock = uvreq->sock;
+
        REQUIRE(sock->tid == isc_nm_tid());
 
        if (status < 0) {
@@ -630,11 +629,11 @@ udp_connect_direct(isc_nmsocket_t *sock, isc__nm_uvreq_t *req) {
        }
        isc__nm_incstats(sock->mgr, sock->statsindex[STATID_OPEN]);
 
-       if (sock->iface->addr.type.sa.sa_family == AF_INET6) {
+       if (sock->iface.type.sa.sa_family == AF_INET6) {
                uv_bind_flags |= UV_UDP_IPV6ONLY;
        }
 
-       r = uv_udp_bind(&sock->uv_handle.udp, &sock->iface->addr.type.sa,
+       r = uv_udp_bind(&sock->uv_handle.udp, &sock->iface.type.sa,
                        uv_bind_flags);
        if (r != 0) {
                isc__nm_incstats(sock->mgr, sock->statsindex[STATID_BINDFAIL]);
@@ -693,7 +692,6 @@ isc__nm_async_udpconnect(isc__networker_t *worker, isc__netievent_t *ev0) {
 
        REQUIRE(VALID_NMSOCK(sock));
        REQUIRE(sock->type == isc_nm_udpsocket);
-       REQUIRE(sock->iface != NULL);
        REQUIRE(sock->parent == NULL);
        REQUIRE(sock->tid == isc_nm_tid());
 
@@ -717,7 +715,7 @@ isc__nm_async_udpconnect(isc__networker_t *worker, isc__netievent_t *ev0) {
 }
 
 void
-isc_nm_udpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
+isc_nm_udpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer,
                  isc_nm_cb_t cb, void *cbarg, unsigned int timeout,
                  size_t extrahandlesize) {
        isc_result_t result = ISC_R_SUCCESS;
@@ -730,7 +728,7 @@ isc_nm_udpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        REQUIRE(local != NULL);
        REQUIRE(peer != NULL);
 
-       sa_family = peer->addr.type.sa.sa_family;
+       sa_family = peer->type.sa.sa_family;
 
        sock = isc_mem_get(mgr->mctx, sizeof(isc_nmsocket_t));
        isc__nmsocket_init(sock, mgr, isc_nm_udpsocket, local);
@@ -739,16 +737,16 @@ isc_nm_udpconnect(isc_nm_t *mgr, isc_nmiface_t *local, isc_nmiface_t *peer,
        sock->connect_cbarg = cbarg;
        sock->read_timeout = timeout;
        sock->extrahandlesize = extrahandlesize;
-       sock->peer = peer->addr;
+       sock->peer = *peer;
        sock->result = ISC_R_UNSET;
        atomic_init(&sock->client, true);
 
        req = isc__nm_uvreq_get(mgr, sock);
        req->cb.connect = cb;
        req->cbarg = cbarg;
-       req->peer = peer->addr;
-       req->local = local->addr;
-       req->handle = isc__nmhandle_get(sock, &req->peer, &sock->iface->addr);
+       req->peer = *peer;
+       req->local = *local;
+       req->handle = isc__nmhandle_get(sock, &req->peer, &sock->iface);
 
        result = isc__nm_socket(sa_family, SOCK_DGRAM, 0, &sock->fd);
        if (result != ISC_R_SUCCESS) {
index b4d82023597e86582d7cc6c06198321c9641dff8..75c6539ee4e6c8d27552dd060596e3b0992ea56f 100644 (file)
@@ -167,8 +167,8 @@ connect_send_request(isc_nm_t *mgr, const char *uri, bool post,
                ctx = client_tlsctx;
        }
 
-       isc_nm_httpconnect(mgr, NULL, (isc_nmiface_t *)&tcp_listen_addr, uri,
-                          post, connect_send_cb, data, ctx, timeout, 0);
+       isc_nm_httpconnect(mgr, NULL, &tcp_listen_addr, uri, post,
+                          connect_send_cb, data, ctx, timeout, 0);
 }
 
 static int
@@ -484,8 +484,8 @@ mock_doh_uv_tcp_bind(void **state) {
 
        WILL_RETURN(uv_tcp_bind, UV_EADDRINUSE);
 
-       result = isc_nm_listenhttp(listen_nm, (isc_nmiface_t *)&tcp_listen_addr,
-                                  0, NULL, NULL, &listen_sock);
+       result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL,
+                                  &listen_sock);
        assert_int_not_equal(result, ISC_R_SUCCESS);
        assert_null(listen_sock);
 
@@ -501,8 +501,8 @@ doh_noop(void **state) {
        isc_nmsocket_t *listen_sock = NULL;
        char req_url[256];
 
-       result = isc_nm_listenhttp(listen_nm, (isc_nmiface_t *)&tcp_listen_addr,
-                                  0, NULL, NULL, &listen_sock);
+       result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL,
+                                  &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_nm_http_endpoint(listen_sock, DOH_PATH, noop_read_cb, NULL,
                                      0);
@@ -547,8 +547,8 @@ doh_noresponse(void **state) {
        isc_nmsocket_t *listen_sock = NULL;
        char req_url[256];
 
-       result = isc_nm_listenhttp(listen_nm, (isc_nmiface_t *)&tcp_listen_addr,
-                                  0, NULL, NULL, &listen_sock);
+       result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL,
+                                  &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_nm_http_endpoint(listen_sock, DOH_PATH, noop_read_cb, NULL,
@@ -648,8 +648,8 @@ doh_timeout_recovery(void **state) {
        isc_tlsctx_t *ctx = atomic_load(&use_TLS) ? server_tlsctx : NULL;
        char req_url[256];
 
-       result = isc_nm_listenhttp(listen_nm, (isc_nmiface_t *)&tcp_listen_addr,
-                                  0, NULL, NULL, &listen_sock);
+       result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL,
+                                  &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        /*
@@ -668,9 +668,9 @@ doh_timeout_recovery(void **state) {
        isc_nm_settimeouts(connect_nm, T_SOFT, T_SOFT, T_SOFT, T_SOFT);
        sockaddr_to_url(&tcp_listen_addr, false, req_url, sizeof(req_url),
                        DOH_PATH);
-       isc_nm_httpconnect(connect_nm, NULL, (isc_nmiface_t *)&tcp_listen_addr,
-                          req_url, atomic_load(&POST), timeout_request_cb,
-                          NULL, ctx, T_SOFT, 0);
+       isc_nm_httpconnect(connect_nm, NULL, &tcp_listen_addr, req_url,
+                          atomic_load(&POST), timeout_request_cb, NULL, ctx,
+                          T_SOFT, 0);
 
        /*
         * Sleep until sends reaches 5.
@@ -778,9 +778,9 @@ doh_recv_one(void **state) {
        atomic_store(&total_sends, 1);
 
        atomic_store(&nsends, atomic_load(&total_sends));
-       result = isc_nm_listenhttp(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, 0, quotap,
-               atomic_load(&use_TLS) ? server_tlsctx : NULL, &listen_sock);
+       result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap,
+                                  atomic_load(&use_TLS) ? server_tlsctx : NULL,
+                                  &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_nm_http_endpoint(listen_sock, DOH_PATH,
@@ -928,9 +928,9 @@ doh_recv_two(void **state) {
        atomic_store(&total_sends, 2);
 
        atomic_store(&nsends, atomic_load(&total_sends));
-       result = isc_nm_listenhttp(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, 0, quotap,
-               atomic_load(&use_TLS) ? server_tlsctx : NULL, &listen_sock);
+       result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap,
+                                  atomic_load(&use_TLS) ? server_tlsctx : NULL,
+                                  &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_nm_http_endpoint(listen_sock, DOH_PATH,
@@ -944,10 +944,9 @@ doh_recv_two(void **state) {
                ctx = client_tlsctx;
        }
 
-       isc_nm_httpconnect(connect_nm, NULL, (isc_nmiface_t *)&tcp_listen_addr,
-                          req_url, atomic_load(&POST),
-                          doh_connect_send_two_requests_cb, NULL, ctx, 5000,
-                          0);
+       isc_nm_httpconnect(connect_nm, NULL, &tcp_listen_addr, req_url,
+                          atomic_load(&POST), doh_connect_send_two_requests_cb,
+                          NULL, ctx, 5000, 0);
 
        while (atomic_load(&nsends) > 0) {
                if (atomic_load(&was_error)) {
@@ -1049,9 +1048,9 @@ doh_recv_send(void **state) {
        isc_thread_t threads[32] = { 0 };
        isc_quota_t *quotap = init_listener_quota(workers);
 
-       result = isc_nm_listenhttp(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, 0, quotap,
-               atomic_load(&use_TLS) ? server_tlsctx : NULL, &listen_sock);
+       result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap,
+                                  atomic_load(&use_TLS) ? server_tlsctx : NULL,
+                                  &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_nm_http_endpoint(listen_sock, DOH_PATH,
@@ -1153,9 +1152,9 @@ doh_recv_half_send(void **state) {
        atomic_store(&total_sends, atomic_load(&total_sends) / 2);
 
        atomic_store(&nsends, atomic_load(&total_sends));
-       result = isc_nm_listenhttp(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, 0, quotap,
-               atomic_load(&use_TLS) ? server_tlsctx : NULL, &listen_sock);
+       result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap,
+                                  atomic_load(&use_TLS) ? server_tlsctx : NULL,
+                                  &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_nm_http_endpoint(listen_sock, DOH_PATH,
@@ -1262,9 +1261,9 @@ doh_half_recv_send(void **state) {
        atomic_store(&total_sends, atomic_load(&total_sends) / 2);
 
        atomic_store(&nsends, atomic_load(&total_sends));
-       result = isc_nm_listenhttp(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, 0, quotap,
-               atomic_load(&use_TLS) ? server_tlsctx : NULL, &listen_sock);
+       result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap,
+                                  atomic_load(&use_TLS) ? server_tlsctx : NULL,
+                                  &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_nm_http_endpoint(listen_sock, DOH_PATH,
@@ -1371,9 +1370,9 @@ doh_half_recv_half_send(void **state) {
        atomic_store(&total_sends, atomic_load(&total_sends) / 2);
 
        atomic_store(&nsends, atomic_load(&total_sends));
-       result = isc_nm_listenhttp(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, 0, quotap,
-               atomic_load(&use_TLS) ? server_tlsctx : NULL, &listen_sock);
+       result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap,
+                                  atomic_load(&use_TLS) ? server_tlsctx : NULL,
+                                  &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_nm_http_endpoint(listen_sock, DOH_PATH,
index 2a1516bffc3b29ccf3dd677b79abf5ba09f03e3d..0a28c8c5da733a6ddf8364e79dd0f19c7bd0c5b2 100644 (file)
@@ -619,9 +619,8 @@ connect_thread(isc_threadarg_t arg) {
 
 static void
 udp_connect(isc_nm_t *nm) {
-       isc_nm_udpconnect(nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
 }
 
 static void
@@ -631,8 +630,8 @@ mock_listenudp_uv_udp_open(void **state __attribute__((unused))) {
 
        WILL_RETURN(uv_udp_open, UV_ENOMEM);
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 noop_recv_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_not_equal(result, ISC_R_SUCCESS);
        assert_null(listen_sock);
 
@@ -646,8 +645,8 @@ mock_listenudp_uv_udp_bind(void **state __attribute__((unused))) {
 
        WILL_RETURN(uv_udp_bind, UV_EADDRINUSE);
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 noop_recv_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_not_equal(result, ISC_R_SUCCESS);
        assert_null(listen_sock);
 
@@ -661,8 +660,8 @@ mock_listenudp_uv_udp_recv_start(void **state __attribute__((unused))) {
 
        WILL_RETURN(uv_udp_recv_start, UV_EADDRINUSE);
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 noop_recv_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_not_equal(result, ISC_R_SUCCESS);
        assert_null(listen_sock);
 
@@ -675,9 +674,8 @@ mock_udpconnect_uv_udp_open(void **state __attribute__((unused))) {
 
        connect_readcb = NULL;
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
        isc__netmgr_shutdown(connect_nm);
 
        RESET_RETURN;
@@ -689,9 +687,8 @@ mock_udpconnect_uv_udp_bind(void **state __attribute__((unused))) {
 
        connect_readcb = NULL;
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
        isc__netmgr_shutdown(connect_nm);
 
        RESET_RETURN;
@@ -704,9 +701,8 @@ mock_udpconnect_uv_udp_connect(void **state __attribute__((unused))) {
 
        connect_readcb = NULL;
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
        isc__netmgr_shutdown(connect_nm);
 
        RESET_RETURN;
@@ -719,9 +715,8 @@ mock_udpconnect_uv_recv_buffer_size(void **state __attribute__((unused))) {
 
        connect_readcb = NULL;
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
        isc__netmgr_shutdown(connect_nm);
 
        RESET_RETURN;
@@ -733,9 +728,8 @@ mock_udpconnect_uv_send_buffer_size(void **state __attribute__((unused))) {
 
        connect_readcb = NULL;
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
        isc__netmgr_shutdown(connect_nm);
 
        RESET_RETURN;
@@ -746,8 +740,8 @@ udp_noop(void **state __attribute__((unused))) {
        isc_result_t result = ISC_R_SUCCESS;
        isc_nmsocket_t *listen_sock = NULL;
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 noop_recv_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_nm_stoplistening(listen_sock);
@@ -756,9 +750,8 @@ udp_noop(void **state __attribute__((unused))) {
 
        connect_readcb = NULL;
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
        isc__netmgr_shutdown(connect_nm);
 
        atomic_assert_int_eq(cconnects, 0);
@@ -773,14 +766,13 @@ udp_noresponse(void **state __attribute__((unused))) {
        isc_result_t result = ISC_R_SUCCESS;
        isc_nmsocket_t *listen_sock = NULL;
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 noop_recv_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
 
        WAIT_FOR_EQ(cconnects, 1);
        WAIT_FOR_EQ(csends, 1);
@@ -835,8 +827,8 @@ udp_timeout_recovery(void **state __attribute__((unused))) {
        /*
         * Listen using the noop callback so that client reads will time out.
         */
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 noop_recv_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        /*
@@ -846,9 +838,8 @@ udp_timeout_recovery(void **state __attribute__((unused))) {
         */
        connect_readcb = timeout_retry_cb;
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_SOFT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_SOFT, 0);
 
        WAIT_FOR_EQ(cconnects, 1);
        WAIT_FOR_GE(csends, 1);
@@ -871,14 +862,13 @@ udp_recv_one(void **state __attribute__((unused))) {
 
        atomic_store(&nsends, 1);
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 listen_read_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
 
        WAIT_FOR_EQ(cconnects, 1);
        WAIT_FOR_LE(nsends, 0);
@@ -912,21 +902,19 @@ udp_recv_two(void **state __attribute__((unused))) {
 
        atomic_store(&nsends, 2);
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 listen_read_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
 
        WAIT_FOR_EQ(cconnects, 1);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_udpconnect(connect_nm, (isc_nmiface_t *)&udp_connect_addr,
-                         (isc_nmiface_t *)&udp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
 
        WAIT_FOR_EQ(cconnects, 2);
        WAIT_FOR_LE(nsends, 0);
@@ -961,8 +949,8 @@ udp_recv_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 listen_read_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -1006,8 +994,8 @@ udp_recv_half_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 listen_read_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -1052,8 +1040,8 @@ udp_half_recv_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 listen_read_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -1101,8 +1089,8 @@ udp_half_recv_half_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listenudp(listen_nm, (isc_nmiface_t *)&udp_listen_addr,
-                                 listen_read_cb, NULL, 0, &listen_sock);
+       result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb,
+                                 NULL, 0, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -1153,9 +1141,8 @@ tcp_listener_init_quota(size_t nthreads) {
 
 static void
 tcp_connect(isc_nm_t *nm) {
-       isc_nm_tcpconnect(nm, (isc_nmiface_t *)&tcp_connect_addr,
-                         (isc_nmiface_t *)&tcp_listen_addr, connect_connect_cb,
-                         NULL, T_CONNECT, 0);
+       isc_nm_tcpconnect(nm, &tcp_connect_addr, &tcp_listen_addr,
+                         connect_connect_cb, NULL, T_CONNECT, 0);
 }
 
 static void
@@ -1175,14 +1162,14 @@ stream_listen(isc_nm_accept_cb_t accept_cb, void *accept_cbarg,
              isc_nmsocket_t **sockp) {
        isc_result_t result = ISC_R_SUCCESS;
        if (stream_use_TLS) {
-               result = isc_nm_listentls(
-                       listen_nm, (isc_nmiface_t *)&tcp_listen_addr, accept_cb,
-                       accept_cbarg, extrahandlesize, backlog, quota,
-                       tcp_listen_tlsctx, sockp);
+               result = isc_nm_listentls(listen_nm, &tcp_listen_addr,
+                                         accept_cb, accept_cbarg,
+                                         extrahandlesize, backlog, quota,
+                                         tcp_listen_tlsctx, sockp);
        } else {
                result = isc_nm_listentcp(
-                       listen_nm, (isc_nmiface_t *)&tcp_listen_addr, accept_cb,
-                       accept_cbarg, extrahandlesize, backlog, quota, sockp);
+                       listen_nm, &tcp_listen_addr, accept_cb, accept_cbarg,
+                       extrahandlesize, backlog, quota, sockp);
        }
 
        return (result);
@@ -1192,15 +1179,13 @@ static void
 stream_connect(isc_nm_cb_t cb, void *cbarg, unsigned int timeout,
               size_t extrahandlesize) {
        if (stream_use_TLS) {
-               isc_nm_tlsconnect(connect_nm,
-                                 (isc_nmiface_t *)&tcp_connect_addr,
-                                 (isc_nmiface_t *)&tcp_listen_addr, cb, cbarg,
+               isc_nm_tlsconnect(connect_nm, &tcp_connect_addr,
+                                 &tcp_listen_addr, cb, cbarg,
                                  tcp_connect_tlsctx, timeout, extrahandlesize);
        } else {
-               isc_nm_tcpconnect(connect_nm,
-                                 (isc_nmiface_t *)&tcp_connect_addr,
-                                 (isc_nmiface_t *)&tcp_listen_addr, cb, cbarg,
-                                 timeout, extrahandlesize);
+               isc_nm_tcpconnect(connect_nm, &tcp_connect_addr,
+                                 &tcp_listen_addr, cb, cbarg, timeout,
+                                 extrahandlesize);
        }
 }
 
@@ -1744,8 +1729,7 @@ tcp_half_recv_half_send_quota_sendback(void **state) {
 
 static void
 tcpdns_connect(isc_nm_t *nm) {
-       isc_nm_tcpdnsconnect(nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tcpdnsconnect(nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0);
 }
 
@@ -1754,9 +1738,9 @@ tcpdns_noop(void **state __attribute__((unused))) {
        isc_result_t result = ISC_R_SUCCESS;
        isc_nmsocket_t *listen_sock = NULL;
 
-       result = isc_nm_listentcpdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, noop_recv_cb,
-               NULL, noop_accept_cb, NULL, 0, 0, NULL, &listen_sock);
+       result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, noop_recv_cb,
+                                    NULL, noop_accept_cb, NULL, 0, 0, NULL,
+                                    &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_nm_stoplistening(listen_sock);
@@ -1765,8 +1749,7 @@ tcpdns_noop(void **state __attribute__((unused))) {
 
        connect_readcb = NULL;
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tcpdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0);
        isc__netmgr_shutdown(connect_nm);
 
@@ -1783,17 +1766,16 @@ tcpdns_noresponse(void **state __attribute__((unused))) {
        isc_nmsocket_t *listen_sock = NULL;
 
        isc_refcount_increment0(&active_cconnects);
-       result = isc_nm_listentcpdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, noop_recv_cb,
-               NULL, noop_accept_cb, NULL, 0, 0, NULL, &listen_sock);
+       result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, noop_recv_cb,
+                                    NULL, noop_accept_cb, NULL, 0, 0, NULL,
+                                    &listen_sock);
        if (result != ISC_R_SUCCESS) {
                isc_refcount_decrement(&active_cconnects);
                isc_test_nap(1000);
        }
        assert_int_equal(result, ISC_R_SUCCESS);
 
-       isc_nm_tcpdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0);
 
        WAIT_FOR_EQ(cconnects, 1);
@@ -1829,9 +1811,9 @@ tcpdns_timeout_recovery(void **state __attribute__((unused))) {
         * reads to time out.
         */
        noanswer = true;
-       result = isc_nm_listentcpdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, &listen_sock);
+       result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        /*
@@ -1842,8 +1824,7 @@ tcpdns_timeout_recovery(void **state __attribute__((unused))) {
        connect_readcb = timeout_retry_cb;
        isc_nm_settimeouts(connect_nm, T_SOFT, T_SOFT, T_SOFT, T_SOFT);
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tcpdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_SOFT, 0);
 
        WAIT_FOR_EQ(cconnects, 1);
@@ -1867,14 +1848,13 @@ tcpdns_recv_one(void **state __attribute__((unused))) {
 
        atomic_store(&nsends, 1);
 
-       result = isc_nm_listentcpdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, &listen_sock);
+       result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tcpdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0);
 
        WAIT_FOR_EQ(cconnects, 1);
@@ -1909,21 +1889,19 @@ tcpdns_recv_two(void **state __attribute__((unused))) {
 
        atomic_store(&nsends, 2);
 
-       result = isc_nm_listentcpdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, &listen_sock);
+       result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tcpdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0);
 
        WAIT_FOR_EQ(cconnects, 1);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tcpdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0);
 
        WAIT_FOR_EQ(cconnects, 2);
@@ -1960,9 +1938,9 @@ tcpdns_recv_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listentcpdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, &listen_sock);
+       result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -2006,9 +1984,9 @@ tcpdns_recv_half_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listentcpdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, &listen_sock);
+       result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -2053,9 +2031,9 @@ tcpdns_half_recv_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listentcpdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, &listen_sock);
+       result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -2103,9 +2081,9 @@ tcpdns_half_recv_half_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listentcpdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, &listen_sock);
+       result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -2145,9 +2123,9 @@ tcpdns_half_recv_half_send(void **state __attribute__((unused))) {
 
 static void
 tls_connect(isc_nm_t *nm) {
-       isc_nm_tlsconnect(nm, (isc_nmiface_t *)&tcp_connect_addr,
-                         (isc_nmiface_t *)&tcp_listen_addr, connect_connect_cb,
-                         NULL, tcp_connect_tlsctx, T_CONNECT, 0);
+       isc_nm_tlsconnect(nm, &tcp_connect_addr, &tcp_listen_addr,
+                         connect_connect_cb, NULL, tcp_connect_tlsctx,
+                         T_CONNECT, 0);
 }
 
 static void
@@ -2328,8 +2306,7 @@ tls_half_recv_half_send_quota_sendback(void **state) {
 
 static void
 tlsdns_connect(isc_nm_t *nm) {
-       isc_nm_tlsdnsconnect(nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tlsdnsconnect(nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0,
                             tcp_connect_tlsctx);
 }
@@ -2339,10 +2316,9 @@ tlsdns_noop(void **state __attribute__((unused))) {
        isc_result_t result = ISC_R_SUCCESS;
        isc_nmsocket_t *listen_sock = NULL;
 
-       result = isc_nm_listentlsdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, noop_recv_cb,
-               NULL, noop_accept_cb, NULL, 0, 0, NULL, tcp_listen_tlsctx,
-               &listen_sock);
+       result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, noop_recv_cb,
+                                    NULL, noop_accept_cb, NULL, 0, 0, NULL,
+                                    tcp_listen_tlsctx, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_nm_stoplistening(listen_sock);
@@ -2351,8 +2327,7 @@ tlsdns_noop(void **state __attribute__((unused))) {
 
        connect_readcb = NULL;
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tlsdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tlsdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0,
                             tcp_connect_tlsctx);
 
@@ -2374,15 +2349,13 @@ tlsdns_noresponse(void **state __attribute__((unused))) {
        connect_addr = (isc_sockaddr_t){ .length = 0 };
        isc_sockaddr_fromin6(&connect_addr, &in6addr_loopback, 0);
 
-       result = isc_nm_listentlsdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, noop_recv_cb,
-               NULL, noop_accept_cb, NULL, 0, 0, NULL, tcp_listen_tlsctx,
-               &listen_sock);
+       result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, noop_recv_cb,
+                                    NULL, noop_accept_cb, NULL, 0, 0, NULL,
+                                    tcp_listen_tlsctx, &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tlsdnsconnect(connect_nm, (isc_nmiface_t *)&connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tlsdnsconnect(connect_nm, &connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0,
                             tcp_connect_tlsctx);
 
@@ -2423,10 +2396,10 @@ tlsdns_timeout_recovery(void **state __attribute__((unused))) {
         * reads to time out.
         */
        noanswer = true;
-       result = isc_nm_listentlsdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, tcp_listen_tlsctx,
-               &listen_sock);
+       result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, tcp_listen_tlsctx,
+                                    &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        /*
@@ -2437,8 +2410,7 @@ tlsdns_timeout_recovery(void **state __attribute__((unused))) {
        connect_readcb = timeout_retry_cb;
        isc_nm_settimeouts(connect_nm, T_SOFT, T_SOFT, T_SOFT, T_SOFT);
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tlsdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tlsdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_SOFT, 0,
                             tcp_connect_tlsctx);
 
@@ -2463,15 +2435,14 @@ tlsdns_recv_one(void **state __attribute__((unused))) {
 
        atomic_store(&nsends, 1);
 
-       result = isc_nm_listentlsdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, tcp_listen_tlsctx,
-               &listen_sock);
+       result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, tcp_listen_tlsctx,
+                                    &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tlsdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tlsdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0,
                             tcp_connect_tlsctx);
 
@@ -2507,23 +2478,21 @@ tlsdns_recv_two(void **state __attribute__((unused))) {
 
        atomic_store(&nsends, 2);
 
-       result = isc_nm_listentlsdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, tcp_listen_tlsctx,
-               &listen_sock);
+       result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, tcp_listen_tlsctx,
+                                    &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tlsdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tlsdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0,
                             tcp_connect_tlsctx);
 
        WAIT_FOR_EQ(cconnects, 1);
 
        isc_refcount_increment0(&active_cconnects);
-       isc_nm_tlsdnsconnect(connect_nm, (isc_nmiface_t *)&tcp_connect_addr,
-                            (isc_nmiface_t *)&tcp_listen_addr,
+       isc_nm_tlsdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr,
                             connect_connect_cb, NULL, T_CONNECT, 0,
                             tcp_connect_tlsctx);
 
@@ -2561,10 +2530,10 @@ tlsdns_recv_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listentlsdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, tcp_listen_tlsctx,
-               &listen_sock);
+       result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, tcp_listen_tlsctx,
+                                    &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -2608,10 +2577,10 @@ tlsdns_recv_half_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listentlsdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, tcp_listen_tlsctx,
-               &listen_sock);
+       result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, tcp_listen_tlsctx,
+                                    &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -2656,10 +2625,10 @@ tlsdns_half_recv_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listentlsdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, tcp_listen_tlsctx,
-               &listen_sock);
+       result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, tcp_listen_tlsctx,
+                                    &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
@@ -2707,10 +2676,10 @@ tlsdns_half_recv_half_send(void **state __attribute__((unused))) {
 
        SKIP_IN_CI;
 
-       result = isc_nm_listentlsdns(
-               listen_nm, (isc_nmiface_t *)&tcp_listen_addr, listen_read_cb,
-               NULL, listen_accept_cb, NULL, 0, 0, NULL, tcp_listen_tlsctx,
-               &listen_sock);
+       result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr,
+                                    listen_read_cb, NULL, listen_accept_cb,
+                                    NULL, 0, 0, NULL, tcp_listen_tlsctx,
+                                    &listen_sock);
        assert_int_equal(result, ISC_R_SUCCESS);
 
        memset(threads, 0, sizeof(threads));
index 267b77acee79b2e288bbc1039e26c4cc5eb32941..1ff6bcb859dab0dce154ae9fe5dd7ab574ad1d94 100644 (file)
@@ -455,8 +455,8 @@ ns_interface_listenudp(ns_interface_t *ifp) {
        isc_result_t result;
 
        /* Reserve space for an ns_client_t with the netmgr handle */
-       result = isc_nm_listenudp(ifp->mgr->nm, (isc_nmiface_t *)&ifp->addr,
-                                 ns__client_request, ifp, sizeof(ns_client_t),
+       result = isc_nm_listenudp(ifp->mgr->nm, &ifp->addr, ns__client_request,
+                                 ifp, sizeof(ns_client_t),
                                  &ifp->udplistensocket);
        return (result);
 }
@@ -466,10 +466,9 @@ ns_interface_listentcp(ns_interface_t *ifp) {
        isc_result_t result;
 
        result = isc_nm_listentcpdns(
-               ifp->mgr->nm, (isc_nmiface_t *)&ifp->addr, ns__client_request,
-               ifp, ns__client_tcpconn, ifp, sizeof(ns_client_t),
-               ifp->mgr->backlog, &ifp->mgr->sctx->tcpquota,
-               &ifp->tcplistensocket);
+               ifp->mgr->nm, &ifp->addr, ns__client_request, ifp,
+               ns__client_tcpconn, ifp, sizeof(ns_client_t), ifp->mgr->backlog,
+               &ifp->mgr->sctx->tcpquota, &ifp->tcplistensocket);
        if (result != ISC_R_SUCCESS) {
                isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_ERROR,
                              "creating TCP socket: %s",
@@ -511,10 +510,9 @@ ns_interface_listentls(ns_interface_t *ifp, isc_tlsctx_t *sslctx) {
        isc_result_t result;
 
        result = isc_nm_listentlsdns(
-               ifp->mgr->nm, (isc_nmiface_t *)&ifp->addr, ns__client_request,
-               ifp, ns__client_tcpconn, ifp, sizeof(ns_client_t),
-               ifp->mgr->backlog, &ifp->mgr->sctx->tcpquota, sslctx,
-               &ifp->tcplistensocket);
+               ifp->mgr->nm, &ifp->addr, ns__client_request, ifp,
+               ns__client_tcpconn, ifp, sizeof(ns_client_t), ifp->mgr->backlog,
+               &ifp->mgr->sctx->tcpquota, sslctx, &ifp->tcplistensocket);
 
        if (result != ISC_R_SUCCESS) {
                isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_ERROR,
@@ -544,14 +542,12 @@ ns_interface_listenhttp(ns_interface_t *ifp, isc_tlsctx_t *sslctx, char **eps,
                        size_t neps) {
        isc_result_t result;
        isc_nmsocket_t *sock = NULL;
-       size_t i = 0;
 
-       result = isc_nm_listenhttp(ifp->mgr->nm, (isc_nmiface_t *)&ifp->addr,
-                                  ifp->mgr->backlog, &ifp->mgr->sctx->tcpquota,
-                                  sslctx, &sock);
+       result = isc_nm_listenhttp(ifp->mgr->nm, &ifp->addr, ifp->mgr->backlog,
+                                  &ifp->mgr->sctx->tcpquota, sslctx, &sock);
 
        if (result == ISC_R_SUCCESS) {
-               for (i = 0; i < neps; i++) {
+               for (size_t i = 0; i < neps; i++) {
                        result = isc_nm_http_endpoint(sock, eps[i],
                                                      ns__client_request, ifp,
                                                      sizeof(ns_client_t));