With "authoritative forwarding" it could happen that NS selection
decided to resolve the virtual ns.invalid name of the NS to get
either A or AAAA (if either was missing in the forwarding rule).
struct kr_zonecut *parent;
trie_t *nsset;
knot_mm_t *pool;
+ _Bool avoid_resolving;
};
typedef struct {
struct kr_query **at;
struct kr_zonecut *parent;
trie_t *nsset;
knot_mm_t *pool;
+ _Bool avoid_resolving;
};
typedef struct {
struct kr_query **at;
struct kr_zonecut *parent;
trie_t *nsset;
knot_mm_t *pool;
+ _Bool avoid_resolving;
};
typedef struct {
struct kr_query **at;
labels > qry->data_src.rule_depth;
--labels, apex = knot_wire_next_label(apex, NULL));
kr_zonecut_set(&qry->zone_cut, apex);
+ qry->zone_cut.avoid_resolving = true;
knot_db_val_t targets = qry->data_src.targets_ptr;
kr_assert(targets.len > 0);
while (targets.len > 0) {
if (qry->sname[0] == '\0' && qry->stype == KNOT_RRTYPE_DNSKEY) {
return 0;
}
+ if (qry->zone_cut.avoid_resolving) {
+ return 0;
+ }
unsigned count = 0;
trie_it_t *it;
struct kr_zonecut *parent; /**< Parent zone cut. */
trie_t *nsset; /**< Map of nameserver => address_set (pack_t). */
knot_mm_t *pool; /**< Memory pool. */
+ bool avoid_resolving; /**< Avoid resolving the NS names. */
};
/**