Lines Matching refs:rrset
298 rrset_delete(namedb_type* db, domain_type* domain, rrset_type* rrset) in rrset_delete() argument
303 while(*pp && *pp != rrset) { in rrset_delete()
310 *pp = rrset->next; in rrset_delete()
314 rrtype_to_string(rrset_rrtype(rrset)))); in rrset_delete()
317 if(rrset->zone->soa_rrset == rrset) { in rrset_delete()
318 rrset->zone->soa_rrset = 0; in rrset_delete()
320 if(rrset->zone->ns_rrset == rrset) { in rrset_delete()
321 rrset->zone->ns_rrset = 0; in rrset_delete()
323 if(domain == rrset->zone->apex && rrset_rrtype(rrset) == TYPE_RRSIG) { in rrset_delete()
324 for (i = 0; i < rrset->rr_count; ++i) { in rrset_delete()
325 if(rr_rrsig_type_covered(&rrset->rrs[i])==TYPE_DNSKEY) { in rrset_delete()
326 rrset->zone->is_secure = 0; in rrset_delete()
332 for (i = 0; i < rrset->rr_count; ++i) in rrset_delete()
333 add_rdata_to_recyclebin(db, &rrset->rrs[i]); in rrset_delete()
334 region_recycle(db->region, rrset->rrs, in rrset_delete()
335 sizeof(rr_type) * rrset->rr_count); in rrset_delete()
336 rrset->rr_count = 0; in rrset_delete()
337 region_recycle(db->region, rrset, sizeof(rrset_type)); in rrset_delete()
396 debug_find_rr_num(rrset_type* rrset, uint16_t type, uint16_t klass, in debug_find_rr_num() argument
402 for(i=0; i < rrset->rr_count; ++i) { in debug_find_rr_num()
403 if (rrset->rrs[i].type != type) { in debug_find_rr_num()
406 dname_to_string(domain_dname(rrset->rrs[i].owner),0), in debug_find_rr_num()
408 rrtype_to_string(rrset->rrs[i].type)); in debug_find_rr_num()
410 if (rrset->rrs[i].klass != klass) { in debug_find_rr_num()
413 dname_to_string(domain_dname(rrset->rrs[i].owner),0), in debug_find_rr_num()
416 rrset->rrs[i].klass); in debug_find_rr_num()
418 if (rrset->rrs[i].rdata_count != rdata_num) { in debug_find_rr_num()
421 dname_to_string(domain_dname(rrset->rrs[i].owner),0), in debug_find_rr_num()
424 (unsigned) rrset->rrs[i].rdata_count); in debug_find_rr_num()
426 if (!rdatas_equal(rdatas, rrset->rrs[i].rdatas, rdata_num, type, in debug_find_rr_num()
430 dname_to_string(domain_dname(rrset->rrs[i].owner),0), in debug_find_rr_num()
438 find_rr_num(rrset_type* rrset, uint16_t type, uint16_t klass, in find_rr_num() argument
444 for(i=0; i < rrset->rr_count; ++i) { in find_rr_num()
445 if(rrset->rrs[i].type == type && in find_rr_num()
446 rrset->rrs[i].klass == klass && in find_rr_num()
447 rrset->rrs[i].rdata_count == rdata_num && in find_rr_num()
448 rdatas_equal(rdatas, rrset->rrs[i].rdatas, rdata_num, type, in find_rr_num()
456 debug_find_rr_num(rrset, type, klass, rdatas, rdata_num); in find_rr_num()
658 rrset_lower_usage(namedb_type* db, rrset_type* rrset) in rrset_lower_usage() argument
661 for(i=0; i<rrset->rr_count; i++) in rrset_lower_usage()
662 rr_lower_usage(db, &rrset->rrs[i]); in rrset_lower_usage()
672 rrset_type *rrset; in delete_RR() local
681 rrset = domain_find_rrset(domain, zone, type); in delete_RR()
682 if(!rrset) { in delete_RR()
705 rrnum = find_rr_num(rrset, type, klass, rdatas, rdata_num, 0); in delete_RR()
707 && rrset->rr_count != 0) in delete_RR()
717 nsec3_delete_rr_trigger(db, &rrset->rrs[rrnum], zone); in delete_RR()
721 rr_lower_usage(db, &rrset->rrs[rrnum]); in delete_RR()
722 if(rrset->rr_count == 1) { in delete_RR()
724 rrset_delete(db, domain, rrset); in delete_RR()
735 rr_type* rrs_orig = rrset->rrs; in delete_RR()
736 add_rdata_to_recyclebin(db, &rrset->rrs[rrnum]); in delete_RR()
737 if(rrnum < rrset->rr_count-1) in delete_RR()
738 rrset->rrs[rrnum] = rrset->rrs[rrset->rr_count-1]; in delete_RR()
739 memset(&rrset->rrs[rrset->rr_count-1], 0, sizeof(rr_type)); in delete_RR()
741 rrset->rrs = region_alloc_array_init(db->region, rrs_orig, in delete_RR()
742 (rrset->rr_count-1), sizeof(rr_type)); in delete_RR()
743 if(!rrset->rrs) { in delete_RR()
748 sizeof(rr_type) * rrset->rr_count); in delete_RR()
754 rrs_orig+rrset->rr_count); in delete_RR()
757 rrset->rr_count-1]) in delete_RR()
758 zone->nsec3_param = &rrset->rrs[rrnum]; in delete_RR()
763 (void*)rrset->rrs; in delete_RR()
766 rrset->rr_count --; in delete_RR()
786 rrset_type* rrset; in add_RR() local
799 rrset = domain_find_rrset(domain, zone, type); in add_RR()
800 if(!rrset) { in add_RR()
802 rrset = region_alloc(db->region, sizeof(rrset_type)); in add_RR()
803 if(!rrset) { in add_RR()
807 rrset->zone = zone; in add_RR()
808 rrset->rrs = 0; in add_RR()
809 rrset->rr_count = 0; in add_RR()
810 domain_add_rrset(domain, rrset); in add_RR()
826 rrnum = find_rr_num(rrset, type, klass, rdatas, rdata_num, 1); in add_RR()
834 if(rrset->rr_count == 65535) { in add_RR()
841 rrs_old = rrset->rrs; in add_RR()
842 rrset->rrs = region_alloc_array(db->region, in add_RR()
843 (rrset->rr_count+1), sizeof(rr_type)); in add_RR()
844 if(!rrset->rrs) { in add_RR()
849 memcpy(rrset->rrs, rrs_old, rrset->rr_count * sizeof(rr_type)); in add_RR()
850 region_recycle(db->region, rrs_old, sizeof(rr_type) * rrset->rr_count); in add_RR()
851 rrset->rr_count ++; in add_RR()
853 rrset->rrs[rrset->rr_count - 1].owner = domain; in add_RR()
854 rrset->rrs[rrset->rr_count - 1].rdatas = rdatas; in add_RR()
855 rrset->rrs[rrset->rr_count - 1].ttl = ttl; in add_RR()
856 rrset->rrs[rrset->rr_count - 1].type = type; in add_RR()
857 rrset->rrs[rrset->rr_count - 1].klass = klass; in add_RR()
858 rrset->rrs[rrset->rr_count - 1].rdata_count = rdata_num; in add_RR()
862 apex_rrset_checks(db, rrset, domain); in add_RR()
868 zone->nsec3_param < rrs_old+rrset->rr_count); in add_RR()
871 (void*)rrs_old + (void*)rrset->rrs; in add_RR()
887 nsec3_add_rr_trigger(db, &rrset->rrs[rrset->rr_count - 1], zone); in add_RR()
934 rrset_type *rrset; in delete_zone_rrs() local
943 while((rrset = domain_find_any_rrset(domain, zone))) { in delete_zone_rrs()
945 rrset_lower_usage(db, rrset); in delete_zone_rrs()
947 rrset_delete(db, domain, rrset); in delete_zone_rrs()