40 static const char* dname_str =
"domain";
48 log_dname(ldns_rdf *rdf,
const char* pre,
int level)
51 if (ods_log_get_level() < level) {
54 str = ldns_rdf2str(rdf);
58 if (level == LOG_EMERG) {
59 ods_fatal_exit(
"[%s] %s: %s", dname_str, pre?pre:
"", str);
60 }
else if (level == LOG_ALERT) {
61 ods_log_alert(
"[%s] %s: %s", dname_str, pre?pre:
"", str);
62 }
else if (level == LOG_CRIT) {
63 ods_log_crit(
"[%s] %s: %s", dname_str, pre?pre:
"", str);
64 }
else if (level == LOG_ERR) {
65 ods_log_error(
"[%s] %s: %s", dname_str, pre?pre:
"", str);
66 }
else if (level == LOG_WARNING) {
67 ods_log_warning(
"[%s] %s: %s", dname_str, pre?pre:
"", str);
68 }
else if (level == LOG_NOTICE) {
69 ods_log_info(
"[%s] %s: %s", dname_str, pre?pre:
"", str);
70 }
else if (level == LOG_INFO) {
71 ods_log_verbose(
"[%s] %s: %s", dname_str, pre?pre:
"", str);
72 }
else if (level == LOG_DEBUG) {
73 ods_log_debug(
"[%s] %s: %s", dname_str, pre?pre:
"", str);
74 }
else if (level == LOG_DEEEBUG) {
75 ods_log_deeebug(
"[%s] %s: %s", dname_str, pre?pre:
"", str);
77 ods_log_deeebug(
"[%s] %s: %s", dname_str, pre?pre:
"", str);
91 if (!dname || !zone) {
95 domain->
dname = ldns_rdf_clone(dname);
97 ods_log_error(
"[%s] unable to create domain: ldns_rdf_clone() " 144 if (!domain || !domain->
rrsets || !rrtype) {
148 while (rrset && rrset->
rrtype != rrtype) {
164 ods_log_assert(domain);
165 ods_log_assert(rrset);
177 rrset->
domain = (
void*) domain;
201 if (rrset->
rrtype == LDNS_RR_TYPE_NSEC3PARAMS ||
202 rrset->
rrtype == LDNS_RR_TYPE_DNSKEY) {
221 rrset = prev_rrset->
next;
246 ldns_rr* del_rr = NULL;
256 if (rrset->
rrtype == LDNS_RR_TYPE_NSEC3PARAMS ||
257 rrset->
rrtype == LDNS_RR_TYPE_DNSKEY) {
264 for (i=0; i < rrset->
rr_count; i++) {
272 del_rr = rrset->
rrs[i].
rr;
274 ldns_rr_free(del_rr);
293 rrset = prev_rrset->
next;
316 ldns_rbnode_t* n = LDNS_RBTREE_NULL;
319 ods_log_assert(domain);
323 n = ldns_rbtree_next(domain->
node);
324 while (n && n != LDNS_RBTREE_NULL) {
326 if (!ldns_dname_is_subdomain(d->
dname, domain->
dname)) {
337 n = ldns_rbtree_next(n);
350 ods_log_assert(domain);
352 return LDNS_RR_TYPE_SOA;
357 return LDNS_RR_TYPE_DS;
360 return LDNS_RR_TYPE_NS;
364 return LDNS_RR_TYPE_SOA;
376 ods_log_assert(domain);
378 return LDNS_RR_TYPE_SOA;
381 while (parent && !parent->
is_apex) {
384 return LDNS_RR_TYPE_A;
388 return LDNS_RR_TYPE_DNAME;
393 return LDNS_RR_TYPE_SOA;
408 if (!domain || !fd) {
410 ods_log_crit(
"[%s] unable to print domain: domain or fd missing",
412 *status = ODS_STATUS_ASSERT_ERR;
418 str = ldns_rdf2str(domain->
dname);
419 fprintf(fd,
";;Empty non-terminal %s\n", str);
437 if (status && *status != ODS_STATUS_OK) {
446 if (rrset->
rrtype != LDNS_RR_TYPE_SOA) {
449 if (status && *status != ODS_STATUS_OK) {
450 ods_log_crit(
"[%s] failed to print one or more RRsets: %s",
451 dname_str, ods_status2str(*status));
474 ldns_rdf_deep_free(domain->
dname);
488 if (!domain || !fd) {
505 if (rrset->
rrtype != LDNS_RR_TYPE_SOA) {
size_t domain_count_rrset_is_added(domain_type *domain)
void domain_cleanup(domain_type *domain)
void domain_add_rrset(domain_type *domain, rrset_type *rrset)
void rrset_cleanup(rrset_type *rrset)
void domain_backup2(FILE *fd, domain_type *domain, int sigs)
rrset_type * domain_lookup_rrset(domain_type *domain, ldns_rr_type rrtype)
void domain_print(FILE *fd, domain_type *domain, ods_status *status)
size_t rrset_count_rr_is_added(rrset_type *rrset)
void domain_diff(domain_type *domain, unsigned is_ixfr, unsigned more_coming)
int domain_ent2unsignedns(domain_type *domain)
void log_rrset(ldns_rdf *dname, ldns_rr_type type, const char *pre, int level)
void denial_print(FILE *fd, denial_type *denial, ods_status *status)
ldns_rr_type domain_is_delegpt(domain_type *domain)
ldns_rr_type domain_is_occluded(domain_type *domain)
domain_type * domain_create(zone_type *zone, ldns_rdf *dname)
void log_dname(ldns_rdf *rdf, const char *pre, int level)
void rrset_backup2(FILE *fd, rrset_type *rrset)
void rrset_del_rr(rrset_type *rrset, uint16_t rrnum)
void domain_rollback(domain_type *domain, int keepsc)
void rrset_diff(rrset_type *rrset, unsigned is_ixfr, unsigned more_coming)
void rrset_print(FILE *fd, rrset_type *rrset, int skip_rrsigs, ods_status *status)