diff --git a/src/knot/zone/zone-dump.c b/src/knot/zone/zone-dump.c index 2d37af34a830a8c8789c4da5dee59639ab04bfda..15e3b44512d53a75fb986b3e300dbf070c197e7d 100644 --- a/src/knot/zone/zone-dump.c +++ b/src/knot/zone/zone-dump.c @@ -52,7 +52,6 @@ static int apex_node_dump_text(knot_node_t *node, dump_params_t *params) soa_style.show_class = true; } if (knot_rrset_txt_dump(soa, params->buf, params->buflen, - params->dump_rdata, params->dump_rrsig, &soa_style) < 0) { return KNOT_ENOMEM; } @@ -73,17 +72,22 @@ static int apex_node_dump_text(knot_node_t *node, dump_params_t *params) break; } continue; + case KNOT_RRTYPE_RRSIG: + if (params->dump_rrsig) { + break; + } + continue; case KNOT_RRTYPE_SOA: continue; default: - if (params->dump_nsec) { + if (params->dump_nsec || + (params->dump_rrsig && !params->dump_rdata)) { continue; } break; } if (knot_rrset_txt_dump(rrsets[i], params->buf, params->buflen, - params->dump_rdata, params->dump_rrsig, params->style) < 0) { return KNOT_ENOMEM; } @@ -112,20 +116,25 @@ static int node_dump_text(knot_node_t *node, void *data) // Dump non-apex rrsets. for (uint16_t i = 0; i < node->rrset_count; i++) { switch (rrsets[i]->type) { + case KNOT_RRTYPE_RRSIG: + if (params->dump_rrsig) { + break; + } + continue; case KNOT_RRTYPE_NSEC: if (params->dump_nsec) { break; } continue; default: - if (params->dump_nsec) { + if (params->dump_nsec || + (params->dump_rrsig && !params->dump_rdata)) { continue; } break; } if (knot_rrset_txt_dump(rrsets[i], params->buf, params->buflen, - params->dump_rdata, params->dump_rrsig, params->style) < 0) { return KNOT_ENOMEM; } @@ -175,12 +184,8 @@ int zone_dump_text(knot_zone_contents_t *zone, FILE *file) } // Dump DNSSEC signatures if secured. - const knot_rrset_t *soa = knot_node_rrset(knot_zone_contents_apex(zone), - KNOT_RRTYPE_SOA); if (knot_zone_contents_is_signed(zone)) { fprintf(file, ";; DNSSEC signatures\n"); - /* TODO: will not dump RRSIGs after, will handle as any other RR. */ - // Dump rrsig records. params.dump_rdata = false; params.dump_rrsig = true; diff --git a/src/libknot/rrset-dump.c b/src/libknot/rrset-dump.c index c3e5511643d9ca095fb3446b3614439214297ddd..0a32f0330f82517711cd8e0d831e8e2a88bcf6d8 100644 --- a/src/libknot/rrset-dump.c +++ b/src/libknot/rrset-dump.c @@ -1977,8 +1977,6 @@ int knot_rrset_txt_dump_header(const knot_rrset_t *rrset, int knot_rrset_txt_dump(const knot_rrset_t *rrset, char *dst, const size_t maxlen, - const bool dump_rdata, - const bool dump_rrsig, const knot_dump_style_t *style) { if (rrset == NULL || dst == NULL || style == NULL) { @@ -1988,50 +1986,48 @@ int knot_rrset_txt_dump(const knot_rrset_t *rrset, size_t len = 0; int ret; - if (dump_rdata) { - // APL RR or UPDATE delete may have empty RDATA => dump header. - if (rrset->rdata_count == 0) { - // Dump rdata owner, class, ttl and type. - ret = knot_rrset_txt_dump_header(rrset, dst + len, - maxlen - len, style); - if (ret < 0) { - return KNOT_ESPACE; - } - len += ret; + // APL RR or UPDATE delete may have empty RDATA => dump header. + if (rrset->rdata_count == 0) { + // Dump rdata owner, class, ttl and type. + ret = knot_rrset_txt_dump_header(rrset, dst + len, + maxlen - len, style); + if (ret < 0) { + return KNOT_ESPACE; + } + len += ret; - // Terminate line. - if (len >= maxlen) { - return KNOT_ESPACE; - } - dst[len++] = '\n'; - dst[len] = '\0'; + // Terminate line. + if (len >= maxlen) { + return KNOT_ESPACE; } + dst[len++] = '\n'; + dst[len] = '\0'; + } - // Loop over rdata in rrset. - for (size_t i = 0; i < rrset->rdata_count; i++) { - // Dump rdata owner, class, ttl and type. - ret = knot_rrset_txt_dump_header(rrset, dst + len, - maxlen - len, style); - if (ret < 0) { - return KNOT_ESPACE; - } - len += ret; + // Loop over rdata in rrset. + for (size_t i = 0; i < rrset->rdata_count; i++) { + // Dump rdata owner, class, ttl and type. + ret = knot_rrset_txt_dump_header(rrset, dst + len, + maxlen - len, style); + if (ret < 0) { + return KNOT_ESPACE; + } + len += ret; - // Dump rdata as such. - ret = knot_rrset_txt_dump_data(rrset, i, dst + len, - maxlen - len, style); - if (ret < 0) { - return KNOT_ESPACE; - } - len += ret; + // Dump rdata as such. + ret = knot_rrset_txt_dump_data(rrset, i, dst + len, + maxlen - len, style); + if (ret < 0) { + return KNOT_ESPACE; + } + len += ret; - // Terminate line. - if (len >= maxlen) { - return KNOT_ESPACE; - } - dst[len++] = '\n'; - dst[len] = '\0'; + // Terminate line. + if (len >= maxlen) { + return KNOT_ESPACE; } + dst[len++] = '\n'; + dst[len] = '\0'; } return len; diff --git a/src/libknot/rrset-dump.h b/src/libknot/rrset-dump.h index 799ee91ce455052863e9fb7f1a507222ef2b6e67..74b01749e92fa8036df88be1c2d094baa6285ece 100644 --- a/src/libknot/rrset-dump.h +++ b/src/libknot/rrset-dump.h @@ -92,8 +92,6 @@ int knot_rrset_txt_dump_data(const knot_rrset_t *rrset, * \param rrset RRset to dump. * \param dst Output buffer. * \param maxlen Otuput buffer size. - * \param dump_rdata Dump rrset records. - * \param dump_rrsig Dump rrset rrsig record. * \param style Output style. * * \retval output length if success. @@ -102,8 +100,6 @@ int knot_rrset_txt_dump_data(const knot_rrset_t *rrset, int knot_rrset_txt_dump(const knot_rrset_t *rrset, char *dst, const size_t maxlen, - const bool dump_rdata, - const bool dump_rrsig, const knot_dump_style_t *style); #endif // _KNOT_RRSETDUMP_H_ diff --git a/src/utils/common/exec.c b/src/utils/common/exec.c index 2ee3357161d46a952f945e41cc793ef267174184..9265509dc0acaf48f92eb6739dc0f9dfc228fedb 100644 --- a/src/utils/common/exec.c +++ b/src/utils/common/exec.c @@ -229,7 +229,7 @@ static void print_section_full(const knot_rrset_t **rrsets, } while (knot_rrset_txt_dump(rrsets[i], buf, buflen, - true, true, &(style->style)) < 0) { + &(style->style)) < 0) { buflen += 4096; // Oversize protection. if (buflen > 1000000) {