]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
add to lame examples send notifies and send ixfr packets
authorMiek Gieben <miekg@NLnetLabs.nl>
Thu, 13 Apr 2006 11:01:59 +0000 (11:01 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Thu, 13 Apr 2006 11:01:59 +0000 (11:01 +0000)
examples/Makefile.in
examples/ldns-ixfr.c [new file with mode: 0644]
examples/ldns-notify.c [new file with mode: 0644]

index 9e93fc6e0116e8040521476a4a070bfd4b67bb27..bfa16d2aace757e8e64c750840bc2ff49746210f 100644 (file)
@@ -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 (file)
index 0000000..eef44b4
--- /dev/null
@@ -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 <ldns/dns.h>
+
+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 (file)
index 0000000..6043c44
--- /dev/null
@@ -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 <ldns/dns.h>
+
+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;
+}