Lines Matching +defs:node +defs:o
173 auth_packed_rrset_copy_region(struct auth_zone* z, struct auth_data* node,
180 key.rk.dname = node->name;
181 key.rk.dname_len = node->namelen;
225 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
229 if(!rrset || !node)
231 if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type,
239 auth_packed_rrset_copy_region(z, node, rrset, region, 0)))
250 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
253 if(!rrset || !node)
255 if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type,
263 auth_packed_rrset_copy_region(z, node, rrset, region, 0)))
274 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
276 if(!rrset || !node)
278 if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type,
286 auth_packed_rrset_copy_region(z, node, rrset, region, 0)))
356 /** delete auth rrset node */
365 /** delete auth data domain node */
423 z->node.key = z;
439 if(!rbtree_insert(&az->ztree, &z->node)) {
453 key.node.key = &key;
466 key.node.key = &key;
480 key.node.key = &key;
595 n->node.key = n;
603 if(!rbtree_insert(&z->data, &n->node)) {
617 key.node.key = &key;
627 struct auth_data** node)
630 key.node.key = &key;
635 (rbnode_type**)node);
667 domain_remove_rrset(struct auth_data* node, uint16_t rr_type)
670 if(!node) return;
672 rrset = node->rrsets;
677 else node->rrsets = rrset->next;
863 /** Create new rrset for node with packed rrset with one RR element */
865 rrset_create(struct auth_data* node, uint16_t rr_type, uint32_t rr_ttl,
904 p = node->rrsets;
912 else node->rrsets = rrset;
936 rrset_moveover_rrsigs(struct auth_data* node, uint16_t rr_type,
1012 domain_remove_rrset(node, LDNS_RR_TYPE_RRSIG);
1022 * node->rrset structure */
1095 /** Add rr to node, ignores duplicate RRs,
1098 az_domain_add_rr(struct auth_data* node, uint16_t rr_type, uint32_t rr_ttl,
1105 if((rrset=az_domain_rrset(node, ctype))!= NULL) {
1106 /* a node of the correct type exists, add the RRSIG
1114 } else if((rrset=az_domain_rrset(node, rr_type))!= NULL) {
1124 if(!rrset_create(node, rr_type, rr_ttl, rdata,
1130 if((rrset=az_domain_rrset(node, rr_type))!= NULL) {
1131 /* add data to existing node with data type */
1140 /* create new node with data type */
1141 if(!(rrset=rrset_create(node, rr_type, rr_ttl, rdata,
1145 /* see if node of type RRSIG has signatures that
1148 if((rrsig=az_domain_rrset(node, LDNS_RR_TYPE_RRSIG))
1150 if(!rrset_moveover_rrsigs(node, rr_type,
1164 struct auth_data* node;
1178 if(!(node=az_domain_find_or_create(z, dname, dname_len))) {
1182 if(!az_domain_add_rr(node, rr_type, rr_ttl, rdata, rdatalen,
1196 /** Remove rr from node, ignores nonexisting RRs,
1199 az_domain_remove_rr(struct auth_data* node, uint16_t rr_type,
1206 if((rrset=az_domain_rrset(node, rr_type))!= NULL) {
1211 domain_remove_rrset(node, rr_type);
1217 node, LDNS_RR_TYPE_RRSIG);
1224 domain_remove_rrset(node, rr_type);
1248 if((rrset=az_domain_rrset(node, ctype))!= NULL) {
1273 struct auth_data* node;
1290 node = az_find_name(z, dname, dname_len);
1291 if(!node) {
1292 /* node with that name does not exist */
1297 if(!az_domain_remove_rr(node, rr_type, rdata, rdatalen, nonexist)) {
1301 /* remove the node, if necessary */
1304 if(node->rrsets == NULL) {
1305 (void)rbtree_delete(&z->data, node);
1306 auth_data_delete(node);
1688 auth_zone_write_rrset(struct auth_zone* z, struct auth_data* node,
1694 if(!auth_rr_to_string(node->name, node->namelen, r->type,
2235 (void)rbtree_delete(&az->xtree, &xfr->node);
2238 (void)rbtree_delete(&az->ztree, &z->node);
2415 struct auth_data* node;
2418 while((node=az_find_wildcard_domain(z, nm, nmlen))==NULL) {
2428 return node;
2472 * return true if the node (param node) is existing, nonobscured and
2474 * returns false if the node is not good enough (or it wasn't node_exact)
2484 struct auth_data* node, int node_exact, struct auth_data** ce,
2487 struct auth_data* n = node;
2495 /* if exact, the node itself is the first candidate ce */
2539 /* found no problems, if it was an exact node, it is fine to use */
2612 * not NS, or DNAME above, so that we only need to check if some node
2616 struct auth_data* node)
2619 if(!node) {
2620 /* no smaller was found, use first (smallest) node as the
2624 next = (struct auth_data*)rbtree_next(&node->node);
2629 next = (struct auth_data*)rbtree_next(&node->node);
2632 /* there is no next node, so something below it cannot
2636 /* a next node exists, if there was something below the query,
2637 * this node has to be it. See if it is below the query name */
2664 struct auth_data* node, struct auth_rrset* dname, uint16_t dclass,
2683 if(qname_len <= node->namelen)
2687 newlen = synth_cname_buf(qname, qname_len, node->namelen,
2779 az_find_nsec_cover(struct auth_zone* z, struct auth_data** node)
2781 uint8_t* nm = (*node)->name;
2782 size_t nmlen = (*node)->namelen;
2784 /* find the NSEC for the smallest-or-equal node */
2785 /* if node == NULL, we did not find a smaller name. But the zone
2788 /* for empty nonterminals, the auth-data node should not exist,
2791 /* but there could be glue, and if this is node, then it has no NSEC.
2793 while((rrset=az_domain_rrset(*node, LDNS_RR_TYPE_NSEC)) == NULL) {
2797 /* adjust *node for the nsec rrset to find in */
2798 *node = az_find_name(z, nm, nmlen);
2810 struct auth_data* node;
2825 az_find_domain(z, &qinfo, &node_exact, &node);
2826 if((nsec=az_find_nsec_cover(z, &node)) != NULL) {
2827 if(!msg_add_rrset_ns(z, region, msg, node, nsec)) return 0;
2935 struct auth_data* node;
2943 az_find_domain(z, &qinfo, &node_exact, &node);
2947 while(node && (rbnode_type*)node != RBTREE_NULL &&
2948 !az_domain_rrset(node, LDNS_RR_TYPE_NSEC3)) {
2949 node = (struct auth_data*)rbtree_previous(&node->node);
2951 if((rbnode_type*)node == RBTREE_NULL)
2952 node = NULL;
2953 return node;
2961 struct auth_data* node;
2967 node = az_nsec3_findnode(z, hname, hlen);
2968 if(node)
2969 return node;
2972 node = (struct auth_data*)rbtree_last(&z->data);
2973 while(node && (rbnode_type*)node != RBTREE_NULL &&
2974 !az_domain_rrset(node, LDNS_RR_TYPE_NSEC3)) {
2975 node = (struct auth_data*)rbtree_previous(&node->node);
2977 if((rbnode_type*)node == RBTREE_NULL)
2978 node = NULL;
2979 return node;
2987 struct auth_data* node;
2993 node = az_find_name(z, hname, hlen);
2994 if(az_domain_rrset(node, LDNS_RR_TYPE_NSEC3))
2995 return node;
3021 struct auth_data* node;
3022 while((node = az_nsec3_find_exact(z, *cenm, *cenmlen,
3031 return node;
3037 struct dns_msg* msg, struct auth_data* node)
3040 if(!node) return 1; /* no node, skip this */
3041 nsec3 = az_domain_rrset(node, LDNS_RR_TYPE_NSEC3);
3043 if(!msg_add_rrset_ns(z, region, msg, node, nsec3)) return 0;
3071 struct auth_data* node;
3077 /* see if the node has a hash of itself for the nodata
3091 node = az_nsec3_find_ce(z, &cenm, &cenmlen, &no_exact_ce,
3094 if(!az_nsec3_insert(z, region, msg, node))
3104 node = az_nsec3_find_cover(z, nx, nxlen, algo, iter, salt,
3106 if(!az_nsec3_insert(z, region, msg, node))
3120 node = az_nsec3_find_cover(z, wc, wclen, algo, iter, salt,
3122 if(!az_nsec3_insert(z, region, msg, node))
3131 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
3133 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3151 struct dns_msg* msg, struct auth_data* node)
3156 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_SOA)) != NULL) {
3157 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3160 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_MX)) != NULL) {
3161 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3164 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_A)) != NULL) {
3165 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3168 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_AAAA)) != NULL) {
3169 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3172 if(added == 0 && node && node->rrsets) {
3173 if(!msg_add_rrset_an(z, region, msg, node,
3174 node->rrsets)) return 0;
3188 struct auth_data* node;
3198 if((node = az_find_name(z, d->rr_data[0]+2, clen))==NULL)
3200 if((rrset=az_domain_rrset(node, qtype))!=NULL) {
3202 if(!msg_add_rrset_an(z, region, msg, node, rrset))
3206 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_CNAME))==NULL)
3208 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3218 struct auth_data* node, struct auth_rrset* rrset)
3220 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3230 struct dns_msg* msg, struct auth_data* node)
3235 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_NSEC))!=NULL) {
3236 if(!msg_add_rrset_ns(z, region, msg, node, rrset)) return 0;
3237 } else if(node) {
3239 if(!az_add_nsec3_proof(z, region, msg, node->name,
3240 node->namelen, msg->qinfo.qname,
3304 struct auth_data* wildcard, struct auth_data* node)
3324 /* add ANY rrsets from wildcard node */
3340 /* ce and node for dnssec denial of wildcard original name */
3341 if((nsec=az_find_nsec_cover(z, &node)) != NULL) {
3342 if(!msg_add_rrset_ns(z, region, msg, node, nsec)) return 0;
3363 struct dns_msg* msg, struct auth_data* ce, struct auth_data* node)
3368 if((nsec=az_find_nsec_cover(z, &node)) != NULL) {
3369 if(!msg_add_rrset_ns(z, region, msg, node, nsec)) return 0;
3384 struct regional* region, struct dns_msg* msg, struct auth_data* node)
3388 if((rrset=az_domain_rrset(node, qinfo->qtype)) != NULL) {
3389 return az_generate_positive_answer(z, region, msg, node, rrset);
3392 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_CNAME)) != NULL) {
3394 node, rrset);
3398 return az_generate_any_answer(z, region, msg, node);
3401 return az_generate_notype_answer(z, region, msg, node);
3404 /** Generate answer without an existing-node that we can use.
3409 struct auth_rrset* rrset, struct auth_data* node)
3424 if(az_empty_nonterminal(z, qinfo, node)) {
3425 return az_generate_notype_answer(z, region, msg, node);
3430 ce, wildcard, node);
3433 return az_generate_nxdomain_answer(z, region, msg, ce, node);
3441 struct auth_data* node, *ce;
3449 az_find_domain(z, qinfo, &node_exact, &node);
3451 /* see if node exists for generating answers from (i.e. not glue and
3453 * closest-encloser from that, closest node that should be used
3455 node_exists = az_find_ce(z, qinfo, node, node_exact, &ce, &rrset);
3465 if(node)
3466 sldns_wire2str_dname_buf(node->name, node->namelen,
3483 /* the node is fine, generate answer from node */
3485 node);
3488 ce, rrset, node);
3960 auth_master_copy(struct auth_master* o)
3963 if(!o) return NULL;
3964 m = (struct auth_master*)memdup(o, sizeof(*o));
7070 xfr->node.key = xfr;
7142 (void)rbtree_insert(&az->xtree, &xfr->node);
7419 /** add rrsets from node to the list */
7455 size_t arraysize, size_t* rrnum, struct auth_data* node)
7457 if(az_domain_rrset(node, LDNS_RR_TYPE_RRSIG))
7467 struct secalgo_hash* h, struct auth_data* node,
7476 key.rk.dname = node->name;
7477 key.rk.dname_len = node->namelen;
7497 struct auth_zone* z, struct auth_data* node)
7506 query_dname_compare(z->name, node->name)==0) {
7515 query_dname_compare(z->name, node->name)==0) {
7546 struct auth_zone* z, struct auth_data* node)
7554 query_dname_compare(z->name, node->name)==0) {
7572 struct auth_zone* z, struct auth_data* node)
7580 query_dname_compare(z->name, node->name)==0) {
7597 struct secalgo_hash* h, struct auth_data* node,
7609 * the domain node. We need to collate the rrset's data, if any, and
7620 key.rk.dname = node->name;
7621 key.rk.dname_len = node->namelen;
7624 data.count = zonemd_simple_count_rrsig(rrset, rrlist, rrnum, z, node);
7630 /* all the RRSIGs stored in the other rrsets for this domain node */
7631 add_rrlist_rrsigs_into_data(&data, &done, rrlist, rrnum, z, node);
7632 /* plus the RRSIGs stored in an rrset of type RRSIG for this node */
7633 add_rrset_into_data(&data, &done, rrset, z, node);
7653 struct secalgo_hash* h, struct auth_data* node,
7661 if(!dname_subdomain_c(node->name, z->name))
7664 rrnum = authdata_rrsets_to_list(rrlist, rrlistsize, node->rrsets);
7665 addrrsigtype_if_needed(rrlist, rrlistsize, &rrnum, node);
7669 query_dname_compare(z->name, node->name) == 0) {
7675 if(!zonemd_simple_rrsig(z, hashalgo, h, node,
7678 } else if(!zonemd_simple_rrset(z, hashalgo, h, node,
7803 struct ub_packed_rrset_key* dnskey, struct auth_data* node,
7823 pk.rk.dname = node->name;
7824 pk.rk.dname_len = node->namelen;
8555 key.node.key = &key;