{
.namestr = "",
.denial = DNS_DB_NSEC_NORMAL,
- .key = { 0x00, 0x02 },
+ .key = { 0x07, 0x02 },
.len = 1,
},
{
.namestr = ".",
.denial = DNS_DB_NSEC_NORMAL,
- .key = { 0x00, 0x02, 0x02 },
+ .key = { 0x07, 0x02, 0x02 },
.len = 2,
},
{
.namestr = "\\000",
.denial = DNS_DB_NSEC_NORMAL,
- .key = { 0x00, 0x03, 0x03, 0x02 },
+ .key = { 0x07, 0x03, 0x03, 0x02 },
.len = 4,
},
{
.namestr = "\\000\\009",
.denial = DNS_DB_NSEC_NORMAL,
- .key = { 0x00, 0x03, 0x03, 0x03, 0x0c, 0x02 },
+ .key = { 0x07, 0x03, 0x03, 0x03, 0x0c, 0x02 },
.len = 6,
},
{
.namestr = "com",
.denial = DNS_DB_NSEC_NORMAL,
- .key = { 0x00, 0x16, 0x22, 0x20, 0x02 },
+ .key = { 0x07, 0x16, 0x22, 0x20, 0x02 },
.len = 5,
},
{
.namestr = "com.",
.denial = DNS_DB_NSEC_NSEC,
- .key = { 0x02, 0x02, 0x16, 0x22, 0x20, 0x02 },
+ .key = { 0x09, 0x02, 0x16, 0x22, 0x20, 0x02 },
.len = 6,
},
{
.namestr = "com.",
.denial = DNS_DB_NSEC_NSEC3,
- .key = { 0x03, 0x02, 0x16, 0x22, 0x20, 0x02 },
+ .key = { 0x0a, 0x02, 0x16, 0x22, 0x20, 0x02 },
.len = 6,
},
{
.namestr = "com.",
.denial = DNS_DB_NSEC_NORMAL,
- .key = { 0x00, 0x02, 0x16, 0x22, 0x20, 0x02 },
+ .key = { 0x07, 0x02, 0x16, 0x22, 0x20, 0x02 },
.len = 6,
},
{
.namestr = "example.com.",
.denial = DNS_DB_NSEC_NORMAL,
- .key = { 0x00, 0x02, 0x16, 0x22, 0x20, 0x02, 0x18, 0x2b,
+ .key = { 0x07, 0x02, 0x16, 0x22, 0x20, 0x02, 0x18, 0x2b,
0x14, 0x20, 0x23, 0x1f, 0x18, 0x02 },
.len = 14,
},
{
.namestr = "example.com",
.denial = DNS_DB_NSEC_NORMAL,
- .key = { 0x00, 0x16, 0x22, 0x20, 0x02, 0x18, 0x2b, 0x14,
+ .key = { 0x07, 0x16, 0x22, 0x20, 0x02, 0x18, 0x2b, 0x14,
0x20, 0x23, 0x1f, 0x18, 0x02 },
.len = 13,
},
{
.namestr = "EXAMPLE.COM",
.denial = DNS_DB_NSEC_NORMAL,
- .key = { 0x00, 0x16, 0x22, 0x20, 0x02, 0x18, 0x2b, 0x14,
+ .key = { 0x07, 0x16, 0x22, 0x20, 0x02, 0x18, 0x2b, 0x14,
0x20, 0x23, 0x1f, 0x18, 0x02 },
.len = 13,
},
const char *namestr;
dns_name_t *name;
dns_fixedname_t fixed;
+ uint8_t denial;
size_t len;
dns_qpkey_t key;
} testcases[] = {
- { .namestr = "." },
- { .namestr = "\\000." },
- { .namestr = "\\000.\\000." },
- { .namestr = "\\000\\009." },
- { .namestr = "\\007." },
- { .namestr = "example.com." },
- { .namestr = "EXAMPLE.COM." },
- { .namestr = "www.example.com." },
- { .namestr = "exam.com." },
- { .namestr = "exams.com." },
- { .namestr = "exam\\000.com." },
+ { .namestr = ".", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "\\000.", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "\\000.\\000.", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "\\000\\009.", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "\\007.", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "example.com.", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "EXAMPLE.COM.", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "www.example.com.", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "exam.com.", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "exams.com.", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "exam\\000.com.", .denial = DNS_DB_NSEC_NORMAL },
+ { .namestr = "exam.com.", .denial = DNS_DB_NSEC_NSEC },
+ { .namestr = "exams.com.", .denial = DNS_DB_NSEC_NSEC },
+ { .namestr = "exam.com.", .denial = DNS_DB_NSEC_NSEC3 },
+ { .namestr = "exams.com.", .denial = DNS_DB_NSEC_NSEC3 },
};
for (size_t i = 0; i < ARRAY_SIZE(testcases); i++) {
&testcases[i].fixed);
testcases[i].name = dns_fixedname_name(&testcases[i].fixed);
testcases[i].len = dns_qpkey_fromname(testcases[i].key,
- testcases[i].name, 0);
+ testcases[i].name,
+ testcases[i].denial);
}
for (size_t i = 0; i < ARRAY_SIZE(testcases); i++) {
/* include extra terminating NOBYTE */
int keycmp = memcmp(testcases[i].key, testcases[j].key,
len + 1);
- assert_true((namecmp < 0) == (keycmp < 0));
- assert_true((namecmp == 0) == (keycmp == 0));
- assert_true((namecmp > 0) == (keycmp > 0));
+ if (testcases[i].denial == testcases[j].denial) {
+ assert_true((namecmp < 0) == (keycmp < 0));
+ assert_true((namecmp == 0) == (keycmp == 0));
+ assert_true((namecmp > 0) == (keycmp > 0));
+ } else {
+ uint8_t di = testcases[i].denial;
+ uint8_t dj = testcases[j].denial;
+ assert_true((di < dj) == (keycmp < 0));
+ assert_true((di > dj) == (keycmp > 0));
+ }
}
}
}
static size_t
qpkey_fromstring(dns_qpkey_t key, void *uctx, void *pval, uint32_t ival) {
dns_fixedname_t fixed;
+ uint8_t denial = ival;
UNUSED(uctx);
- UNUSED(ival);
- if (*(char *)pval == '\0') {
- return 0;
- }
dns_test_namefromstring(pval, &fixed);
- return dns_qpkey_fromname(key, dns_fixedname_name(&fixed), 0);
+ return dns_qpkey_fromname(key, dns_fixedname_name(&fixed), denial);
}
const dns_qpmethods_t string_methods = {
};
static void
-check_partialmatch(dns_qp_t *qp, struct check_partialmatch check[]) {
+check_partialmatch(dns_qp_t *qp, struct check_partialmatch check[],
+ uint8_t denial) {
for (int i = 0; check[i].query != NULL; i++) {
isc_result_t result;
dns_fixedname_t fn1, fn2;
void *pval = NULL;
dns_test_namefromstring(check[i].query, &fn1);
- result = dns_qp_lookup(qp, name, foundname, NULL, NULL, &pval,
- NULL);
+ result = dns_qp_lookup2(qp, name, denial, foundname, NULL, NULL,
+ &pval, NULL);
#if 0
- fprintf(stderr, "%s %s (expected %s) "
+ fprintf(stderr, "%s%s %s (expected %s) "
"value \"%s\" (expected \"%s\")\n",
+ denial == DNS_DB_NSEC_NSEC3 ? "NSEC3:" : (denial == DNS_DB_NSEC_NSEC ? "NSEC:" : ""),
check[i].query,
isc_result_totext(result),
isc_result_totext(check[i].result), (char *)pval,
}
static void
-insert_str(dns_qp_t *qp, const char *str) {
+insert_name(dns_qp_t *qp, const char *str, uint8_t denial) {
isc_result_t result;
uintptr_t pval = (uintptr_t)str;
+ uint32_t ival = (uint32_t)denial;
INSIST((pval & 3) == 0);
- result = dns_qp_insert(qp, (void *)pval, 0);
+ result = dns_qp_insert(qp, (void *)pval, ival);
+ assert_int_equal(result, ISC_R_SUCCESS);
+}
+
+static void
+delete_rootkey(dns_qp_t *qp, uint8_t denial) {
+ uint8_t d = dns_qp_bits_for_byte[denial + 48];
+ dns_qpkey_t rootkey = { d, SHIFT_NOBYTE };
+ isc_result_t result = dns_qp_deletekey(qp, rootkey, 1, NULL, NULL);
assert_int_equal(result, ISC_R_SUCCESS);
}
ISC_RUN_TEST_IMPL(partialmatch) {
- isc_result_t result;
dns_qp_t *qp = NULL;
int i = 0;
* results when we want "not found".
*/
while (insert[i][0] != '.') {
- insert_str(qp, insert[i++]);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NORMAL);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NSEC);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NSEC3);
+ i++;
}
static struct check_partialmatch check1[] = {
{ "my.other.foo.bar.", DNS_R_PARTIALMATCH, "foo.bar." },
{ NULL, 0, NULL },
};
- check_partialmatch(qp, check1);
+ check_partialmatch(qp, check1, DNS_DB_NSEC_NORMAL);
+ check_partialmatch(qp, check1, DNS_DB_NSEC_NSEC);
+ check_partialmatch(qp, check1, DNS_DB_NSEC_NSEC3);
/* what if the trie contains the root? */
INSIST(insert[i][0] == '.');
- insert_str(qp, insert[i++]);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NORMAL);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NSEC);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NSEC3);
+ i++;
static struct check_partialmatch check2[] = {
{ "b.c.", DNS_R_PARTIALMATCH, "." },
{ "bar", ISC_R_NOTFOUND, NULL },
{ NULL, 0, NULL },
};
- check_partialmatch(qp, check2);
+ check_partialmatch(qp, check2, DNS_DB_NSEC_NORMAL);
+ check_partialmatch(qp, check2, DNS_DB_NSEC_NSEC);
+ check_partialmatch(qp, check2, DNS_DB_NSEC_NSEC3);
/*
* what if entries in the trie are relative to the zone apex
* and there's no root node?
*/
- dns_qpkey_t rootkey = { 0x00, SHIFT_NOBYTE };
- result = dns_qp_deletekey(qp, rootkey, 1, NULL, NULL);
- assert_int_equal(result, ISC_R_SUCCESS);
- check_partialmatch(qp, (struct check_partialmatch[]){
- { "bar", ISC_R_NOTFOUND, NULL },
- { "bar.", ISC_R_NOTFOUND, NULL },
- { NULL, 0, NULL },
- });
+ delete_rootkey(qp, DNS_DB_NSEC_NORMAL);
+ delete_rootkey(qp, DNS_DB_NSEC_NSEC);
+ delete_rootkey(qp, DNS_DB_NSEC_NSEC3);
+
+ static struct check_partialmatch check3[] = {
+ { "bar", ISC_R_NOTFOUND, NULL },
+ { "bar.", ISC_R_NOTFOUND, NULL },
+ { NULL, 0, NULL },
+ };
+ check_partialmatch(qp, check3, DNS_DB_NSEC_NORMAL);
+ check_partialmatch(qp, check3, DNS_DB_NSEC_NSEC);
+ check_partialmatch(qp, check3, DNS_DB_NSEC_NSEC3);
dns_qp_destroy(&qp);
}
struct check_qpchain {
const char *query;
+ uint8_t denial;
isc_result_t result;
unsigned int length;
const char *names[10];
dns_qpchain_init(qp, &chain);
dns_test_namefromstring(check[i].query, &fn1);
- result = dns_qp_lookup(qp, name, NULL, iter, &chain, NULL,
- NULL);
+ result = dns_qp_lookup2(qp, name, check[i].denial, NULL, iter,
+ &chain, NULL, NULL);
#if 0
- fprintf(stderr, "%s %s (expected %s), "
- "len %d (expected %d)\n", check[i].query,
- isc_result_totext(result),
+ fprintf(stderr,
+ "%s %s (expected %s), "
+ "len %d (expected %d)\n",
+ check[i].query, isc_result_totext(result),
isc_result_totext(check[i].result),
dns_qpchain_length(&chain), check[i].length);
#endif
dns_qp_create(mctx, &string_methods, NULL, &qp);
while (insert[i][0] != '\0') {
- insert_str(qp, insert[i++]);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NORMAL);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NSEC);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NSEC3);
+ i++;
}
static struct check_qpchain check1[] = {
- { "b.", ISC_R_SUCCESS, 2, { ".", "b." } },
- { "b.a.", ISC_R_SUCCESS, 3, { ".", "a.", "b.a." } },
- { "c.", DNS_R_PARTIALMATCH, 1, { "." } },
+ { "b.", DNS_DB_NSEC_NORMAL, ISC_R_SUCCESS, 2, { ".", "b." } },
+ { "b.", DNS_DB_NSEC_NSEC, ISC_R_SUCCESS, 2, { ".", "b." } },
+ { "b.", DNS_DB_NSEC_NSEC3, ISC_R_SUCCESS, 2, { ".", "b." } },
+
+ { "b.a.",
+ DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS,
+ 3,
+ { ".", "a.", "b.a." } },
+ { "b.a.",
+ DNS_DB_NSEC_NSEC,
+ ISC_R_SUCCESS,
+ 3,
+ { ".", "a.", "b.a." } },
+ { "b.a.",
+ DNS_DB_NSEC_NSEC3,
+ ISC_R_SUCCESS,
+ 3,
+ { ".", "a.", "b.a." } },
+
+ { "c.", DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 1, { "." } },
+ { "c.", DNS_DB_NSEC_NSEC, DNS_R_PARTIALMATCH, 1, { "." } },
+ { "c.", DNS_DB_NSEC_NSEC3, DNS_R_PARTIALMATCH, 1, { "." } },
+
+ { "e.d.c.b.a.",
+ DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS,
+ 5,
+ { ".", "a.", "b.a.", "c.b.a.", "e.d.c.b.a." } },
+ { "e.d.c.b.a.",
+ DNS_DB_NSEC_NSEC,
+ ISC_R_SUCCESS,
+ 5,
+ { ".", "a.", "b.a.", "c.b.a.", "e.d.c.b.a." } },
{ "e.d.c.b.a.",
+ DNS_DB_NSEC_NSEC3,
ISC_R_SUCCESS,
5,
{ ".", "a.", "b.a.", "c.b.a.", "e.d.c.b.a." } },
- { "a.b.c.d.", ISC_R_SUCCESS, 3, { ".", "c.d.", "a.b.c.d." } },
- { "b.c.d.", DNS_R_PARTIALMATCH, 2, { ".", "c.d." } },
+
+ { "a.b.c.d.",
+ DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS,
+ 3,
+ { ".", "c.d.", "a.b.c.d." } },
+ { "a.b.c.d.",
+ DNS_DB_NSEC_NSEC,
+ ISC_R_SUCCESS,
+ 3,
+ { ".", "c.d.", "a.b.c.d." } },
+ { "a.b.c.d.",
+ DNS_DB_NSEC_NSEC3,
+ ISC_R_SUCCESS,
+ 3,
+ { ".", "c.d.", "a.b.c.d." } },
+
+ { "b.c.d.",
+ DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH,
+ 2,
+ { ".", "c.d." } },
+ { "b.c.d.",
+ DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH,
+ 2,
+ { ".", "c.d." } },
+ { "b.c.d.",
+ DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH,
+ 2,
+ { ".", "c.d." } },
+
+ { "z.x.k.c.d.",
+ DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH,
+ 3,
+ { ".", "c.d.", "x.k.c.d." } },
+ { "z.x.k.c.d.",
+ DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH,
+ 3,
+ { ".", "c.d.", "x.k.c.d." } },
{ "z.x.k.c.d.",
+ DNS_DB_NSEC_NSEC3,
DNS_R_PARTIALMATCH,
3,
{ ".", "c.d.", "x.k.c.d." } },
- { NULL, 0, 0, { NULL } },
+
+ { NULL, 0, 0, 0, { NULL } },
};
check_qpchain(qp, check1);
dns_qp_create(mctx, &string_methods, NULL, &qp);
while (insert2[i][0] != '\0') {
- insert_str(qp, insert2[i++]);
+ insert_name(qp, insert2[i], DNS_DB_NSEC_NORMAL);
+ insert_name(qp, insert2[i], DNS_DB_NSEC_NSEC);
+ insert_name(qp, insert2[i], DNS_DB_NSEC_NSEC3);
+ i++;
}
static struct check_qpchain check2[] = {
- { "f.c.b.a.", DNS_R_PARTIALMATCH, 1, { "a." } },
- { NULL, 0, 0, { NULL } },
+ { "f.c.b.a.",
+ DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH,
+ 1,
+ { "a." } },
+ { "f.c.b.a.",
+ DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH,
+ 1,
+ { "a." } },
+ { "f.c.b.a.",
+ DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH,
+ 1,
+ { "a." } },
+ { NULL, 0, 0, 0, { NULL } },
};
check_qpchain(qp, check2);
struct check_predecessors {
const char *query;
+ uint8_t denial;
const char *predecessor;
+ uint8_t pdenial;
isc_result_t result;
int remaining;
};
dns_name_t *name = dns_fixedname_initname(&fn1);
dns_name_t *pred = dns_fixedname_initname(&fn2);
char *namestr = NULL;
+ uint32_t ival;
for (int i = 0; check[i].query != NULL; i++) {
dns_qpiter_t it;
result = dns_name_tostring(expred, &predstr, mctx);
assert_int_equal(result, ISC_R_SUCCESS);
- result = dns_qp_lookup(qp, name, NULL, &it, chain, NULL, NULL);
+ result = dns_qp_lookup2(qp, name, check[i].denial, NULL, &it,
+ chain, NULL, NULL);
#if 0
- fprintf(stderr, "%s: expected %s got %s\n", check[i].query,
+ fprintf(stderr, "%s %s: expected %s got %s\n", check[i].query,
+ check[i].denial == DNS_DB_NSEC_NSEC3
+ ? "NSEC3"
+ : (check[i].denial == DNS_DB_NSEC_NSEC
+ ? "NSEC"
+ : "NORMAL"),
isc_result_totext(check[i].result),
isc_result_totext(result));
#endif
* we found an exact match; iterate to find
* the predecessor.
*/
- result = dns_qpiter_prev(&it, pred, NULL, NULL);
+ result = dns_qpiter_prev(&it, pred, NULL, &ival);
if (result == ISC_R_NOMORE) {
- result = dns_qpiter_prev(&it, pred, NULL, NULL);
+ result = dns_qpiter_prev(&it, pred, NULL,
+ &ival);
}
} else {
/*
* we didn't find a match, so the iterator should
* already be pointed at the predecessor node.
*/
- result = dns_qpiter_current(&it, pred, NULL, NULL);
+ result = dns_qpiter_current(&it, pred, NULL, &ival);
}
assert_int_equal(result, ISC_R_SUCCESS);
result = dns_name_tostring(pred, &namestr, mctx);
#if 0
- fprintf(stderr, "... expected predecessor %s got %s\n",
- predstr, namestr);
+ fprintf(stderr, "... expected predecessor %s %u got %s %u\n",
+ predstr, check[i].pdenial, namestr, ival);
#endif
assert_int_equal(result, ISC_R_SUCCESS);
assert_string_equal(namestr, predstr);
+ assert_int_equal(ival, check[i].pdenial);
#if 0
fprintf(stderr, "%d: remaining names after %s:\n", i, namestr);
#endif
j++;
}
+
#if 0
- fprintf(stderr, "\n...expected %d got %d\n",
- check[i].remaining, j);
+ fprintf(stderr, "\n...expected %d got %d\n", check[i].remaining,
+ j);
#endif
+
assert_int_equal(j, check[i].remaining);
}
}
dns_qp_create(mctx, &string_methods, NULL, &qp);
while (insert[i][0] != '\0') {
- insert_str(qp, insert[i++]);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NORMAL);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NSEC);
+ insert_name(qp, insert[i], DNS_DB_NSEC_NSEC3);
+ i++;
}
/* first check: no root label in the database */
static struct check_predecessors check1[] = {
- { ".", "moops.", ISC_R_NOTFOUND, 0 },
- { "a.", "moops.", ISC_R_SUCCESS, 0 },
- { "b.a.", "a.", ISC_R_SUCCESS, 14 },
- { "b.", "e.d.c.b.a.", ISC_R_SUCCESS, 11 },
- { "aaa.a.", "a.", DNS_R_PARTIALMATCH, 14 },
- { "ddd.a.", "e.d.c.b.a.", DNS_R_PARTIALMATCH, 11 },
- { "d.c.", "c.b.b.", ISC_R_NOTFOUND, 9 },
- { "1.2.c.b.a.", "c.b.a.", DNS_R_PARTIALMATCH, 12 },
- { "a.b.c.e.f.", "a.b.c.d.e.", ISC_R_NOTFOUND, 5 },
- { "z.y.x.", "moops.", ISC_R_NOTFOUND, 0 },
- { "w.c.d.", "x.k.c.d.", DNS_R_PARTIALMATCH, 6 },
- { "z.z.z.z.k.c.d.", "x.k.c.d.", DNS_R_PARTIALMATCH, 6 },
- { "w.k.c.d.", "a.b.c.d.", DNS_R_PARTIALMATCH, 7 },
- { "d.a.", "e.d.c.b.a.", DNS_R_PARTIALMATCH, 11 },
- { "0.b.c.d.e.", "x.k.c.d.", ISC_R_NOTFOUND, 6 },
- { "b.d.", "c.b.b.", ISC_R_NOTFOUND, 9 },
- { "mon.", "a.b.c.d.e.", ISC_R_NOTFOUND, 5 },
- { "moor.", "moops.", ISC_R_NOTFOUND, 0 },
- { "mopbop.", "moops.", ISC_R_NOTFOUND, 0 },
- { "moppop.", "moops.", ISC_R_NOTFOUND, 0 },
- { "mopps.", "moops.", ISC_R_NOTFOUND, 0 },
- { "mopzop.", "moops.", ISC_R_NOTFOUND, 0 },
- { "mop.", "moops.", ISC_R_NOTFOUND, 0 },
- { "monbop.", "a.b.c.d.e.", ISC_R_NOTFOUND, 5 },
- { "monpop.", "a.b.c.d.e.", ISC_R_NOTFOUND, 5 },
- { "monps.", "a.b.c.d.e.", ISC_R_NOTFOUND, 5 },
- { "monzop.", "a.b.c.d.e.", ISC_R_NOTFOUND, 5 },
- { "mon.", "a.b.c.d.e.", ISC_R_NOTFOUND, 5 },
- { "moop.", "moon.", ISC_R_NOTFOUND, 1 },
- { "moopser.", "moops.", ISC_R_NOTFOUND, 0 },
- { "monky.", "a.b.c.d.e.", ISC_R_NOTFOUND, 5 },
- { "monkey.", "a.b.c.d.e.", ISC_R_NOTFOUND, 5 },
- { "monker.", "a.b.c.d.e.", ISC_R_NOTFOUND, 5 },
- { NULL, NULL, 0, 0 }
+ { ".", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+ { ".", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 30 },
+ { ".", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 15 },
+
+ { "a.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_SUCCESS, 0 },
+ { "a.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS, 30 },
+ { "a.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_SUCCESS, 15 },
+
+ { "b.a.", DNS_DB_NSEC_NORMAL, "a.", DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS, 44 },
+ { "b.a.", DNS_DB_NSEC_NSEC, "a.", DNS_DB_NSEC_NSEC,
+ ISC_R_SUCCESS, 29 },
+ { "b.a.", DNS_DB_NSEC_NSEC3, "a.", DNS_DB_NSEC_NSEC3,
+ ISC_R_SUCCESS, 14 },
+
+ { "b.", DNS_DB_NSEC_NORMAL, "e.d.c.b.a.", DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS, 41 },
+ { "b.", DNS_DB_NSEC_NSEC, "e.d.c.b.a.", DNS_DB_NSEC_NSEC,
+ ISC_R_SUCCESS, 26 },
+ { "b.", DNS_DB_NSEC_NSEC3, "e.d.c.b.a.", DNS_DB_NSEC_NSEC3,
+ ISC_R_SUCCESS, 11 },
+
+ { "aaa.a.", DNS_DB_NSEC_NORMAL, "a.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 44 },
+ { "aaa.a.", DNS_DB_NSEC_NSEC, "a.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 29 },
+ { "aaa.a.", DNS_DB_NSEC_NSEC3, "a.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 14 },
+
+ { "ddd.a.", DNS_DB_NSEC_NORMAL, "e.d.c.b.a.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 41 },
+ { "ddd.a.", DNS_DB_NSEC_NSEC, "e.d.c.b.a.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 26 },
+ { "ddd.a.", DNS_DB_NSEC_NSEC3, "e.d.c.b.a.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 11 },
+
+ { "d.c.", DNS_DB_NSEC_NORMAL, "c.b.b.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 39 },
+ { "d.c.", DNS_DB_NSEC_NSEC, "c.b.b.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 24 },
+ { "d.c.", DNS_DB_NSEC_NSEC3, "c.b.b.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 9 },
+
+ { "1.2.c.b.a.", DNS_DB_NSEC_NORMAL, "c.b.a.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 42 },
+ { "1.2.c.b.a.", DNS_DB_NSEC_NSEC, "c.b.a.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 27 },
+ { "1.2.c.b.a.", DNS_DB_NSEC_NSEC3, "c.b.a.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 12 },
+
+ { "a.b.c.e.f.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 35 },
+ { "a.b.c.e.f.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.",
+ DNS_DB_NSEC_NSEC, ISC_R_NOTFOUND, 20 },
+ { "a.b.c.e.f.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.",
+ DNS_DB_NSEC_NSEC3, ISC_R_NOTFOUND, 5 },
+
+ { "z.y.x.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 30 },
+ { "z.y.x.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 15 },
+ { "z.y.x.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+
+ { "w.c.d.", DNS_DB_NSEC_NORMAL, "x.k.c.d.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 36 },
+ { "w.c.d.", DNS_DB_NSEC_NSEC, "x.k.c.d.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 21 },
+ { "w.c.d.", DNS_DB_NSEC_NSEC3, "x.k.c.d.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 6 },
+
+ { "z.z.z.z.k.c.d.", DNS_DB_NSEC_NORMAL, "x.k.c.d.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 36 },
+ { "z.z.z.z.k.c.d.", DNS_DB_NSEC_NSEC, "x.k.c.d.",
+ DNS_DB_NSEC_NSEC, DNS_R_PARTIALMATCH, 21 },
+ { "z.z.z.z.k.c.d.", DNS_DB_NSEC_NSEC3, "x.k.c.d.",
+ DNS_DB_NSEC_NSEC3, DNS_R_PARTIALMATCH, 6 },
+
+ { "w.k.c.d.", DNS_DB_NSEC_NORMAL, "a.b.c.d.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 37 },
+ { "w.k.c.d.", DNS_DB_NSEC_NSEC, "a.b.c.d.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 22 },
+ { "w.k.c.d.", DNS_DB_NSEC_NSEC3, "a.b.c.d.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 7 },
+
+ { "d.a.", DNS_DB_NSEC_NORMAL, "e.d.c.b.a.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 41 },
+ { "d.a.", DNS_DB_NSEC_NSEC, "e.d.c.b.a.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 26 },
+ { "d.a.", DNS_DB_NSEC_NSEC3, "e.d.c.b.a.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 11 },
+
+ { "0.b.c.d.e.", DNS_DB_NSEC_NORMAL, "x.k.c.d.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 36 },
+ { "0.b.c.d.e.", DNS_DB_NSEC_NSEC, "x.k.c.d.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 21 },
+ { "0.b.c.d.e.", DNS_DB_NSEC_NSEC3, "x.k.c.d.",
+ DNS_DB_NSEC_NSEC3, ISC_R_NOTFOUND, 6 },
+
+ { "b.d.", DNS_DB_NSEC_NORMAL, "c.b.b.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 39 },
+ { "b.d.", DNS_DB_NSEC_NSEC, "c.b.b.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 24 },
+ { "b.d.", DNS_DB_NSEC_NSEC3, "c.b.b.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 9 },
+
+ { "mon.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 35 },
+ { "mon.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 20 },
+ { "mon.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 5 },
+
+ { "moor.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 30 },
+ { "moor.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 15 },
+ { "moor.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+
+ { "mopbop.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 30 },
+ { "mopbop.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 15 },
+ { "mopbop.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+
+ { "moppop.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 30 },
+ { "moppop.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 15 },
+ { "moppop.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+
+ { "mopps.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 30 },
+ { "mopps.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 15 },
+ { "mopps.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+
+ { "mopzop.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 30 },
+ { "mopzop.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 15 },
+ { "mopzop.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+
+ { "mop.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 30 },
+ { "mop.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 15 },
+ { "mop.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+
+ { "monbop.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 35 },
+ { "monbop.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 20 },
+ { "monbop.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 5 },
+
+ { "monpop.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 35 },
+ { "monpop.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 20 },
+ { "monpop.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 5 },
+
+ { "monps.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 35 },
+ { "monps.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 20 },
+ { "monps.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 5 },
+
+ { "monzop.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 35 },
+ { "monzop.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 20 },
+ { "monzop.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 5 },
+
+ { "mon.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 35 },
+ { "mon.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 20 },
+ { "mon.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 5 },
+
+ { "moop.", DNS_DB_NSEC_NORMAL, "moon.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 31 },
+ { "moop.", DNS_DB_NSEC_NSEC, "moon.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 16 },
+ { "moop.", DNS_DB_NSEC_NSEC3, "moon.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 1 },
+
+ { "moopser.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 30 },
+ { "moopser.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 15 },
+ { "moopser.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+
+ { "monky.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 35 },
+ { "monky.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 20 },
+ { "monky.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 5 },
+
+ { "monkey.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 35 },
+ { "monkey.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 20 },
+ { "monkey.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 5 },
+
+ { "monker.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 35 },
+ { "monker.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 20 },
+ { "monker.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 5 },
+
+ { NULL, 0, NULL, 0, 0, 0 }
};
check_predecessors(qp, check1);
/* second check: add a root label and try again */
const char root[16] = ".";
- insert_str(qp, root);
+ insert_name(qp, root, DNS_DB_NSEC_NORMAL);
+ insert_name(qp, root, DNS_DB_NSEC_NSEC);
+ insert_name(qp, root, DNS_DB_NSEC_NSEC3);
+ i++;
static struct check_predecessors check2[] = {
- { ".", "moops.", ISC_R_SUCCESS, 0 },
- { "a.", ".", ISC_R_SUCCESS, 15 },
- { "b.a.", "a.", ISC_R_SUCCESS, 14 },
- { "b.", "e.d.c.b.a.", ISC_R_SUCCESS, 11 },
- { "aaa.a.", "a.", DNS_R_PARTIALMATCH, 14 },
- { "ddd.a.", "e.d.c.b.a.", DNS_R_PARTIALMATCH, 11 },
- { "d.c.", "c.b.b.", DNS_R_PARTIALMATCH, 9 },
- { "1.2.c.b.a.", "c.b.a.", DNS_R_PARTIALMATCH, 12 },
- { "a.b.c.e.f.", "a.b.c.d.e.", DNS_R_PARTIALMATCH, 5 },
- { "z.y.x.", "moops.", DNS_R_PARTIALMATCH, 0 },
- { "w.c.d.", "x.k.c.d.", DNS_R_PARTIALMATCH, 6 },
- { "z.z.z.z.k.c.d.", "x.k.c.d.", DNS_R_PARTIALMATCH, 6 },
- { "w.k.c.d.", "a.b.c.d.", DNS_R_PARTIALMATCH, 7 },
- { "d.a.", "e.d.c.b.a.", DNS_R_PARTIALMATCH, 11 },
- { "0.b.c.d.e.", "x.k.c.d.", DNS_R_PARTIALMATCH, 6 },
- { "mon.", "a.b.c.d.e.", DNS_R_PARTIALMATCH, 5 },
- { "moor.", "moops.", DNS_R_PARTIALMATCH, 0 },
- { "mopbop.", "moops.", DNS_R_PARTIALMATCH, 0 },
- { "moppop.", "moops.", DNS_R_PARTIALMATCH, 0 },
- { "mopps.", "moops.", DNS_R_PARTIALMATCH, 0 },
- { "mopzop.", "moops.", DNS_R_PARTIALMATCH, 0 },
- { "mop.", "moops.", DNS_R_PARTIALMATCH, 0 },
- { "monbop.", "a.b.c.d.e.", DNS_R_PARTIALMATCH, 5 },
- { "monpop.", "a.b.c.d.e.", DNS_R_PARTIALMATCH, 5 },
- { "monps.", "a.b.c.d.e.", DNS_R_PARTIALMATCH, 5 },
- { "monzop.", "a.b.c.d.e.", DNS_R_PARTIALMATCH, 5 },
- { "mon.", "a.b.c.d.e.", DNS_R_PARTIALMATCH, 5 },
- { "moop.", "moon.", DNS_R_PARTIALMATCH, 1 },
- { "moopser.", "moops.", DNS_R_PARTIALMATCH, 0 },
- { "monky.", "a.b.c.d.e.", DNS_R_PARTIALMATCH, 5 },
- { "monkey.", "a.b.c.d.e.", DNS_R_PARTIALMATCH, 5 },
- { "monker.", "a.b.c.d.e.", DNS_R_PARTIALMATCH, 5 },
- { NULL, NULL, 0, 0 }
+ { ".", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NSEC3,
+ ISC_R_SUCCESS, 0 },
+ { ".", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS, 32 },
+ { ".", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC,
+ ISC_R_SUCCESS, 16 },
+
+ { "a.", DNS_DB_NSEC_NORMAL, ".", DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS, 47 },
+ { "a.", DNS_DB_NSEC_NSEC, ".", DNS_DB_NSEC_NSEC, ISC_R_SUCCESS,
+ 31 },
+ { "a.", DNS_DB_NSEC_NSEC3, ".", DNS_DB_NSEC_NSEC3,
+ ISC_R_SUCCESS, 15 },
+
+ { "b.a.", DNS_DB_NSEC_NORMAL, "a.", DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS, 46 },
+ { "b.a.", DNS_DB_NSEC_NSEC, "a.", DNS_DB_NSEC_NSEC,
+ ISC_R_SUCCESS, 30 },
+ { "b.a.", DNS_DB_NSEC_NSEC3, "a.", DNS_DB_NSEC_NSEC3,
+ ISC_R_SUCCESS, 14 },
+
+ { "b.", DNS_DB_NSEC_NORMAL, "e.d.c.b.a.", DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS, 43 },
+ { "b.", DNS_DB_NSEC_NSEC, "e.d.c.b.a.", DNS_DB_NSEC_NSEC,
+ ISC_R_SUCCESS, 27 },
+ { "b.", DNS_DB_NSEC_NSEC3, "e.d.c.b.a.", DNS_DB_NSEC_NSEC3,
+ ISC_R_SUCCESS, 11 },
+
+ { "aaa.a.", DNS_DB_NSEC_NORMAL, "a.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 46 },
+ { "aaa.a.", DNS_DB_NSEC_NSEC, "a.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 30 },
+ { "aaa.a.", DNS_DB_NSEC_NSEC3, "a.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 14 },
+
+ { "ddd.a.", DNS_DB_NSEC_NORMAL, "e.d.c.b.a.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 43 },
+ { "ddd.a.", DNS_DB_NSEC_NSEC, "e.d.c.b.a.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 27 },
+ { "ddd.a.", DNS_DB_NSEC_NSEC3, "e.d.c.b.a.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 11 },
+
+ { "d.c.", DNS_DB_NSEC_NORMAL, "c.b.b.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 41 },
+ { "d.c.", DNS_DB_NSEC_NSEC, "c.b.b.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 25 },
+ { "d.c.", DNS_DB_NSEC_NSEC3, "c.b.b.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 9 },
+
+ { "1.2.c.b.a.", DNS_DB_NSEC_NORMAL, "c.b.a.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 44 },
+ { "1.2.c.b.a.", DNS_DB_NSEC_NSEC, "c.b.a.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 28 },
+ { "1.2.c.b.a.", DNS_DB_NSEC_NSEC3, "c.b.a.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 12 },
+
+ { "a.b.c.e.f.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 37 },
+ { "a.b.c.e.f.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.",
+ DNS_DB_NSEC_NSEC, DNS_R_PARTIALMATCH, 21 },
+ { "a.b.c.e.f.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.",
+ DNS_DB_NSEC_NSEC3, DNS_R_PARTIALMATCH, 5 },
+
+ { "z.y.x.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 32 },
+ { "z.y.x.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 16 },
+ { "z.y.x.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "w.c.d.", DNS_DB_NSEC_NORMAL, "x.k.c.d.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 38 },
+ { "w.c.d.", DNS_DB_NSEC_NSEC, "x.k.c.d.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 22 },
+ { "w.c.d.", DNS_DB_NSEC_NSEC3, "x.k.c.d.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 6 },
+
+ { "z.z.z.z.k.c.d.", DNS_DB_NSEC_NORMAL, "x.k.c.d.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 38 },
+ { "z.z.z.z.k.c.d.", DNS_DB_NSEC_NSEC, "x.k.c.d.",
+ DNS_DB_NSEC_NSEC, DNS_R_PARTIALMATCH, 22 },
+ { "z.z.z.z.k.c.d.", DNS_DB_NSEC_NSEC3, "x.k.c.d.",
+ DNS_DB_NSEC_NSEC3, DNS_R_PARTIALMATCH, 6 },
+
+ { "w.k.c.d.", DNS_DB_NSEC_NORMAL, "a.b.c.d.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 39 },
+ { "w.k.c.d.", DNS_DB_NSEC_NSEC, "a.b.c.d.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 23 },
+ { "w.k.c.d.", DNS_DB_NSEC_NSEC3, "a.b.c.d.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 7 },
+
+ { "d.a.", DNS_DB_NSEC_NORMAL, "e.d.c.b.a.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 43 },
+ { "d.a.", DNS_DB_NSEC_NSEC, "e.d.c.b.a.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 27 },
+ { "d.a.", DNS_DB_NSEC_NSEC3, "e.d.c.b.a.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 11 },
+
+ { "0.b.c.d.e.", DNS_DB_NSEC_NORMAL, "x.k.c.d.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 38 },
+ { "0.b.c.d.e.", DNS_DB_NSEC_NSEC, "x.k.c.d.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 22 },
+ { "0.b.c.d.e.", DNS_DB_NSEC_NSEC3, "x.k.c.d.",
+ DNS_DB_NSEC_NSEC3, DNS_R_PARTIALMATCH, 6 },
+
+ { "b.d.", DNS_DB_NSEC_NORMAL, "c.b.b.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 41 },
+ { "b.d.", DNS_DB_NSEC_NSEC, "c.b.b.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 25 },
+ { "b.d.", DNS_DB_NSEC_NSEC3, "c.b.b.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 9 },
+
+ { "mon.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 37 },
+ { "mon.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 21 },
+ { "mon.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 5 },
+
+ { "moor.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 32 },
+ { "moor.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 16 },
+ { "moor.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "mopbop.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 32 },
+ { "mopbop.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 16 },
+ { "mopbop.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "moppop.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 32 },
+ { "moppop.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 16 },
+ { "moppop.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "mopps.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 32 },
+ { "mopps.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 16 },
+ { "mopps.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "mopzop.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 32 },
+ { "mopzop.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 16 },
+ { "mopzop.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "mop.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 32 },
+ { "mop.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 16 },
+ { "mop.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "monbop.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 37 },
+ { "monbop.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 21 },
+ { "monbop.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 5 },
+
+ { "monpop.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 37 },
+ { "monpop.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 21 },
+ { "monpop.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 5 },
+
+ { "monps.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 37 },
+ { "monps.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 21 },
+ { "monps.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 5 },
+
+ { "monzop.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 37 },
+ { "monzop.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 21 },
+ { "monzop.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 5 },
+
+ { "mon.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 37 },
+ { "mon.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 21 },
+ { "mon.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 5 },
+
+ { "moop.", DNS_DB_NSEC_NORMAL, "moon.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 33 },
+ { "moop.", DNS_DB_NSEC_NSEC, "moon.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 17 },
+ { "moop.", DNS_DB_NSEC_NSEC3, "moon.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 1 },
+
+ { "moopser.", DNS_DB_NSEC_NORMAL, "moops.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 32 },
+ { "moopser.", DNS_DB_NSEC_NSEC, "moops.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 16 },
+ { "moopser.", DNS_DB_NSEC_NSEC3, "moops.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "monky.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 37 },
+ { "monky.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 21 },
+ { "monky.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 5 },
+
+ { "monkey.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 37 },
+ { "monkey.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 21 },
+ { "monkey.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 5 },
+
+ { "monker.", DNS_DB_NSEC_NORMAL, "a.b.c.d.e.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 37 },
+ { "monker.", DNS_DB_NSEC_NSEC, "a.b.c.d.e.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 21 },
+ { "monker.", DNS_DB_NSEC_NSEC3, "a.b.c.d.e.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 5 },
+
+ { NULL, 0, NULL, 0, 0, 0 }
};
check_predecessors(qp, check2);
dns_qp_create(mctx, &string_methods, NULL, &qp);
while (insert1[i][0] != '\0') {
- insert_str(qp, insert1[i++]);
+ insert_name(qp, insert1[i], DNS_DB_NSEC_NORMAL);
+ insert_name(qp, insert1[i], DNS_DB_NSEC_NSEC);
+ insert_name(qp, insert1[i], DNS_DB_NSEC_NSEC3);
+ i++;
}
static struct check_predecessors check1[] = {
- { "newtext.dynamic.", "mx.dynamic.", DNS_R_PARTIALMATCH, 7 },
- { "nsd.dynamic.", "ns.dynamic.", DNS_R_PARTIALMATCH, 6 },
- { "nsf.dynamic.", "nsec.dynamic.", DNS_R_PARTIALMATCH, 5 },
- { "d.", "trailing.", ISC_R_NOTFOUND, 0 },
- { "absent.", "trailing.", ISC_R_NOTFOUND, 0 },
- { "nonexistent.", "txt.dynamic.", ISC_R_NOTFOUND, 1 },
- { "wayback.", "trailing.", ISC_R_NOTFOUND, 0 },
- { NULL, NULL, 0, 0 }
+ { "newtext.dynamic.", DNS_DB_NSEC_NORMAL, "mx.dynamic.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 41 },
+ { "newtext.dynamic.", DNS_DB_NSEC_NSEC, "mx.dynamic.",
+ DNS_DB_NSEC_NSEC, DNS_R_PARTIALMATCH, 24 },
+ { "newtext.dynamic.", DNS_DB_NSEC_NSEC3, "mx.dynamic.",
+ DNS_DB_NSEC_NSEC3, DNS_R_PARTIALMATCH, 7 },
+
+ { "nsd.dynamic.", DNS_DB_NSEC_NORMAL, "ns.dynamic.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 40 },
+ { "nsd.dynamic.", DNS_DB_NSEC_NSEC, "ns.dynamic.",
+ DNS_DB_NSEC_NSEC, DNS_R_PARTIALMATCH, 23 },
+ { "nsd.dynamic.", DNS_DB_NSEC_NSEC3, "ns.dynamic.",
+ DNS_DB_NSEC_NSEC3, DNS_R_PARTIALMATCH, 6 },
+
+ { "nsf.dynamic.", DNS_DB_NSEC_NORMAL, "nsec.dynamic.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 39 },
+ { "nsf.dynamic.", DNS_DB_NSEC_NSEC, "nsec.dynamic.",
+ DNS_DB_NSEC_NSEC, DNS_R_PARTIALMATCH, 22 },
+ { "nsf.dynamic.", DNS_DB_NSEC_NSEC3, "nsec.dynamic.",
+ DNS_DB_NSEC_NSEC3, DNS_R_PARTIALMATCH, 5 },
+
+ { "d.", DNS_DB_NSEC_NORMAL, "trailing.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+ { "d.", DNS_DB_NSEC_NSEC, "trailing.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 34 },
+ { "d.", DNS_DB_NSEC_NSEC3, "trailing.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 17 },
+
+ { "absent.", DNS_DB_NSEC_NORMAL, "trailing.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+ { "absent.", DNS_DB_NSEC_NSEC, "trailing.", DNS_DB_NSEC_NORMAL,
+ ISC_R_NOTFOUND, 34 },
+ { "absent.", DNS_DB_NSEC_NSEC3, "trailing.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 17 },
+
+ { "nonexistent.", DNS_DB_NSEC_NORMAL, "txt.dynamic.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 35 },
+ { "nonexistent.", DNS_DB_NSEC_NSEC, "txt.dynamic.",
+ DNS_DB_NSEC_NSEC, ISC_R_NOTFOUND, 18 },
+ { "nonexistent.", DNS_DB_NSEC_NSEC3, "txt.dynamic.",
+ DNS_DB_NSEC_NSEC3, ISC_R_NOTFOUND, 1 },
+
+ { "wayback.", DNS_DB_NSEC_NORMAL, "trailing.",
+ DNS_DB_NSEC_NORMAL, ISC_R_NOTFOUND, 34 },
+ { "wayback.", DNS_DB_NSEC_NSEC, "trailing.", DNS_DB_NSEC_NSEC,
+ ISC_R_NOTFOUND, 17 },
+ { "wayback.", DNS_DB_NSEC_NSEC3, "trailing.", DNS_DB_NSEC_NSEC3,
+ ISC_R_NOTFOUND, 0 },
+
+ { NULL, 0, NULL, 0, 0, 0 }
};
check_predecessors(qp, check1);
dns_qp_create(mctx, &string_methods, NULL, &qp);
while (insert2[i][0] != '\0') {
- insert_str(qp, insert2[i++]);
+ insert_name(qp, insert2[i], DNS_DB_NSEC_NORMAL);
+ insert_name(qp, insert2[i], DNS_DB_NSEC_NSEC);
+ insert_name(qp, insert2[i], DNS_DB_NSEC_NSEC3);
+ i++;
}
static struct check_predecessors check2[] = {
- { "acb.", "abc.", DNS_R_PARTIALMATCH, 0 },
- { "acc.", "abc.", DNS_R_PARTIALMATCH, 0 },
- { "abbb.", "abb.", DNS_R_PARTIALMATCH, 1 },
- { "aab.", ".", DNS_R_PARTIALMATCH, 2 },
- { NULL, NULL, 0, 0 }
+ { "acb.", DNS_DB_NSEC_NORMAL, "abc.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 6 },
+ { "acb.", DNS_DB_NSEC_NSEC, "abc.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 3 },
+ { "acb.", DNS_DB_NSEC_NSEC3, "abc.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "acc.", DNS_DB_NSEC_NORMAL, "abc.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 6 },
+ { "acc.", DNS_DB_NSEC_NSEC, "abc.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 3 },
+ { "acc.", DNS_DB_NSEC_NSEC3, "abc.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "abbb.", DNS_DB_NSEC_NORMAL, "abb.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 7 },
+ { "abbb.", DNS_DB_NSEC_NSEC, "abb.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 4 },
+ { "abbb.", DNS_DB_NSEC_NSEC3, "abb.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 1 },
+
+ { "aab.", DNS_DB_NSEC_NORMAL, ".", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 8 },
+ { "aab.", DNS_DB_NSEC_NSEC, ".", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 5 },
+ { "aab.", DNS_DB_NSEC_NSEC3, ".", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 2 },
+
+ { NULL, 0, NULL, 0, 0, 0 }
};
check_predecessors(qp, check2);
dns_qp_create(mctx, &string_methods, NULL, &qp);
while (insert3[i][0] != '\0') {
- insert_str(qp, insert3[i++]);
+ insert_name(qp, insert3[i], DNS_DB_NSEC_NORMAL);
+ insert_name(qp, insert3[i], DNS_DB_NSEC_NSEC);
+ insert_name(qp, insert3[i], DNS_DB_NSEC_NSEC3);
+ i++;
}
- static struct check_predecessors check3[] = { { "key-is-21556.example.",
- "key-is-14779.example.",
- DNS_R_PARTIALMATCH, 2 },
- { NULL, NULL, 0, 0 } };
+ static struct check_predecessors check3[] = {
+ { "key-is-21556.example.", DNS_DB_NSEC_NORMAL,
+ "key-is-14779.example.", DNS_DB_NSEC_NORMAL,
+ DNS_R_PARTIALMATCH, 12 },
+ { "key-is-21556.example.", DNS_DB_NSEC_NSEC,
+ "key-is-14779.example.", DNS_DB_NSEC_NSEC, DNS_R_PARTIALMATCH,
+ 7 },
+ { "key-is-21556.example.", DNS_DB_NSEC_NSEC3,
+ "key-is-14779.example.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 2 },
+ { NULL, 0, NULL, 0, 0, 0 }
+ };
check_predecessors(qp, check3);
dns_qp_destroy(&qp);
dns_qp_create(mctx, &string_methods, NULL, &qp);
while (insert4[i][0] != '\0') {
- insert_str(qp, insert4[i++]);
+ insert_name(qp, insert4[i], DNS_DB_NSEC_NORMAL);
+ insert_name(qp, insert4[i], DNS_DB_NSEC_NSEC);
+ insert_name(qp, insert4[i], DNS_DB_NSEC_NSEC3);
+ i++;
}
static struct check_predecessors check4[] = {
- { "\\007.", "\\000\\009.", DNS_R_PARTIALMATCH, 0 },
- { "\\009.", "\\000\\009.", DNS_R_PARTIALMATCH, 0 },
- { "\\045.", "\\000\\009.", DNS_R_PARTIALMATCH, 0 },
- { "\\044.", "\\000\\009.", DNS_R_PARTIALMATCH, 0 },
- { "\\000.", ".", ISC_R_SUCCESS, 3 },
- { NULL, NULL, 0, 0 },
+ { "\\007.", DNS_DB_NSEC_NORMAL, "\\000\\009.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 8 },
+ { "\\007.", DNS_DB_NSEC_NSEC, "\\000\\009.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 4 },
+ { "\\007.", DNS_DB_NSEC_NSEC3, "\\000\\009.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "\\009.", DNS_DB_NSEC_NORMAL, "\\000\\009.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 8 },
+ { "\\009.", DNS_DB_NSEC_NSEC, "\\000\\009.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 4 },
+ { "\\009.", DNS_DB_NSEC_NSEC3, "\\000\\009.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "\\045.", DNS_DB_NSEC_NORMAL, "\\000\\009.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 8 },
+ { "\\045.", DNS_DB_NSEC_NSEC, "\\000\\009.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 4 },
+ { "\\045.", DNS_DB_NSEC_NSEC3, "\\000\\009.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "\\044.", DNS_DB_NSEC_NORMAL, "\\000\\009.",
+ DNS_DB_NSEC_NORMAL, DNS_R_PARTIALMATCH, 8 },
+ { "\\044.", DNS_DB_NSEC_NSEC, "\\000\\009.", DNS_DB_NSEC_NSEC,
+ DNS_R_PARTIALMATCH, 4 },
+ { "\\044.", DNS_DB_NSEC_NSEC3, "\\000\\009.", DNS_DB_NSEC_NSEC3,
+ DNS_R_PARTIALMATCH, 0 },
+
+ { "\\000.", DNS_DB_NSEC_NORMAL, ".", DNS_DB_NSEC_NORMAL,
+ ISC_R_SUCCESS, 11 },
+ { "\\000.", DNS_DB_NSEC_NSEC, ".", DNS_DB_NSEC_NSEC,
+ ISC_R_SUCCESS, 7 },
+ { "\\000.", DNS_DB_NSEC_NSEC3, ".", DNS_DB_NSEC_NSEC3,
+ ISC_R_SUCCESS, 3 },
+
+ { NULL, 0, NULL, 0, 0, 0 },
};
check_predecessors(qp, check4);