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;
255 if (rrset->
rrtype == LDNS_RR_TYPE_NSEC3PARAMS ||
256 rrset->
rrtype == LDNS_RR_TYPE_DNSKEY) {
263 for (i=0; i < rrset->
rr_count; i++) {
289 rrset = prev_rrset->
next;
312 ldns_rbnode_t* n = LDNS_RBTREE_NULL;
315 ods_log_assert(domain);
319 n = ldns_rbtree_next(domain->
node);
320 while (n && n != LDNS_RBTREE_NULL) {
322 if (!ldns_dname_is_subdomain(d->
dname, domain->
dname)) {
333 n = ldns_rbtree_next(n);
346 ods_log_assert(domain);
348 return LDNS_RR_TYPE_SOA;
353 return LDNS_RR_TYPE_DS;
356 return LDNS_RR_TYPE_NS;
360 return LDNS_RR_TYPE_SOA;
372 ods_log_assert(domain);
374 return LDNS_RR_TYPE_SOA;
377 while (parent && !parent->
is_apex) {
380 return LDNS_RR_TYPE_A;
384 return LDNS_RR_TYPE_DNAME;
389 return LDNS_RR_TYPE_SOA;
404 if (!domain || !fd) {
406 ods_log_crit(
"[%s] unable to print domain: domain or fd missing",
408 *status = ODS_STATUS_ASSERT_ERR;
414 str = ldns_rdf2str(domain->
dname);
415 fprintf(fd,
";;Empty non-terminal %s\n", str);
433 if (status && *status != ODS_STATUS_OK) {
442 if (rrset->
rrtype != LDNS_RR_TYPE_SOA) {
445 if (status && *status != ODS_STATUS_OK) {
446 ods_log_crit(
"[%s] failed to print one or more RRsets: %s",
447 dname_str, ods_status2str(*status));
470 ldns_rdf_deep_free(domain->
dname);
484 if (!domain || !fd) {
501 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)