Merge branch 'ondrej/use-cds_lfht-for-dns_dispatch' into 'main'

Rewrite the QID lookup table to cds_lfht

See merge request isc-projects/bind9!8304
This commit is contained in:
Ondřej Surý 2023-09-16 06:35:49 +00:00
commit b0b0aac505
24 changed files with 452 additions and 561 deletions

View file

@ -1,3 +1,10 @@
6249. [cleanup] Reduce the number of reserved UDP dispatches
to the number of loops, replace the round-robin
mechanism in dns_dispatchset_t with dispatches
pinned to loops, and use lock-free hash tables
for looking up query IDs and active TCP
connections. [GL !8304]
6248. [func] Add an option "resolver-use-dns64", which enables
application of DNS64 rules to server addresses
when sending recursive queries. This allows

View file

@ -2142,7 +2142,7 @@ run_server(void *arg) {
ns_server_create(mctx, matchview, &sctx);
CHECK(dns_dispatchmgr_create(mctx, netmgr, &dispatchmgr));
CHECK(dns_dispatchmgr_create(mctx, loopmgr, netmgr, &dispatchmgr));
isc_sockaddr_any(&any);
CHECK(dns_dispatch_createudp(dispatchmgr, &any, &dispatch));
CHECK(ns_interfacemgr_create(mctx, sctx, loopmgr, netmgr, dispatchmgr,
@ -2165,7 +2165,7 @@ run_server(void *arg) {
dns_view_initsecroots(view);
CHECK(setup_dnsseckeys(NULL, view));
CHECK(dns_view_createresolver(view, loopmgr, 1, netmgr, 0,
CHECK(dns_view_createresolver(view, loopmgr, netmgr, 0,
tlsctx_client_cache, dispatch, NULL));
isc_stats_create(mctx, &resstats, dns_resstatscounter_max);

View file

@ -50,7 +50,6 @@
EXTERN isc_mem_t *named_g_mctx INIT(NULL);
EXTERN unsigned int named_g_cpus INIT(0);
EXTERN unsigned int named_g_udpdisp INIT(0);
EXTERN isc_loop_t *named_g_mainloop INIT(NULL);
EXTERN isc_loopmgr_t *named_g_loopmgr INIT(NULL);
EXTERN bool named_g_loopmgr_running INIT(false);

View file

@ -949,9 +949,7 @@ parse_command_line(int argc, char *argv[]) {
parse_T_opt(isc_commandline_argument);
break;
case 'U':
named_g_udpdisp = parse_int(isc_commandline_argument,
"number of UDP listeners "
"per interface");
/* Obsolete. No longer in use. Ignore. */
break;
case 'u':
named_g_username = isc_commandline_argument;
@ -1044,16 +1042,6 @@ create_managers(void) {
ISC_LOG_INFO, "found %u CPU%s, using %u worker thread%s",
named_g_cpus_detected, named_g_cpus_detected == 1 ? "" : "s",
named_g_cpus, named_g_cpus == 1 ? "" : "s");
if (named_g_udpdisp == 0) {
named_g_udpdisp = named_g_cpus_detected;
}
if (named_g_udpdisp > named_g_cpus) {
named_g_udpdisp = named_g_cpus;
}
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_SERVER, ISC_LOG_INFO,
"using %u UDP listener%s per interface", named_g_udpdisp,
named_g_udpdisp == 1 ? "" : "s");
isc_managers_create(&named_g_mctx, named_g_cpus, &named_g_loopmgr,
&named_g_netmgr);

View file

@ -1312,8 +1312,8 @@ get_view_querysource_dispatch(const cfg_obj_t **maps, int af,
isc_sockaddr_format(&sa, buf, sizeof(buf));
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_SERVER, ISC_LOG_ERROR,
"could not get query source dispatcher (%s)",
buf);
"could not get query source dispatcher (%s): %s",
buf, isc_result_totext(result));
return (result);
}
@ -4033,7 +4033,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
named_cache_t *nsc;
bool zero_no_soattl;
dns_acl_t *clients = NULL, *mapped = NULL, *excluded = NULL;
unsigned int query_timeout, ndisp;
unsigned int query_timeout;
bool old_rpz_ok = false;
dns_dyndbctx_t *dctx = NULL;
unsigned int resolver_param;
@ -4685,9 +4685,8 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
goto cleanup;
}
ndisp = 4 * ISC_MIN(named_g_udpdisp, MAX_UDP_DISPATCH);
CHECK(dns_view_createresolver(
view, named_g_loopmgr, ndisp, named_g_netmgr, resopts,
view, named_g_loopmgr, named_g_netmgr, resopts,
named_g_server->tlsctx_client_cache, dispatch4, dispatch6));
if (resstats == NULL) {
@ -9898,8 +9897,8 @@ run_server(void *arg) {
dns_zonemgr_create(named_g_mctx, named_g_loopmgr, named_g_netmgr,
&server->zonemgr);
CHECKFATAL(dns_dispatchmgr_create(named_g_mctx, named_g_netmgr,
&named_g_dispatchmgr),
CHECKFATAL(dns_dispatchmgr_create(named_g_mctx, named_g_loopmgr,
named_g_netmgr, &named_g_dispatchmgr),
"creating dispatch manager");
dns_dispatchmgr_setstats(named_g_dispatchmgr, server->resolverstats);
@ -12148,10 +12147,6 @@ named_server_status(named_server_t *server, isc_buffer_t **text) {
snprintf(line, sizeof(line), "worker threads: %u\n", named_g_cpus);
CHECK(putstr(text, line));
snprintf(line, sizeof(line), "UDP listeners per interface: %u\n",
named_g_udpdisp);
CHECK(putstr(text, line));
snprintf(line, sizeof(line), "number of zones: %u (%u automatic)\n",
zonecount, automatic);
CHECK(putstr(text, line));

View file

@ -798,7 +798,7 @@ create_name(const char *str, char *namedata, size_t len, dns_name_t *name) {
}
static void
setup_system(void) {
setup_system(void *arg ISC_ATTR_UNUSED) {
isc_result_t result;
isc_sockaddr_t bind_any, bind_any6;
isc_sockaddrlist_t *nslist;
@ -919,7 +919,7 @@ setup_system(void) {
irs_resconf_destroy(&resconf);
result = dns_dispatchmgr_create(gmctx, netmgr, &dispatchmgr);
result = dns_dispatchmgr_create(gmctx, loopmgr, netmgr, &dispatchmgr);
check_result(result, "dns_dispatchmgr_create");
result = dst_lib_init(gmctx, NULL);
@ -3475,8 +3475,7 @@ main(int argc, char **argv) {
timeoutms = timeout * 1000;
isc_nm_settimeouts(netmgr, timeoutms, timeoutms, timeoutms, timeoutms);
setup_system();
isc_loopmgr_setup(loopmgr, setup_system, NULL);
isc_loopmgr_setup(loopmgr, getinput, NULL);
isc_loopmgr_teardown(loopmgr, shutdown_program, NULL);
isc_loopmgr_run(loopmgr);

View file

@ -275,7 +275,7 @@ main(int argc, char *argv[]) {
RUNCHECK(dst_lib_init(mctx, NULL));
RUNCHECK(dns_dispatchmgr_create(mctx, netmgr, &dispatchmgr));
RUNCHECK(dns_dispatchmgr_create(mctx, loopmgr, netmgr, &dispatchmgr));
RUNCHECK(dns_dispatch_createudp(
dispatchmgr, have_src ? &srcaddr : &bind_any, &dispatchv4));

View file

@ -116,6 +116,12 @@ static unsigned char cookie_secret[33];
static int onfly = 0;
static char hexcookie[81];
static isc_sockaddr_t bind_any;
static isc_nm_t *netmgr = NULL;
static dns_dispatchmgr_t *dispatchmgr = NULL;
static dns_dispatch_t *dispatchvx = NULL;
static dns_view_t *view = NULL;
struct query {
char textname[MXNAME]; /*% Name we're going to be
* looking up */
@ -2069,43 +2075,42 @@ set_source_ports(dns_dispatchmgr_t *manager) {
}
static void
teardown_view(void *arg) {
dns_view_t *view = arg;
teardown(void *arg ISC_ATTR_UNUSED) {
dns_view_detach(&view);
}
static void
teardown_requestmgr(void *arg) {
dns_requestmgr_t *mgr = arg;
dns_requestmgr_shutdown(mgr);
dns_requestmgr_detach(&mgr);
}
static void
teardown_dispatch(void *arg) {
dns_dispatch_t *dispatchv4 = arg;
dns_dispatch_detach(&dispatchv4);
}
static void
teardown_dispatchmgr(void *arg) {
dns_dispatchmgr_t *dispatchmgr = arg;
dns_requestmgr_shutdown(requestmgr);
dns_requestmgr_detach(&requestmgr);
dns_dispatch_detach(&dispatchvx);
dns_dispatchmgr_detach(&dispatchmgr);
}
static void
setup(void *arg ISC_ATTR_UNUSED) {
RUNCHECK(dns_dispatchmgr_create(mctx, loopmgr, netmgr, &dispatchmgr));
set_source_ports(dispatchmgr);
if (have_ipv4) {
isc_sockaddr_any(&bind_any);
} else {
isc_sockaddr_any6(&bind_any);
}
RUNCHECK(dns_dispatch_createudp(
dispatchmgr, have_src ? &srcaddr : &bind_any, &dispatchvx));
RUNCHECK(dns_requestmgr_create(
mctx, loopmgr, dispatchmgr, have_ipv4 ? dispatchvx : NULL,
have_ipv6 ? dispatchvx : NULL, &requestmgr));
RUNCHECK(dns_view_create(mctx, NULL, 0, "_mdig", &view));
}
/*% Main processing routine for mdig */
int
main(int argc, char *argv[]) {
struct query *query = NULL;
isc_result_t result;
isc_sockaddr_t bind_any;
isc_log_t *lctx = NULL;
isc_logconfig_t *lcfg = NULL;
isc_nm_t *netmgr = NULL;
dns_dispatchmgr_t *dispatchmgr = NULL;
dns_dispatch_t *dispatchvx = NULL;
dns_view_t *view = NULL;
unsigned int i;
int ns;
@ -2151,30 +2156,10 @@ main(int argc, char *argv[]) {
fatal("can't choose between IPv4 and IPv6");
}
RUNCHECK(dns_dispatchmgr_create(mctx, netmgr, &dispatchmgr));
set_source_ports(dispatchmgr);
if (have_ipv4) {
isc_sockaddr_any(&bind_any);
} else {
isc_sockaddr_any6(&bind_any);
}
RUNCHECK(dns_dispatch_createudp(
dispatchmgr, have_src ? &srcaddr : &bind_any, &dispatchvx));
RUNCHECK(dns_requestmgr_create(
mctx, loopmgr, dispatchmgr, have_ipv4 ? dispatchvx : NULL,
have_ipv6 ? dispatchvx : NULL, &requestmgr));
RUNCHECK(dns_view_create(mctx, NULL, 0, "_mdig", &view));
query = ISC_LIST_HEAD(queries);
isc_loopmgr_setup(loopmgr, setup, NULL);
isc_loopmgr_setup(loopmgr, sendqueries, query);
isc_loopmgr_teardown(loopmgr, teardown_view, view);
isc_loopmgr_teardown(loopmgr, teardown_requestmgr, requestmgr);
isc_loopmgr_teardown(loopmgr, teardown_dispatch, dispatchvx);
isc_loopmgr_teardown(loopmgr, teardown_dispatchmgr, dispatchmgr);
isc_loopmgr_teardown(loopmgr, teardown, NULL);
/*
* Stall to the start of a new second.

View file

@ -215,9 +215,8 @@ createview(isc_mem_t *mctx, dns_rdataclass_t rdclass, isc_loopmgr_t *loopmgr,
/* Initialize view security roots */
dns_view_initsecroots(view);
CHECK(dns_view_createresolver(view, loopmgr, 1, nm, 0,
tlsctx_client_cache, dispatchv4,
dispatchv6));
CHECK(dns_view_createresolver(view, loopmgr, nm, 0, tlsctx_client_cache,
dispatchv4, dispatchv6));
CHECK(dns_db_create(mctx, "rbt", dns_rootname, dns_dbtype_cache,
rdclass, 0, NULL, &view->cachedb));
@ -253,7 +252,8 @@ dns_client_create(isc_mem_t *mctx, isc_loopmgr_t *loopmgr, isc_nm_t *nm,
.nm = nm,
};
result = dns_dispatchmgr_create(mctx, nm, &client->dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, nm,
&client->dispatchmgr);
if (result != ISC_R_SUCCESS) {
goto cleanup_client;
}

File diff suppressed because it is too large Load diff

View file

@ -69,9 +69,7 @@ ISC_LANG_BEGINDECLS
struct dns_dispatchset {
isc_mem_t *mctx;
dns_dispatch_t **dispatches;
int ndisp;
int cur;
isc_mutex_t lock;
uint32_t ndisp;
};
/*
@ -79,7 +77,8 @@ struct dns_dispatchset {
#define DNS_DISPATCHOPT_FIXEDID 0x00000001U
isc_result_t
dns_dispatchmgr_create(isc_mem_t *mctx, isc_nm_t *nm, dns_dispatchmgr_t **mgrp);
dns_dispatchmgr_create(isc_mem_t *mctx, isc_loopmgr_t *loopmgr, isc_nm_t *nm,
dns_dispatchmgr_t **mgrp);
/*%<
* Creates a new dispatchmgr object, and sets the available ports
* to the default range (1024-65535).
@ -358,7 +357,7 @@ dns_dispatchset_get(dns_dispatchset_t *dset);
isc_result_t
dns_dispatchset_create(isc_mem_t *mctx, dns_dispatch_t *source,
dns_dispatchset_t **dsetp, int n);
dns_dispatchset_t **dsetp, uint32_t n);
/*%<
* Given a valid dispatch 'source', create a dispatch set containing
* 'n' UDP dispatches, with the remainder filled out by clones of the

View file

@ -165,9 +165,8 @@ enum {
#define DNS_QMIN_MAX_NO_DELEGATION 3
isc_result_t
dns_resolver_create(dns_view_t *view, isc_loopmgr_t *loopmgr,
unsigned int ndisp, isc_nm_t *nm, unsigned int options,
isc_tlsctx_cache_t *tlsctx_cache,
dns_resolver_create(dns_view_t *view, isc_loopmgr_t *loopmgr, isc_nm_t *nm,
unsigned int options, isc_tlsctx_cache_t *tlsctx_cache,
dns_dispatch_t *dispatchv4, dns_dispatch_t *dispatchv6,
dns_resolver_t **resp);
@ -183,17 +182,15 @@ dns_resolver_create(dns_view_t *view, isc_loopmgr_t *loopmgr,
*
*\li 'view' is a valid view.
*
*\li 'ndisp' > 0.
*
*\li 'nm' is a valid network manager.
*
*\li 'tlsctx_cache' != NULL.
*
*\li 'dispatchv4' is a dispatch with an IPv4 UDP socket, or is NULL.
* If not NULL, 'ndisp' clones of it will be created by the resolver.
* If not NULL, clones per loop of it will be created by the resolver.
*
*\li 'dispatchv6' is a dispatch with an IPv6 UDP socket, or is NULL.
* If not NULL, 'ndisp' clones of it will be created by the resolver.
* If not NULL, clones per loop of it will be created by the resolver.
*
*\li resp != NULL && *resp == NULL.
*

View file

@ -365,8 +365,8 @@ dns_view_weakdetach(dns_view_t **targetp);
isc_result_t
dns_view_createresolver(dns_view_t *view, isc_loopmgr_t *loopmgr,
unsigned int ndisp, isc_nm_t *netmgr,
unsigned int options, isc_tlsctx_cache_t *tlsctx_cache,
isc_nm_t *netmgr, unsigned int options,
isc_tlsctx_cache_t *tlsctx_cache,
dns_dispatch_t *dispatchv4, dns_dispatch_t *dispatchv6);
/*%<
* Create a resolver and address database for the view.

View file

@ -54,8 +54,8 @@ struct dns_requestmgr {
atomic_bool shuttingdown;
dns_dispatchmgr_t *dispatchmgr;
dns_dispatch_t *dispatchv4;
dns_dispatch_t *dispatchv6;
dns_dispatchset_t *dispatches4;
dns_dispatchset_t *dispatches6;
dns_requestlist_t *requests;
};
@ -150,10 +150,14 @@ dns_requestmgr_create(isc_mem_t *mctx, isc_loopmgr_t *loopmgr,
dns_dispatchmgr_attach(dispatchmgr, &requestmgr->dispatchmgr);
if (dispatchv4 != NULL) {
dns_dispatch_attach(dispatchv4, &requestmgr->dispatchv4);
dns_dispatchset_create(requestmgr->mctx, dispatchv4,
&requestmgr->dispatches4,
isc_loopmgr_nloops(requestmgr->loopmgr));
}
if (dispatchv6 != NULL) {
dns_dispatch_attach(dispatchv6, &requestmgr->dispatchv6);
dns_dispatchset_create(requestmgr->mctx, dispatchv6,
&requestmgr->dispatches6,
isc_loopmgr_nloops(requestmgr->loopmgr));
}
isc_refcount_init(&requestmgr->references, 1);
@ -232,11 +236,11 @@ requestmgr_destroy(dns_requestmgr_t *requestmgr) {
isc_mem_cput(requestmgr->mctx, requestmgr->requests, nloops,
sizeof(requestmgr->requests[0]));
if (requestmgr->dispatchv4 != NULL) {
dns_dispatch_detach(&requestmgr->dispatchv4);
if (requestmgr->dispatches4 != NULL) {
dns_dispatchset_destroy(&requestmgr->dispatches4);
}
if (requestmgr->dispatchv6 != NULL) {
dns_dispatch_detach(&requestmgr->dispatchv6);
if (requestmgr->dispatches6 != NULL) {
dns_dispatchset_destroy(&requestmgr->dispatches6);
}
if (requestmgr->dispatchmgr != NULL) {
dns_dispatchmgr_detach(&requestmgr->dispatchmgr);
@ -360,11 +364,11 @@ udp_dispatch(dns_requestmgr_t *requestmgr, const isc_sockaddr_t *srcaddr,
if (srcaddr == NULL) {
switch (isc_sockaddr_pf(destaddr)) {
case PF_INET:
disp = requestmgr->dispatchv4;
disp = dns_dispatchset_get(requestmgr->dispatches4);
break;
case PF_INET6:
disp = requestmgr->dispatchv6;
disp = dns_dispatchset_get(requestmgr->dispatches6);
break;
default:

View file

@ -9930,9 +9930,8 @@ spillattimer_countdown(void *arg) {
}
isc_result_t
dns_resolver_create(dns_view_t *view, isc_loopmgr_t *loopmgr,
unsigned int ndisp, isc_nm_t *nm, unsigned int options,
isc_tlsctx_cache_t *tlsctx_cache,
dns_resolver_create(dns_view_t *view, isc_loopmgr_t *loopmgr, isc_nm_t *nm,
unsigned int options, isc_tlsctx_cache_t *tlsctx_cache,
dns_dispatch_t *dispatchv4, dns_dispatch_t *dispatchv6,
dns_resolver_t **resp) {
dns_resolver_t *res = NULL;
@ -9942,7 +9941,6 @@ dns_resolver_create(dns_view_t *view, isc_loopmgr_t *loopmgr,
*/
REQUIRE(DNS_VIEW_VALID(view));
REQUIRE(ndisp > 0);
REQUIRE(resp != NULL && *resp == NULL);
REQUIRE(tlsctx_cache != NULL);
REQUIRE(dispatchv4 != NULL || dispatchv6 != NULL);
@ -9989,12 +9987,12 @@ dns_resolver_create(dns_view_t *view, isc_loopmgr_t *loopmgr,
if (dispatchv4 != NULL) {
dns_dispatchset_create(res->mctx, dispatchv4, &res->dispatches4,
ndisp);
isc_loopmgr_nloops(res->loopmgr));
}
if (dispatchv6 != NULL) {
dns_dispatchset_create(res->mctx, dispatchv6, &res->dispatches6,
ndisp);
isc_loopmgr_nloops(res->loopmgr));
}
isc_mutex_init(&res->lock);

View file

@ -589,8 +589,8 @@ dns_view_weakdetach(dns_view_t **viewp) {
isc_result_t
dns_view_createresolver(dns_view_t *view, isc_loopmgr_t *loopmgr,
unsigned int ndisp, isc_nm_t *netmgr,
unsigned int options, isc_tlsctx_cache_t *tlsctx_cache,
isc_nm_t *netmgr, unsigned int options,
isc_tlsctx_cache_t *tlsctx_cache,
dns_dispatch_t *dispatchv4,
dns_dispatch_t *dispatchv6) {
isc_result_t result;
@ -601,7 +601,7 @@ dns_view_createresolver(dns_view_t *view, isc_loopmgr_t *loopmgr,
REQUIRE(view->resolver == NULL);
REQUIRE(view->dispatchmgr != NULL);
result = dns_resolver_create(view, loopmgr, ndisp, netmgr, options,
result = dns_resolver_create(view, loopmgr, netmgr, options,
tlsctx_cache, dispatchv4, dispatchv6,
&view->resolver);
if (result != ISC_R_SUCCESS) {

View file

@ -18,6 +18,7 @@
#include <stdbool.h>
#include <sys/un.h>
#include <isc/hash.h>
#include <isc/lang.h>
#include <isc/net.h>
#include <isc/types.h>

View file

@ -28,11 +28,11 @@ isc_tid_count(void);
* Returns the number of threads.
*/
extern thread_local uint32_t tid_local;
extern thread_local uint32_t isc__tid_local;
static inline uint32_t
isc_tid(void) {
return (tid_local);
return (isc__tid_local);
}
/*%<
* Returns the thread ID of the currently-running loop.

View file

@ -23,7 +23,7 @@
/**
* Private
*/
thread_local uint32_t tid_local = ISC_TID_UNKNOWN;
thread_local uint32_t isc__tid_local = ISC_TID_UNKNOWN;
/*
* Zero is a better nonsense value in this case than ISC_TID_UNKNOWN;
@ -37,8 +37,8 @@ static uint32_t tid_count = 0;
void
isc__tid_init(uint32_t tid) {
REQUIRE(tid_local == ISC_TID_UNKNOWN || tid_local == tid);
tid_local = tid;
REQUIRE(isc__tid_local == ISC_TID_UNKNOWN || isc__tid_local == tid);
isc__tid_local = tid;
}
void

View file

@ -65,9 +65,6 @@
#define NS_INTERFACEFLAG_ANYADDR 0x01U /*%< bound to "any" address */
#define NS_INTERFACEFLAG_LISTENING 0x02U /*%< listening */
#define MAX_UDP_DISPATCH \
128 /*%< Maximum number of UDP dispatchers \
* to start per interface */
/*% The nameserver interface structure */
struct ns_interface {
unsigned int magic; /*%< Magic number. */

View file

@ -245,7 +245,8 @@ ISC_LOOP_TEST_IMPL(dispatchset_create) {
UNUSED(arg);
result = dns_dispatchmgr_create(mctx, connect_nm, &dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, connect_nm,
&dispatchmgr);
assert_int_equal(result, ISC_R_SUCCESS);
result = make_dispatchset(1, &dset);
@ -261,15 +262,17 @@ ISC_LOOP_TEST_IMPL(dispatchset_create) {
isc_loopmgr_shutdown(loopmgr);
}
/* test dispatch set round-robin */
/* test dispatch set per-loop dispatch */
ISC_LOOP_TEST_IMPL(dispatchset_get) {
isc_result_t result;
dns_dispatchset_t *dset = NULL;
dns_dispatch_t *d1, *d2, *d3, *d4, *d5;
uint32_t tid_saved;
UNUSED(arg);
result = dns_dispatchmgr_create(mctx, connect_nm, &dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, connect_nm,
&dispatchmgr);
assert_int_equal(result, ISC_R_SUCCESS);
result = make_dispatchset(1, &dset);
@ -291,10 +294,21 @@ ISC_LOOP_TEST_IMPL(dispatchset_get) {
result = make_dispatchset(4, &dset);
assert_int_equal(result, ISC_R_SUCCESS);
/*
* Temporarily modify and then restore the current thread's
* ID value, in order to confirm that different threads get
* different dispatch sets but the same thread gets the same
* one.
*/
tid_saved = isc__tid_local;
d1 = dns_dispatchset_get(dset);
isc__tid_local++;
d2 = dns_dispatchset_get(dset);
isc__tid_local++;
d3 = dns_dispatchset_get(dset);
isc__tid_local++;
d4 = dns_dispatchset_get(dset);
isc__tid_local = tid_saved;
d5 = dns_dispatchset_get(dset);
assert_ptr_equal(d1, d5);
@ -451,7 +465,8 @@ ISC_LOOP_TEST_IMPL(dispatch_timeout_tcp_connect) {
testdata.region.base = testdata.message;
testdata.region.length = sizeof(testdata.message);
result = dns_dispatchmgr_create(mctx, connect_nm, &dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, connect_nm,
&dispatchmgr);
assert_int_equal(result, ISC_R_SUCCESS);
result = dns_dispatch_createtcp(dispatchmgr, &tcp_connect_addr,
@ -496,7 +511,8 @@ ISC_LOOP_TEST_IMPL(dispatch_timeout_tcp_response) {
isc_loop_teardown(isc_loop_main(loopmgr), stop_listening, sock);
/* Client */
result = dns_dispatchmgr_create(mctx, connect_nm, &dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, connect_nm,
&dispatchmgr);
assert_int_equal(result, ISC_R_SUCCESS);
result = dns_dispatch_createtcp(dispatchmgr, &tcp_connect_addr,
@ -530,7 +546,8 @@ ISC_LOOP_TEST_IMPL(dispatch_tcp_response) {
testdata.region.base = testdata.message;
testdata.region.length = sizeof(testdata.message);
result = dns_dispatchmgr_create(mctx, connect_nm, &dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, connect_nm,
&dispatchmgr);
assert_int_equal(result, ISC_R_SUCCESS);
result = dns_dispatch_createtcp(dispatchmgr, &tcp_connect_addr,
@ -567,7 +584,8 @@ ISC_LOOP_TEST_IMPL(dispatch_tls_response) {
testdata.region.base = testdata.message;
testdata.region.length = sizeof(testdata.message);
result = dns_dispatchmgr_create(mctx, connect_nm, &dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, connect_nm,
&dispatchmgr);
assert_int_equal(result, ISC_R_SUCCESS);
result = dns_dispatch_createtcp(dispatchmgr, &tls_connect_addr,
@ -594,7 +612,8 @@ ISC_LOOP_TEST_IMPL(dispatch_timeout_udp_response) {
uint16_t id;
/* Server */
result = dns_dispatchmgr_create(mctx, connect_nm, &dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, connect_nm,
&dispatchmgr);
assert_int_equal(result, ISC_R_SUCCESS);
result = isc_nm_listenudp(netmgr, ISC_NM_LISTEN_ONE, &udp_server_addr,
@ -636,7 +655,8 @@ ISC_LOOP_TEST_IMPL(dispatch_getnext) {
testdata.region.base = testdata.message;
testdata.region.length = sizeof(testdata.message);
result = dns_dispatchmgr_create(mctx, connect_nm, &dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, connect_nm,
&dispatchmgr);
assert_int_equal(result, ISC_R_SUCCESS);
result = dns_dispatch_createudp(dispatchmgr, &udp_connect_addr,

View file

@ -76,7 +76,7 @@ mkres(dns_resolver_t **resolverp) {
isc_result_t result;
isc_tlsctx_cache_create(mctx, &tlsctx_cache);
result = dns_resolver_create(view, loopmgr, 1, netmgr, 0, tlsctx_cache,
result = dns_resolver_create(view, loopmgr, netmgr, 0, tlsctx_cache,
dispatch, NULL, resolverp);
assert_int_equal(result, ISC_R_SUCCESS);
}

View file

@ -68,7 +68,8 @@ dns_test_makeview(const char *name, bool with_dispatchmgr, bool with_cache,
dns_dispatchmgr_t *dispatchmgr = NULL;
if (with_dispatchmgr) {
result = dns_dispatchmgr_create(mctx, netmgr, &dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, netmgr,
&dispatchmgr);
if (result != ISC_R_SUCCESS) {
return (result);
}

View file

@ -85,7 +85,7 @@ setup_server(void **state) {
ns_server_create(mctx, matchview, &sctx);
result = dns_dispatchmgr_create(mctx, netmgr, &dispatchmgr);
result = dns_dispatchmgr_create(mctx, loopmgr, netmgr, &dispatchmgr);
if (result != ISC_R_SUCCESS) {
goto cleanup;
}