Lines Matching full:zone

2  * special zone file structures and functions for better dnssec handling
510 ldns_dnssec_zone_find_rrset(const ldns_dnssec_zone *zone, in ldns_dnssec_zone_find_rrset() argument
516 if (!zone || !dname || !zone->names) { in ldns_dnssec_zone_find_rrset()
520 node = ldns_rbtree_search(zone->names, dname); in ldns_dnssec_zone_find_rrset()
573 ldns_dnssec_zone *zone = LDNS_MALLOC(ldns_dnssec_zone); in ldns_dnssec_zone_new() local
574 if(!zone) return NULL; in ldns_dnssec_zone_new()
575 zone->soa = NULL; in ldns_dnssec_zone_new()
576 zone->names = NULL; in ldns_dnssec_zone_new()
577 zone->hashed_names = NULL; in ldns_dnssec_zone_new()
578 zone->_nsec3params = NULL; in ldns_dnssec_zone_new()
580 return zone; in ldns_dnssec_zone_new()
590 /* When the zone is first read into an list and then inserted into an
592 * to each other. Because ldns-verify-zone (the only program that uses this
600 ldns_dnssec_zone *zone, ldns_rbtree_t *nsec3s);
630 zone tree, even after all names were read. They can only match
631 after the zone is equipped with all the empty non terminals. */
639 ldns_zone* zone = NULL; local
653 status = ldns_zone_new_frm_fp_l(&zone, fp, origin, default_ttl, c, line_nr);
673 if (ldns_zone_soa(zone)) {
674 status = ldns_dnssec_zone_add_rr(newzone, ldns_zone_soa(zone));
678 for (i = 0; i < ldns_rr_list_rr_count(ldns_zone_rrs(zone)); i++) {
679 cur_rr = ldns_rr_list_rr(ldns_zone_rrs(zone), i);
817 if (zone) {
818 ldns_zone_free(zone);
866 ldns_dnssec_zone_free(ldns_dnssec_zone *zone) argument
868 if (zone) {
869 if (zone->hashed_names) {
870 ldns_traverse_postorder(zone->hashed_names,
872 LDNS_FREE(zone->hashed_names);
874 if (zone->names) {
876 ldns_traverse_postorder(zone->names,
879 LDNS_FREE(zone->names);
881 LDNS_FREE(zone);
886 ldns_dnssec_zone_deep_free(ldns_dnssec_zone *zone) argument
888 if (zone) {
889 if (zone->hashed_names) {
890 ldns_traverse_postorder(zone->hashed_names,
892 LDNS_FREE(zone->hashed_names);
894 if (zone->names) {
896 ldns_traverse_postorder(zone->names,
899 LDNS_FREE(zone->names);
901 LDNS_FREE(zone);
912 ldns_dnssec_name_make_hashed_name(ldns_dnssec_zone *zone,
917 ldns_dnssec_zone* zone, ldns_rr* nsec3rr) argument
922 assert(zone != NULL);
925 if (zone->hashed_names) {
926 ldns_traverse_postorder(zone->hashed_names,
928 LDNS_FREE(zone->hashed_names);
930 zone->_nsec3params = nsec3rr;
932 /* So this is a NSEC3 zone.
933 * Calculate hashes for all names already in the zone
935 zone->hashed_names = ldns_rbtree_create(ldns_dname_compare_v);
936 if (zone->hashed_names == NULL) {
939 for ( current_node = ldns_rbtree_first(zone->names)
944 ldns_dnssec_name_make_hashed_name(zone, current_name, nsec3rr);
950 ldns_dnssec_name_make_hashed_name(ldns_dnssec_zone *zone, argument
956 if (! zone->_nsec3params) {
960 ldns_dnssec_zone_hashed_names_from_nsec3(zone, nsec3rr);
963 nsec3rr = zone->_nsec3params;
967 /* Also store in zone->hashed_names */
973 if (ldns_rbtree_insert(zone->hashed_names, new_node) == NULL) {
982 ldns_dnssec_zone_find_nsec3_original(ldns_dnssec_zone *zone, ldns_rr *rr) { argument
986 if (ldns_rr_get_type(rr) == LDNS_RR_TYPE_NSEC3 && ! zone->_nsec3params){
988 ldns_dnssec_zone_hashed_names_from_nsec3(zone, rr);
990 if (zone->hashed_names == NULL) {
997 to_return = ldns_rbtree_search(zone->hashed_names, hashed_name);
1003 ldns_dnssec_zone_add_rr(ldns_dnssec_zone *zone, ldns_rr *rr) argument
1010 if (!zone || !rr) {
1014 if (!zone->names) {
1015 zone->names = ldns_rbtree_create(ldns_dname_compare_v);
1016 if(!zone->names) return LDNS_STATUS_MEM_ERR;
1026 cur_node = ldns_dnssec_zone_find_nsec3_original(zone, rr);
1031 cur_node = ldns_rbtree_search(zone->names, ldns_rr_owner(rr));
1044 (void)ldns_rbtree_insert(zone->names, cur_node);
1045 ldns_dnssec_name_make_hashed_name(zone, cur_name, NULL);
1051 zone->soa = cur_name;
1083 const ldns_dnssec_zone *zone) argument
1085 if (zone) {
1086 if (zone->soa) {
1088 fprintf(out, ";; Zone: ");
1090 zone->soa));
1095 zone->soa,
1102 if (zone->names) {
1104 zone->names, false);
1110 ldns_dnssec_zone_print(FILE *out, const ldns_dnssec_zone *zone) argument
1112 ldns_dnssec_zone_print_fmt(out, ldns_output_format_default, zone);
1117 ldns_dnssec_zone *zone, ldns_rbtree_t *nsec3s) argument
1130 if (!zone) {
1133 if (zone->soa && zone->soa->name) {
1134 soa_label_count = ldns_dname_label_count(zone->soa->name);
1137 cur_node = ldns_rbtree_first(zone->names);
1150 next_node = ldns_rbtree_first(zone->names);
1191 if (nsec3s && zone->_nsec3params) {
1196 zone->_nsec3params,
1231 (void)ldns_rbtree_insert(zone->names, new_node);
1233 zone, new_name, NULL);
1235 (void) ldns_dnssec_zone_add_rr(zone,
1245 if (next_node != ldns_rbtree_first(zone->names)) {
1255 ldns_dnssec_zone_add_empty_nonterminals(ldns_dnssec_zone *zone) argument
1257 return ldns_dnssec_zone_add_empty_nonterminals_nsec3(zone, NULL);
1261 ldns_dnssec_zone_is_nsec3_optout(const ldns_dnssec_zone* zone) argument
1266 if (ldns_dnssec_name_find_rrset(zone->soa, LDNS_RR_TYPE_NSEC3PARAM)) {
1267 node = ldns_rbtree_first(zone->names);
1282 * Stuff for calculating and verifying zone digests
1295 ldns_dnssec_zone *zone; member
1311 /* Make sure the i->name is "in zone" (i.e. below the apex) */
1389 * 3.1. If the NSEC3 name is before the name for other RRsets in the zone,
1495 dnssec_zone_rr_iter_first(dnssec_zone_rr_iter *i, ldns_dnssec_zone *zone) argument
1497 if (!i || !zone)
1501 i->zone = zone;
1502 if (zone->soa && zone->soa->name) {
1503 i->apex_name = zone->soa->name;
1509 i->node = ldns_rbtree_first(zone->names);
1513 if (zone->hashed_names) {
1515 i->nsec3_node = ldns_rbtree_first(zone->hashed_names);
1730 ldns_digest_zone(ldns_dnssec_zone *zone, zone_digester *zd) argument
1735 ldns_rdf *apex_name; /* name of zone apex */
1737 if (!zone || !zd || !zone->soa || !zone->soa->name)
1740 apex_name = zone->soa->name;
1741 for ( rr = dnssec_zone_rr_iter_first(&rr_iter, zone)
1760 ldns_dnssec_zone_verify_zonemd(ldns_dnssec_zone *zone) argument
1771 if (!zone)
1775 zone, zone->soa->name, LDNS_RR_TYPE_ZONEMD);
1780 if (zone->soa->nsec) {
1782 zone->soa->nsec),
1786 } else if (!zone->soa->hashed_name || !zone->hashed_names)
1790 (nsec3_node = ldns_rbtree_search( zone->hashed_names
1791 , zone->soa->hashed_name)))
1805 zone, zone->soa->name, LDNS_RR_TYPE_SOA);
1834 if ((st = ldns_digest_zone(zone, &zd)))
1915 dnssec_zone_equip_zonemd(ldns_dnssec_zone *zone, argument
1936 if ((st = ldns_digest_zone(zone, &zd)))
1940 zone, zone->soa->name, LDNS_RR_TYPE_SOA);
1949 rrset_ref = &zone->soa->rrsets; /* scan rrsets at apex */