unsigned int : 0; /* end of bitfields c/o tree lock */
/*@}*/
- /*%
- * This is needed for hashing.
- */
- unsigned int hashval;
-
- dns_fixedname_t fn;
- dns_name_t *name;
+ dns_name_t name;
isc_mem_t *mctx;
/*%
qp_makekey(dns_qpkey_t key, void *uctx ISC_ATTR_UNUSED, void *pval,
uint32_t ival ISC_ATTR_UNUSED) {
dns_qpdata_t *data = pval;
- return (dns_qpkey_fromname(key, data->name));
+ return (dns_qpkey_fromname(key, &data->name));
}
static void
if (isc_log_wouldlog(dns_lctx, ISC_LOG_DEBUG(1))) {
char printname[DNS_NAME_FORMATSIZE];
- dns_name_format(node->name, printname, sizeof(printname));
+ dns_name_format(&node->name, printname, sizeof(printname));
isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
DNS_LOGMODULE_CACHE, ISC_LOG_DEBUG(1),
"delete_node(): %p %s (bucket %d)", node,
* Delete the corresponding node from the auxiliary NSEC
* tree before deleting from the main tree.
*/
- result = dns_qp_deletename(qpdb->nsec, node->name, NULL, NULL);
+ result = dns_qp_deletename(qpdb->nsec, &node->name, NULL, NULL);
if (result != ISC_R_SUCCESS) {
isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
DNS_LOGMODULE_CACHE, ISC_LOG_WARNING,
}
/* FALLTHROUGH */
case DNS_DB_NSEC_NORMAL:
- result = dns_qp_deletename(qpdb->tree, node->name, NULL, NULL);
+ result = dns_qp_deletename(qpdb->tree, &node->name, NULL, NULL);
break;
case DNS_DB_NSEC_NSEC:
- result = dns_qp_deletename(qpdb->nsec, node->name, NULL, NULL);
+ result = dns_qp_deletename(qpdb->nsec, &node->name, NULL, NULL);
break;
case DNS_DB_NSEC_NSEC3:
- result = dns_qp_deletename(qpdb->nsec3, node->name, NULL, NULL);
+ result = dns_qp_deletename(qpdb->nsec3, &node->name, NULL,
+ NULL);
break;
}
if (result != ISC_R_SUCCESS) {
* anything else.
*/
if (foundname != NULL) {
- dns_name_copy(node->name, foundname);
+ dns_name_copy(&node->name, foundname);
}
result = DNS_R_DELEGATION;
if (nodep != NULL) {
dns_qpdata_t *newdata = isc_mem_get(qpdb->common.mctx,
sizeof(*newdata));
*newdata = (dns_qpdata_t){
+ .name = DNS_NAME_INITEMPTY,
.references = ISC_REFCOUNT_INITIALIZER(1),
};
- newdata->hashval = dns_name_hash(name);
- newdata->locknum = newdata->hashval % qpdb->node_lock_count;
- newdata->name = dns_fixedname_initname(&newdata->fn);
- dns_name_copy(name, newdata->name);
+ newdata->locknum = dns_name_hash(name) % qpdb->node_lock_count;
isc_mem_attach(qpdb->common.mctx, &newdata->mctx);
+ dns_name_dupwithoffsets(name, newdata->mctx, &newdata->name);
ISC_LINK_INIT(newdata, deadlink);
}
name = dns_fixedname_initname(&fixed);
- dns_name_copy(qpnode->name, name);
+ dns_name_copy(&qpnode->name, name);
dns_rdataset_getownercase(rdataset, name);
newheader = (dns_slabheader_t *)region.base;
if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH) {
qpdbiter->new_origin = true;
- dns_name_copy(qpdbiter->node->name, qpdbiter->name);
+ dns_name_copy(&qpdbiter->node->name, qpdbiter->name);
reference_iter_node(qpdbiter DNS__DB_FLARG_PASS);
} else {
qpdbiter->node = NULL;
}
if (name != NULL) {
- dns_name_copy(qpdbiter->node->name, name);
+ dns_name_copy(&qpdbiter->node->name, name);
if (qpdbiter->common.relative_names && qpdbiter->new_origin) {
result = DNS_R_NEWORIGIN;
dns_slabheader_destroy(¤t);
}
+ dns_name_free(&data->name, data->mctx);
isc_mem_putanddetach(&data->mctx, data, sizeof(dns_qpdata_t));
}