Merge branch '3113-clientinfo-refactor-v9_18' into 'v9_18'

[9.18] Merge branch '3113-clientinfo-refactor' into 'main'

See merge request isc-projects/bind9!7504
This commit is contained in:
Evan Hunt 2023-02-08 08:49:29 +00:00
commit a3bcab9105
4 changed files with 46 additions and 35 deletions

View file

@ -25,11 +25,15 @@ dns_clientinfomethods_init(dns_clientinfomethods_t *methods,
}
void
dns_clientinfo_init(dns_clientinfo_t *ci, void *data, dns_ecs_t *ecs,
void *versionp) {
dns_clientinfo_init(dns_clientinfo_t *ci, void *data, void *versionp) {
ci->version = DNS_CLIENTINFO_VERSION;
ci->data = data;
ci->dbversion = versionp;
dns_ecs_init(&ci->ecs);
}
void
dns_clientinfo_setecs(dns_clientinfo_t *ci, dns_ecs_t *ecs) {
if (ecs != NULL) {
ci->ecs = *ecs;
} else {

View file

@ -86,7 +86,17 @@ dns_clientinfomethods_init(dns_clientinfomethods_t *methods,
dns_clientinfo_sourceip_t sourceip);
void
dns_clientinfo_init(dns_clientinfo_t *ci, void *data, dns_ecs_t *ecs,
void *versionp);
dns_clientinfo_init(dns_clientinfo_t *ci, void *data, void *versionp);
/*%<
* Initialize a clientinfo object, setting the data to 'data' and the
* database version to 'versionp'. ECS data is initialized to 0/0/0.
*/
void
dns_clientinfo_setecs(dns_clientinfo_t *ci, dns_ecs_t *ecs);
/*%<
* Set the ECS client data associated with a clientinfo object 'ci'.
* If 'ecs' is NULL, initialize ci->ecs to 0/0/0; otherwise copy it.
*/
ISC_LANG_ENDDECLS

View file

@ -1406,7 +1406,8 @@ query_getdb(ns_client_t *client, dns_name_t *name, dns_rdatatype_t qtype,
dns_db_t *tdbp;
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, &client->ecs, NULL);
dns_clientinfo_init(&ci, client, NULL);
dns_clientinfo_setecs(&ci, &client->ecs);
tdbp = NULL;
tresult = dns_view_searchdlz(client->view, name, zonelabels,
@ -1548,7 +1549,7 @@ query_additionalauthfind(dns_db_t *db, dns_dbversion_t *version,
isc_result_t result;
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
/*
* Since we are looking for authoritative data, we do not set
@ -1712,7 +1713,7 @@ query_additional_cb(void *arg, const dns_name_t *name, dns_rdatatype_t qtype,
CTRACE(ISC_LOG_DEBUG(3), "query_additional_cb");
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
/*
* We treat type A additional section processing as if it
@ -2314,7 +2315,7 @@ mark_secure(ns_client_t *client, dns_db_t *db, dns_name_t *name,
rdataset->trust = dns_trust_secure;
sigrdataset->trust = dns_trust_secure;
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
/*
* Save the updated secure state. Ignore failures.
@ -2351,7 +2352,7 @@ get_key(ns_client_t *client, dns_db_t *db, dns_rdata_rrsig_t *rrsig,
dns_clientinfo_t ci;
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
if (!dns_rdataset_isassociated(keyrdataset)) {
result = dns_db_findnodeext(db, &rrsig->signer, false, &cm, &ci,
@ -2916,7 +2917,7 @@ rpz_rrset_find(ns_client_t *client, dns_name_t *name, dns_rdatatype_t type,
node = NULL;
found = dns_fixedname_initname(&fixed);
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
result = dns_db_findext(*dbp, name, version, type, options, client->now,
&node, found, &cm, &ci, *rdatasetp, NULL);
if (result == DNS_R_DELEGATION && is_zone && USECACHE(client)) {
@ -3063,7 +3064,7 @@ rpz_find_p(ns_client_t *client, dns_name_t *self_name, dns_rdatatype_t qtype,
CTRACE(ISC_LOG_DEBUG(3), "rpz_find_p");
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
/*
* Try to find either a CNAME or the type of record demanded by the
@ -4713,7 +4714,7 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db,
dns_name_clone(qname, &name);
labels = dns_name_countlabels(&name);
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
/*
* Map unknown algorithm to known value.
@ -4914,7 +4915,8 @@ redirect(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
dns_rdataset_init(&trdataset);
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, &client->ecs, NULL);
dns_clientinfo_init(&ci, client, NULL);
dns_clientinfo_setecs(&ci, &client->ecs);
if (WANTDNSSEC(client) && dns_db_iszone(*dbp) && dns_db_issecure(*dbp))
{
@ -5052,7 +5054,8 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
dns_rdataset_init(&trdataset);
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, &client->ecs, NULL);
dns_clientinfo_init(&ci, client, NULL);
dns_clientinfo_setecs(&ci, &client->ecs);
if (WANTDNSSEC(client) && dns_db_iszone(*dbp) && dns_db_issecure(*dbp))
{
@ -5876,9 +5879,10 @@ query_lookup(query_ctx_t *qctx) {
CALL_HOOK(NS_QUERY_LOOKUP_BEGIN, qctx);
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, qctx->client,
HAVEECS(qctx->client) ? &qctx->client->ecs : NULL,
NULL);
dns_clientinfo_init(&ci, qctx->client, NULL);
if (HAVEECS(qctx->client)) {
dns_clientinfo_setecs(&ci, &qctx->client->ecs);
}
/*
* We'll need some resources...
@ -8706,7 +8710,7 @@ query_notfound(query_ctx_t *qctx) {
dns_clientinfo_t ci;
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, qctx->client, NULL, NULL);
dns_clientinfo_init(&ci, qctx->client, NULL);
dns_db_attach(qctx->view->hints, &qctx->db);
result = dns_db_findext(qctx->db, dns_rootname, NULL,
@ -10201,7 +10205,7 @@ query_coveringnsec(query_ctx_t *qctx) {
nowild = dns_fixedname_initname(&fnowild);
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, qctx->client, NULL, NULL);
dns_clientinfo_init(&ci, qctx->client, NULL);
/*
* All signer names must be the same to accept.
@ -10915,25 +10919,18 @@ static isc_result_t
query_addsoa(query_ctx_t *qctx, unsigned int override_ttl,
dns_section_t section) {
ns_client_t *client = qctx->client;
dns_name_t *name;
dns_dbnode_t *node;
isc_result_t result, eresult;
dns_name_t *name = NULL;
dns_dbnode_t *node = NULL;
isc_result_t result, eresult = ISC_R_SUCCESS;
dns_rdataset_t *rdataset = NULL, *sigrdataset = NULL;
dns_rdataset_t **sigrdatasetp = NULL;
dns_clientinfomethods_t cm;
dns_clientinfo_t ci;
CTRACE(ISC_LOG_DEBUG(3), "query_addsoa");
/*
* Initialization.
*/
eresult = ISC_R_SUCCESS;
name = NULL;
rdataset = NULL;
node = NULL;
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
/*
* Don't add the SOA record for test which set "-T nosoa".
@ -11082,7 +11079,7 @@ query_addns(query_ctx_t *qctx) {
fname = dns_fixedname_initname(&foundname);
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
/*
* Get resources and make 'name' be the database origin.
@ -11184,7 +11181,7 @@ query_addbestns(query_ctx_t *qctx) {
CTRACE(ISC_LOG_DEBUG(3), "query_addbestns");
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
/*
* Find the right database.
@ -11390,7 +11387,7 @@ query_addwildcardproof(query_ctx_t *qctx, bool ispositive, bool nodata) {
CTRACE(ISC_LOG_DEBUG(3), "query_addwildcardproof");
dns_clientinfomethods_init(&cm, ns_client_sourceip);
dns_clientinfo_init(&ci, client, NULL, NULL);
dns_clientinfo_init(&ci, client, NULL);
/*
* If a name has been specifically flagged as needing

View file

@ -600,7 +600,7 @@ foreach_rrset(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
* different from the current version
*/
dns_db_currentversion(db, &oldver);
dns_clientinfo_init(&ci, NULL, NULL, (ver != oldver) ? ver : NULL);
dns_clientinfo_init(&ci, NULL, (ver != oldver) ? ver : NULL);
dns_db_closeversion(db, &oldver, false);
node = NULL;
@ -691,7 +691,7 @@ foreach_rr(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
* different from the current version
*/
dns_db_currentversion(db, &oldver);
dns_clientinfo_init(&ci, NULL, NULL, (ver != oldver) ? ver : NULL);
dns_clientinfo_init(&ci, NULL, (ver != oldver) ? ver : NULL);
dns_db_closeversion(db, &oldver, false);
if (type == dns_rdatatype_any) {