From: Ondřej Surý Date: Wed, 26 May 2021 06:15:34 +0000 (+0200) Subject: Refactor the interface handling in the netmgr X-Git-Tag: v9.17.14~25^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=50270de8a012e1e90e9f56ae817fd85061cecebe;p=thirdparty%2Fbind9.git Refactor the interface handling in the netmgr 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. --- diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index fd0c7455f40..da87423d6fa 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -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); } diff --git a/bin/named/controlconf.c b/bin/named/controlconf.c index d3084b3ea18..69a4cfad703 100644 --- a/bin/named/controlconf.c +++ b/bin/named/controlconf.c @@ -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) { diff --git a/bin/rndc/rndc.c b/bin/rndc/rndc.c index 88ea9f3ab88..97b182999f3 100644 --- a/bin/rndc/rndc.c +++ b/bin/rndc/rndc.c @@ -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 diff --git a/bin/tests/test_client.c b/bin/tests/test_client.c index 63374062981..422b3f81159 100644 --- a/bin/tests/test_client.c +++ b/bin/tests/test_client.c @@ -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); diff --git a/bin/tests/test_server.c b/bin/tests/test_server.c index a53577e2010..01d49d91884 100644 --- a/bin/tests/test_server.c +++ b/bin/tests/test_server.c @@ -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); diff --git a/lib/dns/xfrin.c b/lib/dns/xfrin.c index d9228b48c7a..426aa17fa1a 100644 --- a/lib/dns/xfrin.c +++ b/lib/dns/xfrin.c @@ -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); diff --git a/lib/isc/httpd.c b/lib/isc/httpd.c index ca304e973b1..5daf349426c 100644 --- a/lib/isc/httpd.c +++ b/lib/isc/httpd.c @@ -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; diff --git a/lib/isc/include/isc/netmgr.h b/lib/isc/include/isc/netmgr.h index 864dea92f49..ca40fc6bcdb 100644 --- a/lib/isc/include/isc/netmgr.h +++ b/lib/isc/include/isc/netmgr.h @@ -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); diff --git a/lib/isc/include/isc/types.h b/lib/isc/include/isc/types.h index b3b66f358c5..d05433a710b 100644 --- a/lib/isc/include/isc/types.h +++ b/lib/isc/include/isc/types.h @@ -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) */ diff --git a/lib/isc/netmgr/http.c b/lib/isc/netmgr/http.c index e46f2c39ff6..0b2fbd479c9 100644 --- a/lib/isc/netmgr/http.c +++ b/lib/isc/netmgr/http.c @@ -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; diff --git a/lib/isc/netmgr/netmgr-int.h b/lib/isc/netmgr/netmgr-int.h index 907896ac72e..06c84362b26 100644 --- a/lib/isc/netmgr/netmgr-int.h +++ b/lib/isc/netmgr/netmgr-int.h @@ -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'. diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c index 063f7a892dd..479e11e4ab1 100644 --- a/lib/isc/netmgr/netmgr.c +++ b/lib/isc/netmgr/netmgr.c @@ -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); diff --git a/lib/isc/netmgr/tcp.c b/lib/isc/netmgr/tcp.c index 7ea14d29f3a..03a57542e14 100644 --- a/lib/isc/netmgr/tcp.c +++ b/lib/isc/netmgr/tcp.c @@ -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); diff --git a/lib/isc/netmgr/tcpdns.c b/lib/isc/netmgr/tcpdns.c index fe0cfccf04a..24198b90f8d 100644 --- a/lib/isc/netmgr/tcpdns.c +++ b/lib/isc/netmgr/tcpdns.c @@ -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, diff --git a/lib/isc/netmgr/tlsdns.c b/lib/isc/netmgr/tlsdns.c index afe6a310436..84ef82b4b00 100644 --- a/lib/isc/netmgr/tlsdns.c +++ b/lib/isc/netmgr/tlsdns.c @@ -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); diff --git a/lib/isc/netmgr/tlsstream.c b/lib/isc/netmgr/tlsstream.c index 3c2a60c46c7..c8e7a70919d 100644 --- a/lib/isc/netmgr/tlsstream.c +++ b/lib/isc/netmgr/tlsstream.c @@ -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 diff --git a/lib/isc/netmgr/udp.c b/lib/isc/netmgr/udp.c index 2c944b7d827..95521f9a2f0 100644 --- a/lib/isc/netmgr/udp.c +++ b/lib/isc/netmgr/udp.c @@ -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) { diff --git a/lib/isc/tests/doh_test.c b/lib/isc/tests/doh_test.c index b4d82023597..75c6539ee4e 100644 --- a/lib/isc/tests/doh_test.c +++ b/lib/isc/tests/doh_test.c @@ -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, diff --git a/lib/isc/tests/netmgr_test.c b/lib/isc/tests/netmgr_test.c index 2a1516bffc3..0a28c8c5da7 100644 --- a/lib/isc/tests/netmgr_test.c +++ b/lib/isc/tests/netmgr_test.c @@ -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)); diff --git a/lib/ns/interfacemgr.c b/lib/ns/interfacemgr.c index 267b77acee7..1ff6bcb859d 100644 --- a/lib/ns/interfacemgr.c +++ b/lib/ns/interfacemgr.c @@ -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));