From: Miek Gieben Date: Thu, 13 Apr 2006 11:01:59 +0000 (+0000) Subject: add to lame examples send notifies and send ixfr packets X-Git-Tag: release-1.1.0~193 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=beb07d2e616dc00756cf2f3b198eb54d0213f1c9;p=thirdparty%2Fldns.git add to lame examples send notifies and send ixfr packets --- diff --git a/examples/Makefile.in b/examples/Makefile.in index 9e93fc6e..bfa16d2a 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -39,7 +39,9 @@ SOURCES = ldns-read-zone.c \ ldns-dpa.c \ ldns-resolver.c \ ldnsd.c \ - ldns-keyfetcher.c + ldns-keyfetcher.c \ + ldns-ixfr.c \ + ldns-notify.c \ PROGRAMS=$(SOURCES:.c=) diff --git a/examples/ldns-ixfr.c b/examples/ldns-ixfr.c new file mode 100644 index 00000000..eef44b48 --- /dev/null +++ b/examples/ldns-ixfr.c @@ -0,0 +1,60 @@ +/* + * mx is a small programs that prints out the mx records + * for a particulary domain + * (c) NLnet Labs, 2005 + * See the file LICENSE for the license + */ + +#include "config.h" + +#include + +int +main(int argc, char *argv[]) +{ + ldns_pkt *q; + ldns_pkt *a; + ldns_resolver *r; + ldns_rr *rr; + ldns_rr *soa; + ldns_status s; + + q = ldns_pkt_new(); + r = ldns_resolver_new(); + + ldns_rr_new_frm_str(&rr, "localhost IN A 127.0.0.1", 0, NULL, NULL); + ldns_resolver_push_nameserver_rr(r, rr); + ldns_resolver_set_port(r, 5353); + ldns_resolver_set_usevc(r, true); + + /* setup a packet so that it is an reply */ + ldns_pkt_set_rcode(q, LDNS_PACKET_QUERY); + ldns_rr_new_frm_str(&rr, + "miek.nl IN IXFR", 0, NULL, NULL); + ldns_pkt_push_rr(q, LDNS_SECTION_QUESTION, rr); + /* ldns_pkt_set_random_id(q); */ + + /* next add some rrs, with SOA stuff so that we mimic or ixfr reply */ + ldns_rr_new_frm_str(&soa, + "miek.nl IN SOA miek@miek.nl elektron.atoom.net 11 1 0 0 0", 0, NULL, NULL); + + ldns_rr_new_frm_str(&rr, "miek.nl IN A 127.0.0.1", 0, NULL, NULL); + + /* compose the ixfr pkt */ + ldns_pkt_push_rr(q, LDNS_SECTION_ANSWER, soa); + ldns_pkt_push_rr(q, LDNS_SECTION_ANSWER, rr); + ldns_pkt_push_rr(q, LDNS_SECTION_ANSWER, soa); + + ldns_pkt_print(stdout, q); + + fprintf(stderr, "\n** sending **\n"); + + if ((s = ldns_resolver_send_pkt(&a, r, q)) == LDNS_STATUS_OK) { + fprintf(stderr, "** recieved **\n"); + ldns_pkt_print(stdout, a); + } else { + fprintf(stderr, "** FAILURE: %s **\n", + ldns_get_errorstr_by_id(s)); + } + return 0; +} diff --git a/examples/ldns-notify.c b/examples/ldns-notify.c new file mode 100644 index 00000000..6043c448 --- /dev/null +++ b/examples/ldns-notify.c @@ -0,0 +1,62 @@ +/* + * mx is a small programs that prints out the mx records + * for a particulary domain + * (c) NLnet Labs, 2005 + * See the file LICENSE for the license + */ + +#include "config.h" + +#include + +int +main(int argc, char *argv[]) +{ + ldns_pkt *q; + ldns_pkt *a; + ldns_resolver *r; + ldns_rr *rr; + ldns_rr *soa; + ldns_status s; + + q = ldns_pkt_new(); + r = ldns_resolver_new(); + + ldns_rr_new_frm_str(&rr, "localhost IN A 127.0.0.1", 0, NULL, NULL); + ldns_resolver_push_nameserver_rr(r, rr); + ldns_resolver_set_port(r, 5353); + ldns_resolver_set_usevc(r, true); + + /* setup a packet so that it is an reply */ + ldns_pkt_set_opcode(q, LDNS_PACKET_NOTIFY); + ldns_pkt_set_flags(q, LDNS_AA); + ldns_rr_new_frm_str(&rr, + "miek.nl IN SOA", 0, NULL, NULL); + ldns_pkt_push_rr(q, LDNS_SECTION_QUESTION, rr); + /* ldns_pkt_set_random_id(q); */ + + /* next add some rrs, with SOA stuff so that we mimic or ixfr reply */ + ldns_rr_new_frm_str(&soa, + "miek.nl IN SOA miek@miek.nl elektron.atoom.net 11 1 0 0 0", 0, NULL, NULL); + + ldns_rr_new_frm_str(&rr, "miek.nl IN A 127.0.0.1", 0, NULL, NULL); + + /* compose the ixfr pkt */ +#if 0 + ldns_pkt_push_rr(q, LDNS_SECTION_ANSWER, soa); + ldns_pkt_push_rr(q, LDNS_SECTION_ANSWER, rr); + ldns_pkt_push_rr(q, LDNS_SECTION_ANSWER, soa); +#endif + + ldns_pkt_print(stdout, q); + fprintf(stderr, "\n** sending **\n"); + + if ((s = ldns_resolver_send_pkt(&a, r, q)) == LDNS_STATUS_OK) { + fprintf(stderr, "** recieved **\n"); + ldns_pkt_print(stdout, a); + } else { + fprintf(stderr, "** FAILURE: %s **\n", + ldns_get_errorstr_by_id(s)); + } + return 0; +}