From d2943b6d798259fd635a8adf0b04c31503b97f0c Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Sun, 3 Apr 2016 18:53:38 +0200 Subject: Add dns-text2wire. --- tools/dnssec/dns-text2wire.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tools/dnssec/dns-text2wire.c (limited to 'tools/dnssec/dns-text2wire.c') diff --git a/tools/dnssec/dns-text2wire.c b/tools/dnssec/dns-text2wire.c new file mode 100644 index 0000000..99d418f --- /dev/null +++ b/tools/dnssec/dns-text2wire.c @@ -0,0 +1,44 @@ +/* + Read RR's in zone file format and write them in wire format. +*/ + +#include +#include +#include +#include +#include + +int +main(int argc, char *argv[]) +{ + FILE *fp = stdin; + if (argc > 1) + fp = fopen(argv[1], "r"); + assert(fp); + getdns_list *list = NULL; + getdns_return_t r = getdns_fp2rr_list(fp, &list, NULL, 3600); + if (argc > 1) + fclose(fp); + if (r) + { + fprintf(stderr, "getdns_fp2rr_list: %d\n", r); + return r; + } + + size_t len; + r = getdns_list_get_length(list, &len); + assert(!r); + for (int i = 0; i < len; i++) + { + getdns_dict *rr = NULL; + r = getdns_list_get_dict(list, i , &rr); + assert(!r); + uint8_t *buf = NULL; + size_t buf_len; + r = getdns_rr_dict2wire(rr, &buf, &buf_len); + assert(!r); + ssize_t n = write(1, buf, buf_len); + assert(n == buf_len); + } + return 0; +} -- cgit v1.1