if (oldest != NULL) {
ISC_LIST_UNLINK(client->manager->recursing, oldest, rlink);
ns_query_cancel(oldest);
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_reclimitdropped);
}
UNLOCK(&client->manager->reclock);
if (client->ede == NULL) {
return;
}
- isc_mem_put(client->mctx, client->ede->value, client->ede->length);
- isc_mem_put(client->mctx, client->ede, sizeof(dns_ednsopt_t));
+ isc_mem_put(client->manager->mctx, client->ede->value,
+ client->ede->length);
+ isc_mem_put(client->manager->mctx, client->ede, sizeof(dns_ednsopt_t));
client->ede = NULL;
}
}
}
- client->ede = isc_mem_get(client->mctx, sizeof(dns_ednsopt_t));
+ client->ede = isc_mem_get(client->manager->mctx, sizeof(dns_ednsopt_t));
client->ede->code = DNS_OPT_EDE;
client->ede->length = len;
- client->ede->value = isc_mem_get(client->mctx, len);
+ client->ede->value = isc_mem_get(client->manager->mctx, len);
memmove(client->ede->value, ede, len);
};
if (client->view != NULL) {
#ifdef ENABLE_AFL
- if (client->sctx->fuzztype == isc_fuzz_resolver) {
+ if (client->manager->sctx->fuzztype == isc_fuzz_resolver) {
dns_cache_clean(client->view->cache, INT_MAX);
dns_adb_flush(client->view->adb);
}
if (client->recursionquota != NULL) {
isc_quota_detach(&client->recursionquota);
if (client->query.prefetch == NULL) {
- ns_stats_decrement(client->sctx->nsstats,
+ ns_stats_decrement(client->manager->sctx->nsstats,
ns_statscounter_recursclients);
}
}
*/
client->attributes = 0;
#ifdef ENABLE_AFL
- if (client->sctx->fuzznotify != NULL &&
- (client->sctx->fuzztype == isc_fuzz_client ||
- client->sctx->fuzztype == isc_fuzz_tcpclient ||
- client->sctx->fuzztype == isc_fuzz_resolver))
+ if (client->manager->sctx->fuzznotify != NULL &&
+ (client->manager->sctx->fuzztype == isc_fuzz_client ||
+ client->manager->sctx->fuzztype == isc_fuzz_tcpclient ||
+ client->manager->sctx->fuzztype == isc_fuzz_resolver))
{
- client->sctx->fuzznotify();
+ client->manager->sctx->fuzznotify();
}
#endif /* ENABLE_AFL */
}
if (TCP_CLIENT(client)) {
INSIST(client->tcpbuf == NULL);
- client->tcpbuf = isc_mem_get(client->mctx,
+ client->tcpbuf = isc_mem_get(client->manager->mctx,
NS_CLIENT_TCP_BUFFER_SIZE);
data = client->tcpbuf;
isc_buffer_init(buffer, data, NS_CLIENT_TCP_BUFFER_SIZE);
return;
done:
if (client->tcpbuf != NULL) {
- isc_mem_put(client->mctx, client->tcpbuf,
+ isc_mem_put(client->manager->mctx, client->tcpbuf,
NS_CLIENT_TCP_BUFFER_SIZE);
client->tcpbuf = NULL;
}
client_allocsendbuf(client, &buffer, &data);
- result = dns_compress_init(&cctx, -1, client->mctx);
+ result = dns_compress_init(&cctx, -1, client->manager->mctx);
if (result != ISC_R_SUCCESS) {
goto cleanup;
}
switch (isc_sockaddr_pf(&client->peeraddr)) {
case AF_INET:
- isc_stats_increment(client->sctx->tcpoutstats4,
+ isc_stats_increment(client->manager->sctx->tcpoutstats4,
ISC_MIN((int)respsize / 16, 256));
break;
case AF_INET6:
- isc_stats_increment(client->sctx->tcpoutstats6,
+ isc_stats_increment(client->manager->sctx->tcpoutstats6,
ISC_MIN((int)respsize / 16, 256));
break;
default:
switch (isc_sockaddr_pf(&client->peeraddr)) {
case AF_INET:
- isc_stats_increment(client->sctx->udpoutstats4,
+ isc_stats_increment(client->manager->sctx->udpoutstats4,
ISC_MIN((int)respsize / 16, 256));
break;
case AF_INET6:
- isc_stats_increment(client->sctx->udpoutstats6,
+ isc_stats_increment(client->manager->sctx->udpoutstats6,
ISC_MIN((int)respsize / 16, 256));
break;
default:
}
/* update statistics (XXXJT: is it okay to access message->xxxkey?) */
- ns_stats_increment(client->sctx->nsstats, ns_statscounter_response);
+ ns_stats_increment(client->manager->sctx->nsstats,
+ ns_statscounter_response);
- dns_rcodestats_increment(client->sctx->rcodestats,
+ dns_rcodestats_increment(client->manager->sctx->rcodestats,
client->message->rcode);
if (opt_included) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_edns0out);
}
if (client->message->tsigkey != NULL) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_tsigout);
}
if (client->message->sig0key != NULL) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_sig0out);
}
if ((client->message->flags & DNS_MESSAGEFLAG_TC) != 0) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_truncatedresp);
}
cleanup:
if (client->tcpbuf != NULL) {
- isc_mem_put(client->mctx, client->tcpbuf,
+ isc_mem_put(client->manager->mctx, client->tcpbuf,
NS_CLIENT_TCP_BUFFER_SIZE);
client->tcpbuf = NULL;
}
dns_rrl_result_t rrl_result;
int loglevel;
- if ((client->sctx->options & NS_SERVER_LOGQUERIES) != 0) {
+ if ((client->manager->sctx->options & NS_SERVER_LOGQUERIES) !=
+ 0) {
loglevel = DNS_RRL_LOG_DROP;
} else {
loglevel = ISC_LOG_DEBUG(1);
* so don't try to slip any error responses.
*/
if (!client->view->rrl->log_only) {
- ns_stats_increment(client->sctx->nsstats,
- ns_statscounter_ratedropped);
- ns_stats_increment(client->sctx->nsstats,
- ns_statscounter_dropped);
+ ns_stats_increment(
+ client->manager->sctx->nsstats,
+ ns_statscounter_ratedropped);
+ ns_stats_increment(
+ client->manager->sctx->nsstats,
+ ns_statscounter_dropped);
ns_client_drop(client, DNS_R_DROP);
return;
}
if (resolver != NULL) {
udpsize = dns_resolver_getudpsize(resolver);
} else {
- udpsize = client->sctx->udpsize;
+ udpsize = client->manager->sctx->udpsize;
}
flags = client->extflags & DNS_MESSAGEEXTFLAG_REPLYPRESERVE;
/* Set EDNS options if applicable */
if (WANTNSID(client)) {
- if (client->sctx->server_id != NULL) {
- nsidp = client->sctx->server_id;
- } else if (client->sctx->gethostname != NULL) {
- result = client->sctx->gethostname(nsid, sizeof(nsid));
+ if (client->manager->sctx->server_id != NULL) {
+ nsidp = client->manager->sctx->server_id;
+ } else if (client->manager->sctx->gethostname != NULL) {
+ result = client->manager->sctx->gethostname(
+ nsid, sizeof(nsid));
if (result != ISC_R_SUCCESS) {
goto no_nsid;
}
isc_random_buf(&nonce, sizeof(nonce));
- compute_cookie(client, now, nonce, client->sctx->secret, &buf);
+ compute_cookie(client, now, nonce,
+ client->manager->sctx->secret, &buf);
INSIST(count < DNS_EDNSOPTIONS);
ednsopts[count].code = DNS_OPT_COOKIE;
"digest "
"buffer.");
- switch (client->sctx->cookiealg) {
+ switch (client->manager->sctx->cookiealg) {
case ns_cookiealg_siphash24: {
unsigned char input[16 + 16] ISC_NONSTRING = { 0 };
size_t inputlen = 0;
for (i = 0; i < 8; i++) {
input[i + 8] = digest[i] ^ digest[i + 8];
}
- isc_aes128_crypt(client->sctx->secret, input + 8,
- digest);
+ isc_aes128_crypt(client->manager->sctx->secret,
+ input + 8, digest);
break;
default:
UNREACHABLE();
/*
* If we have already seen a cookie option skip this cookie option.
*/
- if ((!client->sctx->answercookie) ||
+ if ((!client->manager->sctx->answercookie) ||
(client->attributes & NS_CLIENTATTR_WANTCOOKIE) != 0)
{
isc_buffer_forward(buf, (unsigned int)optlen);
client->attributes |= NS_CLIENTATTR_WANTCOOKIE;
- ns_stats_increment(client->sctx->nsstats, ns_statscounter_cookiein);
+ ns_stats_increment(client->manager->sctx->nsstats,
+ ns_statscounter_cookiein);
if (optlen != COOKIE_SIZE) {
/*
isc_buffer_forward(buf, (unsigned int)optlen);
if (optlen == 8U) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_cookienew);
} else {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_cookiebadsize);
}
return;
if (isc_serial_gt(when, (now + 300)) || /* In the future. */
isc_serial_lt(when, (now - 3600)))
{ /* In the past. */
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_cookiebadtime);
return;
}
isc_buffer_init(&db, dbuf, sizeof(dbuf));
- compute_cookie(client, when, nonce, client->sctx->secret, &db);
+ compute_cookie(client, when, nonce, client->manager->sctx->secret, &db);
if (isc_safe_memequal(old, dbuf, COOKIE_SIZE)) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_cookiematch);
client->attributes |= NS_CLIENTATTR_HAVECOOKIE;
return;
}
- for (altsecret = ISC_LIST_HEAD(client->sctx->altsecrets);
+ for (altsecret = ISC_LIST_HEAD(client->manager->sctx->altsecrets);
altsecret != NULL; altsecret = ISC_LIST_NEXT(altsecret, link))
{
isc_buffer_init(&db, dbuf, sizeof(dbuf));
compute_cookie(client, when, nonce, altsecret->secret, &db);
if (isc_safe_memequal(old, dbuf, COOKIE_SIZE)) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_cookiematch);
client->attributes |= NS_CLIENTATTR_HAVECOOKIE;
return;
}
}
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_cookienomatch);
}
return (ISC_R_SUCCESS);
}
- client->keytag = isc_mem_get(client->mctx, optlen);
+ client->keytag = isc_mem_get(client->manager->mctx, optlen);
{
client->keytag_len = (uint16_t)optlen;
memmove(client->keytag, isc_buffer_current(buf), optlen);
*/
client->ednsversion = (opt->ttl & 0x00FF0000) >> 16;
if (client->ednsversion > DNS_EDNS_VERSION) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_badednsver);
result = ns_client_addopt(client, client->message,
&client->opt);
case DNS_OPT_NSID:
if (!WANTNSID(client)) {
ns_stats_increment(
- client->sctx->nsstats,
+ client->manager->sctx->nsstats,
ns_statscounter_nsidopt);
}
client->attributes |= NS_CLIENTATTR_WANTNSID;
case DNS_OPT_EXPIRE:
if (!WANTEXPIRE(client)) {
ns_stats_increment(
- client->sctx->nsstats,
+ client->manager->sctx->nsstats,
ns_statscounter_expireopt);
}
client->attributes |= NS_CLIENTATTR_WANTEXPIRE;
ns_client_error(client, result);
return (result);
}
- ns_stats_increment(client->sctx->nsstats,
- ns_statscounter_ecsopt);
+ ns_stats_increment(
+ client->manager->sctx->nsstats,
+ ns_statscounter_ecsopt);
break;
case DNS_OPT_TCP_KEEPALIVE:
if (!USEKEEPALIVE(client)) {
ns_stats_increment(
- client->sctx->nsstats,
+ client->manager->sctx->nsstats,
ns_statscounter_keepaliveopt);
}
client->attributes |=
break;
case DNS_OPT_PAD:
client->attributes |= NS_CLIENTATTR_WANTPAD;
- ns_stats_increment(client->sctx->nsstats,
- ns_statscounter_padopt);
+ ns_stats_increment(
+ client->manager->sctx->nsstats,
+ ns_statscounter_padopt);
isc_buffer_forward(&optbuf, optlen);
break;
case DNS_OPT_KEY_TAG:
ns_client_error(client, result);
return (result);
}
- ns_stats_increment(client->sctx->nsstats,
- ns_statscounter_keytagopt);
+ ns_stats_increment(
+ client->manager->sctx->nsstats,
+ ns_statscounter_keytagopt);
break;
default:
- ns_stats_increment(client->sctx->nsstats,
- ns_statscounter_otheropt);
+ ns_stats_increment(
+ client->manager->sctx->nsstats,
+ ns_statscounter_otheropt);
isc_buffer_forward(&optbuf, optlen);
break;
}
}
}
- ns_stats_increment(client->sctx->nsstats, ns_statscounter_edns0in);
+ ns_stats_increment(client->manager->sctx->nsstats,
+ ns_statscounter_edns0in);
client->attributes |= NS_CLIENTATTR_WANTOPT;
return (result);
ns_client_endrequest(client);
if (client->tcpbuf != NULL) {
- isc_mem_put(client->mctx, client->tcpbuf,
+ isc_mem_put(client->manager->mctx, client->tcpbuf,
NS_CLIENT_TCP_BUFFER_SIZE);
}
if (client->keytag != NULL) {
- isc_mem_put(client->mctx, client->keytag, client->keytag_len);
+ isc_mem_put(client->manager->mctx, client->keytag,
+ client->keytag_len);
client->keytag_len = 0;
}
client->magic = 0;
client->shuttingdown = true;
- isc_mem_put(client->mctx, client->sendbuf, NS_CLIENT_SEND_BUFFER_SIZE);
+ isc_mem_put(client->manager->mctx, client->sendbuf,
+ NS_CLIENT_SEND_BUFFER_SIZE);
if (client->opt != NULL) {
INSIST(dns_rdataset_isassociated(client->opt));
dns_rdataset_disassociate(client->opt);
clientmgr_detach(&client->manager);
}
- /*
- * Detaching the task must be done after unlinking from
- * the manager's lists because the manager accesses
- * client->task.
- */
- if (client->task != NULL) {
- isc_task_detach(&client->task);
- }
-
/*
* Destroy the fetchlock mutex that was created in
* ns_query_init().
*/
isc_mutex_destroy(&client->query.fetchlock);
-
- if (client->sctx != NULL) {
- ns_server_detach(&client->sctx);
- }
-
- isc_mem_detach(&client->mctx);
}
/*
#endif /* if NS_CLIENT_DROPPORT */
env = client->manager->aclenv;
- if (client->sctx->blackholeacl != NULL &&
- (dns_acl_match(&netaddr, NULL, client->sctx->blackholeacl, env,
- &match, NULL) == ISC_R_SUCCESS) &&
+ if (client->manager->sctx->blackholeacl != NULL &&
+ (dns_acl_match(&netaddr, NULL, client->manager->sctx->blackholeacl,
+ env, &match, NULL) == ISC_R_SUCCESS) &&
match > 0)
{
ns_client_log(client, DNS_LOGCATEGORY_SECURITY,
* Update some statistics counters. Don't count responses.
*/
if (isc_sockaddr_pf(&client->peeraddr) == PF_INET) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_requestv4);
} else {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_requestv6);
}
if (TCP_CLIENT(client)) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_requesttcp);
switch (isc_sockaddr_pf(&client->peeraddr)) {
case AF_INET:
- isc_stats_increment(client->sctx->tcpinstats4,
+ isc_stats_increment(client->manager->sctx->tcpinstats4,
ISC_MIN((int)reqsize / 16, 18));
break;
case AF_INET6:
- isc_stats_increment(client->sctx->tcpinstats6,
+ isc_stats_increment(client->manager->sctx->tcpinstats6,
ISC_MIN((int)reqsize / 16, 18));
break;
default:
} else {
switch (isc_sockaddr_pf(&client->peeraddr)) {
case AF_INET:
- isc_stats_increment(client->sctx->udpinstats4,
+ isc_stats_increment(client->manager->sctx->udpinstats4,
ISC_MIN((int)reqsize / 16, 18));
break;
case AF_INET6:
- isc_stats_increment(client->sctx->udpinstats6,
+ isc_stats_increment(client->manager->sctx->udpinstats6,
ISC_MIN((int)reqsize / 16, 18));
break;
default:
return;
}
- dns_opcodestats_increment(client->sctx->opcodestats,
+ dns_opcodestats_increment(client->manager->sctx->opcodestats,
client->message->opcode);
switch (client->message->opcode) {
case dns_opcode_query:
/*
* Deal with EDNS.
*/
- if ((client->sctx->options & NS_SERVER_NOEDNS) != 0) {
+ if ((client->manager->sctx->options & NS_SERVER_NOEDNS) != 0) {
opt = NULL;
} else {
opt = dns_message_getopt(client->message);
* Are returning FORMERR to all EDNS queries?
* Simulate a STD13 compliant server.
*/
- if ((client->sctx->options & NS_SERVER_EDNSFORMERR) != 0) {
+ if ((client->manager->sctx->options & NS_SERVER_EDNSFORMERR) !=
+ 0) {
ns_client_error(client, DNS_R_FORMERR);
return;
}
/*
* Are returning NOTIMP to all EDNS queries?
*/
- if ((client->sctx->options & NS_SERVER_EDNSNOTIMP) != 0) {
+ if ((client->manager->sctx->options & NS_SERVER_EDNSNOTIMP) !=
+ 0) {
ns_client_error(client, DNS_R_NOTIMP);
return;
}
/*
* Are returning REFUSED to all EDNS queries?
*/
- if ((client->sctx->options & NS_SERVER_EDNSREFUSED) != 0) {
+ if ((client->manager->sctx->options & NS_SERVER_EDNSREFUSED) !=
+ 0) {
ns_client_error(client, DNS_R_REFUSED);
return;
}
/*
* Are we dropping all EDNS queries?
*/
- if ((client->sctx->options & NS_SERVER_DROPEDNS) != 0) {
+ if ((client->manager->sctx->options & NS_SERVER_DROPEDNS) != 0)
+ {
ns_client_drop(client, ISC_R_SUCCESS);
return;
}
isc_sockaddr_fromnetaddr(&client->destsockaddr, &client->destaddr, 0);
- result = client->sctx->matchingview(&netaddr, &client->destaddr,
- client->message, env, &sigresult,
- &client->view);
+ result = client->manager->sctx->matchingview(
+ &netaddr, &client->destaddr, client->message, env, &sigresult,
+ &client->view);
if (result != ISC_R_SUCCESS) {
char classname[DNS_RDATACLASS_FORMATSIZE];
if (result != ISC_R_NOTFOUND) {
signame = NULL;
if (dns_message_gettsig(client->message, &signame) != NULL) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_tsigin);
} else {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_sig0in);
}
}
isc_result_t tresult;
/* There is a signature, but it is bad. */
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_invalidsig);
signame = NULL;
if (dns_message_gettsig(client->message, &signame) != NULL) {
REQUIRE(client != NULL);
REQUIRE(mgr->tid == isc_nm_tid());
- *client = (ns_client_t){ .magic = 0, .tid = mgr->tid };
+ *client = (ns_client_t){ .magic = 0 };
- isc_mem_attach(mgr->mctx, &client->mctx);
clientmgr_attach(mgr, &client->manager);
- ns_server_attach(mgr->sctx, &client->sctx);
- isc_task_attach(mgr->task, &client->task);
- dns_message_create(client->mctx, DNS_MESSAGE_INTENTPARSE,
- &client->message);
+ dns_message_create(client->manager->mctx,
+ DNS_MESSAGE_INTENTPARSE, &client->message);
- client->sendbuf = isc_mem_get(client->mctx,
+ client->sendbuf = isc_mem_get(client->manager->mctx,
NS_CLIENT_SEND_BUFFER_SIZE);
/*
* Set magic earlier than usual because ns_query_init()
}
} else {
REQUIRE(NS_CLIENT_VALID(client));
- REQUIRE(client->tid == isc_nm_tid());
-
- ns_clientmgr_t *oldmgr = client->manager;
- ns_server_t *sctx = client->sctx;
- isc_task_t *task = client->task;
- unsigned char *sendbuf = client->sendbuf;
- dns_message_t *message = client->message;
- isc_mem_t *oldmctx = client->mctx;
- ns_query_t query = client->query;
- int tid = client->tid;
+ REQUIRE(client->manager->tid == isc_nm_tid());
/*
* Retain these values from the existing client, but
* zero every thing else.
*/
- *client = (ns_client_t){ .magic = 0,
- .mctx = oldmctx,
- .manager = oldmgr,
- .sctx = sctx,
- .task = task,
- .sendbuf = sendbuf,
- .message = message,
- .query = query,
- .tid = tid };
+ *client = (ns_client_t){
+ .magic = 0,
+ .manager = client->manager,
+ .sendbuf = client->sendbuf,
+ .message = client->message,
+ .query = client->query,
+ };
}
client->query.attributes &= ~NS_QUERYATTR_ANSWERED;
cleanup:
if (client->sendbuf != NULL) {
- isc_mem_put(client->mctx, client->sendbuf,
+ isc_mem_put(client->manager->mctx, client->sendbuf,
NS_CLIENT_SEND_BUFFER_SIZE);
}
dns_message_detach(&client->message);
}
- if (client->task != NULL) {
- isc_task_detach(&client->task);
- }
-
if (client->manager != NULL) {
clientmgr_detach(&client->manager);
}
- isc_mem_detach(&client->mctx);
- if (client->sctx != NULL) {
- ns_server_detach(&client->sctx);
- }
return (result);
}
*/
do {
- buf = isc_mem_get(client->mctx, len);
+ buf = isc_mem_get(client->manager->mctx, len);
isc_buffer_init(&buffer, buf, len);
result = dns_message_totext(
client->message, &dns_master_style_debug, 0, &buffer);
if (result == ISC_R_NOSPACE) {
- isc_mem_put(client->mctx, buf, len);
+ isc_mem_put(client->manager->mctx, buf, len);
len += 1024;
} else if (result == ISC_R_SUCCESS) {
ns_client_log(client, NS_LOGCATEGORY_CLIENT,
} while (result == ISC_R_NOSPACE);
if (buf != NULL) {
- isc_mem_put(client->mctx, buf, len);
+ isc_mem_put(client->manager->mctx, buf, len);
}
}
CTRACE("ns_client_newnamebuf");
- isc_buffer_allocate(client->mctx, &dbuf, 1024);
+ isc_buffer_allocate(client->manager->mctx, &dbuf, 1024);
ISC_LIST_APPEND(client->query.namebufs, dbuf, link);
CTRACE("ns_client_newnamebuf: done");
ns_dbversion_t *dbversion = NULL;
for (i = 0; i < n; i++) {
- dbversion = isc_mem_get(client->mctx, sizeof(*dbversion));
+ dbversion = isc_mem_get(client->manager->mctx,
+ sizeof(*dbversion));
*dbversion = (ns_dbversion_t){ 0 };
ISC_LIST_INITANDAPPEND(client->query.freeversions, dbversion,
link);
isc_stats_t *zonestats;
dns_stats_t *querystats = NULL;
- ns_stats_increment(client->sctx->nsstats, counter);
+ ns_stats_increment(client->manager->sctx->nsstats, counter);
if (zone == NULL) {
return;
break;
}
- if ((client->sctx->options & NS_SERVER_LOGQUERIES) != 0) {
+ if ((client->manager->sctx->options & NS_SERVER_LOGQUERIES) != 0) {
loglevel = ISC_LOG_INFO;
}
if (i > 3 || everything) {
ISC_LIST_UNLINK(client->query.freeversions, dbversion,
link);
- isc_mem_put(client->mctx, dbversion,
+ isc_mem_put(client->manager->mctx, dbversion,
sizeof(*dbversion));
}
}
ns_client_putrdataset(client, &client->query.dns64_sigaaaa);
}
if (client->query.dns64_aaaaok != NULL) {
- isc_mem_put(client->mctx, client->query.dns64_aaaaok,
+ isc_mem_put(client->manager->mctx, client->query.dns64_aaaaok,
client->query.dns64_aaaaoklen * sizeof(bool));
client->query.dns64_aaaaok = NULL;
client->query.dns64_aaaaoklen = 0;
rpz_st_clear(client);
if (everything) {
INSIST(client->query.rpz_st->rpsdb == NULL);
- isc_mem_put(client->mctx, client->query.rpz_st,
+ isc_mem_put(client->manager->mctx, client->query.rpz_st,
sizeof(*client->query.rpz_st));
client->query.rpz_st = NULL;
}
* Count both enabled and disabled rewrites for each zone.
*/
if (!disabled && policy != DNS_RPZ_POLICY_PASSTHRU) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_rpz_rewrites);
}
if (p_zone != NULL) {
isc_buffer_init(&b, rdata.data, rdata.length);
isc_buffer_add(&b, rdata.length);
result = dst_key_fromdns(&rrsig->signer, rdata.rdclass, &b,
- client->mctx, keyp);
+ client->manager->mctx, keyp);
if (result != ISC_R_SUCCESS) {
continue;
}
again:
result = dns_dnssec_verify(name, rdataset, key, ignore,
- client->view->maxbits, client->mctx, rdata,
- NULL);
+ client->view->maxbits, client->manager->mctx,
+ rdata, NULL);
if (result == DNS_R_SIGEXPIRED && client->view->acceptexpired) {
ignore = true;
goto again;
REQUIRE(event->ev_type == DNS_EVENT_FETCHDONE);
client = devent->ev_arg;
REQUIRE(NS_CLIENT_VALID(client));
- REQUIRE(task == client->task);
+ REQUIRE(task == client->manager->task);
CTRACE(ISC_LOG_DEBUG(3), "prefetch_done");
*/
if (client->recursionquota != NULL) {
isc_quota_detach(&client->recursionquota);
- ns_stats_decrement(client->sctx->nsstats,
+ ns_stats_decrement(client->manager->sctx->nsstats,
ns_statscounter_recursclients);
}
}
if (client->recursionquota == NULL) {
- result = isc_quota_attach(&client->sctx->recursionquota,
- &client->recursionquota);
+ result =
+ isc_quota_attach(&client->manager->sctx->recursionquota,
+ &client->recursionquota);
switch (result) {
case ISC_R_SUCCESS:
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_recursclients);
break;
case ISC_R_SOFTQUOTA:
options = client->query.fetchoptions | DNS_FETCHOPT_PREFETCH;
result = dns_resolver_createfetch(
client->view->resolver, qname, rdataset->type, NULL, NULL, NULL,
- peeraddr, client->message->id, options, 0, NULL, client->task,
- prefetch_done, client, tmprdataset, NULL,
+ peeraddr, client->message->id, options, 0, NULL,
+ client->manager->task, prefetch_done, client, tmprdataset, NULL,
&client->query.prefetch);
if (result != ISC_R_SUCCESS) {
ns_client_putrdataset(client, &tmprdataset);
}
dns_rdataset_clearprefetch(rdataset);
- ns_stats_increment(client->sctx->nsstats, ns_statscounter_prefetch);
+ ns_stats_increment(client->manager->sctx->nsstats,
+ ns_statscounter_prefetch);
}
static void
}
if (client->recursionquota == NULL) {
- result = isc_quota_attach(&client->sctx->recursionquota,
- &client->recursionquota);
+ result =
+ isc_quota_attach(&client->manager->sctx->recursionquota,
+ &client->recursionquota);
switch (result) {
case ISC_R_SUCCESS:
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_recursclients);
break;
case ISC_R_SOFTQUOTA:
isc_nmhandle_attach(client->handle, &client->prefetchhandle);
result = dns_resolver_createfetch(
client->view->resolver, qname, type, NULL, NULL, NULL, peeraddr,
- client->message->id, options, 0, NULL, client->task,
+ client->message->id, options, 0, NULL, client->manager->task,
prefetch_done, client, tmprdataset, NULL,
&client->query.prefetch);
if (result != ISC_R_SUCCESS) {
#endif /* ifndef USE_DNSRPS */
if (st == NULL) {
- st = isc_mem_get(client->mctx, sizeof(*st));
+ st = isc_mem_get(client->manager->mctx, sizeof(*st));
st->state = 0;
st->rpsdb = NULL;
}
}
result = dns_dnsrps_rewrite_init(
&emsg, st, rpzs, client->query.qname,
- client->mctx, RECURSIONOK(client));
+ client->manager->mctx, RECURSIONOK(client));
if (result != ISC_R_SUCCESS) {
rpz_log_fail(client, DNS_RPZ_ERROR_LEVEL, NULL,
DNS_RPZ_TYPE_QNAME, emsg.c,
}
count = dns_rdataset_count(rdataset);
- aaaaok = isc_mem_get(client->mctx, sizeof(bool) * count);
+ aaaaok = isc_mem_get(client->manager->mctx, sizeof(bool) * count);
isc_netaddr_fromsockaddr(&netaddr, &client->peeraddr);
if (dns_dns64_aaaaok(dns64, &netaddr, client->signer, env, flags,
}
}
if (aaaaok != NULL) {
- isc_mem_put(client->mctx, aaaaok, sizeof(bool) * count);
+ isc_mem_put(client->manager->mctx, aaaaok,
+ sizeof(bool) * count);
}
return (true);
}
if (aaaaok != NULL) {
- isc_mem_put(client->mctx, aaaaok, sizeof(bool) * count);
+ isc_mem_put(client->manager->mctx, aaaaok,
+ sizeof(bool) * count);
}
return (false);
}
client = devent->ev_arg;
REQUIRE(NS_CLIENT_VALID(client));
- REQUIRE(task == client->task);
+ REQUIRE(task == client->manager->task);
REQUIRE(RECURSING(client));
CTRACE(ISC_LOG_DEBUG(3), "fetch_callback");
if (client->recursionquota != NULL) {
isc_quota_detach(&client->recursionquota);
- ns_stats_decrement(client->sctx->nsstats,
+ ns_stats_decrement(client->manager->sctx->nsstats,
ns_statscounter_recursclients);
}
* connection was accepted (if allowed by the TCP quota).
*/
if (client->recursionquota == NULL) {
- result = isc_quota_attach(&client->sctx->recursionquota,
- &client->recursionquota);
+ result =
+ isc_quota_attach(&client->manager->sctx->recursionquota,
+ &client->recursionquota);
if (result == ISC_R_SUCCESS || result == ISC_R_SOFTQUOTA) {
- ns_stats_increment(client->sctx->nsstats,
+ ns_stats_increment(client->manager->sctx->nsstats,
ns_statscounter_recursclients);
}
isc_stdtime_t now;
isc_stdtime_get(&now);
if (now != atomic_load_relaxed(&last_hard)) {
- ns_server_t *sctx = client->sctx;
+ ns_server_t *sctx = client->manager->sctx;
atomic_store_relaxed(&last_hard, now);
ns_client_log(
client, NS_LOGCATEGORY_CLIENT,
result = dns_resolver_createfetch(
client->view->resolver, qname, qtype, qdomain, nameservers,
NULL, peeraddr, client->message->id, client->query.fetchoptions,
- 0, NULL, client->task, fetch_callback, client, rdataset,
- sigrdataset, &client->query.fetch);
+ 0, NULL, client->manager->task, fetch_callback, client,
+ rdataset, sigrdataset, &client->query.fetch);
if (result != ISC_R_SUCCESS) {
isc_nmhandle_detach(&client->fetchhandle);
ns_client_putrdataset(client, &rdataset);
CTRACE(ISC_LOG_DEBUG(3), "query_hookresume");
REQUIRE(NS_CLIENT_VALID(client));
- REQUIRE(task == client->task);
+ REQUIRE(task == client->manager->task);
REQUIRE(event->ev_type == NS_EVENT_HOOKASYNCDONE);
LOCK(&client->query.fetchlock);
if (client->recursionquota != NULL) {
isc_quota_detach(&client->recursionquota);
- ns_stats_decrement(client->sctx->nsstats,
+ ns_stats_decrement(client->manager->sctx->nsstats,
ns_statscounter_recursclients);
}
hctx->destroy(&hctx);
qctx_destroy(qctx);
- isc_mem_put(client->mctx, qctx, sizeof(*qctx));
+ isc_mem_put(client->manager->mctx, qctx, sizeof(*qctx));
isc_event_free(&event);
}
goto cleanup;
}
- saved_qctx = isc_mem_get(client->mctx, sizeof(*saved_qctx));
+ saved_qctx = isc_mem_get(client->manager->mctx, sizeof(*saved_qctx));
qctx_save(qctx, saved_qctx);
- result = runasync(saved_qctx, client->mctx, arg, client->task,
- query_hookresume, client, &client->query.hookactx);
+ result = runasync(saved_qctx, client->manager->mctx, arg,
+ client->manager->task, query_hookresume, client,
+ &client->query.hookactx);
if (result != ISC_R_SUCCESS) {
goto cleanup;
}
qctx_clean(saved_qctx);
qctx_freedata(saved_qctx);
qctx_destroy(saved_qctx);
- isc_mem_put(client->mctx, saved_qctx, sizeof(*saved_qctx));
+ isc_mem_put(client->manager->mctx, saved_qctx,
+ sizeof(*saved_qctx));
}
qctx->detach_client = true;
return (result);
flags = 0;
#ifdef ENABLE_AFL
- if (qctx->client->sctx->fuzztype == isc_fuzz_resolver) {
+ if (qctx->client->manager->sctx->fuzztype == isc_fuzz_resolver) {
failcache = false;
} else {
failcache = dns_badcache_find(
isc_netaddr_fromsockaddr(&netaddr, &client->peeraddr);
- isc_buffer_allocate(client->mctx, &buffer,
+ isc_buffer_allocate(client->manager->mctx, &buffer,
view->dns64cnt * 16 *
dns_rdataset_count(qctx->rdataset));
result = dns_message_gettemprdataset(client->message, &dns64_rdataset);
client->query.attributes &= ~NS_QUERYATTR_SECURE;
}
- isc_buffer_allocate(client->mctx, &buffer,
+ isc_buffer_allocate(client->manager->mctx, &buffer,
16 * dns_rdataset_count(qctx->rdataset));
result = dns_message_gettemprdataset(client->message, &myrdataset);
if (result != ISC_R_SUCCESS) {
*/
if (dns_rdataset_isassociated(qctx->rdataset) &&
!dns_name_equal(qname, found) &&
- (((qctx->client->sctx->options &
+ (((qctx->client->manager->sctx->options &
NS_SERVER_NONEAREST) == 0) ||
qctx->qtype == dns_rdatatype_ds))
{
/*
* Don't add the SOA record for test which set "-T nosoa".
*/
- if (((client->sctx->options & NS_SERVER_NOSOA) != 0) &&
+ if (((client->manager->sctx->options & NS_SERVER_NOSOA) != 0) &&
(!WANTDNSSEC(client) || !dns_rdataset_isassociated(qctx->rdataset)))
{
return (ISC_R_SUCCESS);
if (client->query.qtype == dns_rdatatype_dnskey) {
uint16_t keytags = client->keytag_len / 2;
size_t len = taglen = sizeof("65000") * keytags + 1;
- char *cp = tags = isc_mem_get(client->mctx, taglen);
+ char *cp = tags = isc_mem_get(client->manager->mctx, taglen);
int i = 0;
INSIST(client->keytag != NULL);
ISC_LOG_INFO, "trust-anchor-telemetry '%s/%s' from %s%s",
namebuf, classbuf, clientbuf, tags != NULL ? tags : "");
if (tags != NULL) {
- isc_mem_put(client->mctx, tags, taglen);
+ isc_mem_put(client->manager->mctx, tags, taglen);
}
}
return;
}
- if ((client->sctx->options & NS_SERVER_LOGQUERIES) != 0) {
+ if ((client->manager->sctx->options & NS_SERVER_LOGQUERIES) != 0) {
log_query(client, saved_flags, saved_extflags);
}
rdataset = ISC_LIST_HEAD(client->query.qname->list);
INSIST(rdataset != NULL);
client->query.qtype = qtype = rdataset->type;
- dns_rdatatypestats_increment(client->sctx->rcvquerystats, qtype);
+ dns_rdatatypestats_increment(client->manager->sctx->rcvquerystats,
+ qtype);
log_tat(client);
return;
case dns_rdatatype_tkey:
result = dns_tkey_processquery(
- client->message, client->sctx->tkeyctx,
+ client->message, client->manager->sctx->tkeyctx,
client->view->dynamickeys);
if (result == ISC_R_SUCCESS) {
query_send(client);
* If "-T noaa" has been set on the command line don't set
* AA on authoritative answers.
*/
- if ((client->sctx->options & NS_SERVER_NOAA) == 0) {
+ if ((client->manager->sctx->options & NS_SERVER_NOAA) == 0) {
message->flags |= DNS_MESSAGEFLAG_AA;
}