Merge branch '2721-shutdown-race-in-interfacemgr' into 'main'

Make a local copy of interface address when creating new socket

Closes #2721

See merge request isc-projects/bind9!5094
This commit is contained in:
Ondřej Surý 2021-05-26 07:48:00 +00:00
commit 5d325e952d
20 changed files with 350 additions and 419 deletions

View 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);
}

View 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) {

View 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

View 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);

View 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);

View 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);

View 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;

View 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);

View 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) */

View 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;

View 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'.

View 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);

View 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);

View 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,

View 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);

View 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

View 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) {

View 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,

View 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));

View 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));