* The reason this is split from qpzone_addrdataset is to allow the reuse of
* the same qp transaction for multiple adds.
*
+ * If the rdataset is of type NSEC, 'nsec' must point to the qp trie for the
+ * zone, otherwise it must be NULL.
+ *
* qpzone_subtractrdataset doesn't have the same problem since it cannot delete
* nodes, only rdatasets.
*/
}
/*
- * If we're adding a delegation type or adding NSEC records
- * tree hold an exclusive lock on the tree. In the latter case the
- * lock does not necessarily have to be acquired but it will help
+ * If we're adding a delegation type or adding to the auxiliary NSEC
+ * namespace, hold an exclusive lock on the tree. In the latter case
+ * the lock does not necessarily have to be acquired but it will help
* purge ancient entries more effectively.
*
* (Note: node lock must be acquired after starting
REQUIRE(VALID_QPZONE(qpdb));
/*
- * Open a new write transaction if we're adding an NSEC record.
+ * Open a new write transaction if we're adding to the auxiliary
+ * NSEC namespace.
*/
if (!node->havensec && rdataset->type == dns_rdatatype_nsec) {
dns_qpmulti_write(qpdb->tree, &nsec);
* Incoming zone transfer context.
*/
-typedef struct dns_ixfr dns_ixfr_t;
+typedef struct dns_ixfr {
+ uint32_t diffs;
+ uint32_t maxdiffs;
+ uint32_t request_serial;
+ uint32_t current_serial;
+ dns_journal_t *journal;
+} dns_ixfr_t;
struct dns_xfrin {
unsigned int magic;
*/
dns_rdatacallbacks_t axfr;
- struct dns_ixfr {
- uint32_t diffs;
- uint32_t maxdiffs;
- uint32_t request_serial;
- uint32_t current_serial;
- dns_journal_t *journal;
- } ixfr;
+ dns_ixfr_t ixfr;
dns_rdata_t firstsoa;
unsigned char *firstsoa_data;