diff --git a/spec/example/Makefile.in b/spec/example/Makefile.in index 8ff7f2d1..7bf5e016 100644 --- a/spec/example/Makefile.in +++ b/spec/example/Makefile.in @@ -149,24 +149,16 @@ depend: # Dependencies for the examples example-all-functions.lo example-all-functions.o: $(srcdir)/example-all-functions.c $(srcdir)/getdns_libevent.h \ - ../../src/config.h \ - ../../src/getdns/getdns.h \ - $(srcdir)/../../src/getdns/getdns_ext_libevent.h \ - ../../src/getdns/getdns_extra.h -example-reverse.lo example-reverse.o: $(srcdir)/example-reverse.c $(srcdir)/getdns_libevent.h \ - ../../src/config.h \ - ../../src/getdns/getdns.h \ - $(srcdir)/../../src/getdns/getdns_ext_libevent.h \ + ../../src/config.h ../../src/getdns/getdns.h \ + $(srcdir)/../../src/getdns/getdns_ext_libevent.h ../../src/getdns/getdns_extra.h +example-reverse.lo example-reverse.o: $(srcdir)/example-reverse.c $(srcdir)/getdns_libevent.h ../../src/config.h \ + ../../src/getdns/getdns.h $(srcdir)/../../src/getdns/getdns_ext_libevent.h \ ../../src/getdns/getdns_extra.h example-simple-answers.lo example-simple-answers.o: $(srcdir)/example-simple-answers.c $(srcdir)/getdns_libevent.h \ - ../../src/config.h \ - ../../src/getdns/getdns.h \ - $(srcdir)/../../src/getdns/getdns_ext_libevent.h \ - ../../src/getdns/getdns_extra.h + ../../src/config.h ../../src/getdns/getdns.h \ + $(srcdir)/../../src/getdns/getdns_ext_libevent.h ../../src/getdns/getdns_extra.h example-synchronous.lo example-synchronous.o: $(srcdir)/example-synchronous.c $(srcdir)/getdns_core_only.h \ ../../src/getdns/getdns.h -example-tree.lo example-tree.o: $(srcdir)/example-tree.c $(srcdir)/getdns_libevent.h \ - ../../src/config.h \ - ../../src/getdns/getdns.h \ - $(srcdir)/../../src/getdns/getdns_ext_libevent.h \ +example-tree.lo example-tree.o: $(srcdir)/example-tree.c $(srcdir)/getdns_libevent.h ../../src/config.h \ + ../../src/getdns/getdns.h $(srcdir)/../../src/getdns/getdns_ext_libevent.h \ ../../src/getdns/getdns_extra.h diff --git a/src/Makefile.in b/src/Makefile.in index c8f214dd..c81033ff 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -225,189 +225,112 @@ depend: FORCE: # Dependencies for gldns, utils, the extensions and compat functions -const-info.lo const-info.o: $(srcdir)/const-info.c \ - getdns/getdns.h \ - getdns/getdns_extra.h \ - $(srcdir)/const-info.h -context.lo context.o: $(srcdir)/context.c \ - config.h $(srcdir)/debug.h \ - $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/wire2str.h $(srcdir)/context.h \ - getdns/getdns.h \ - getdns/getdns_extra.h \ - $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/extension/default_eventloop.h $(srcdir)/ub_loop.h \ +const-info.lo const-info.o: $(srcdir)/const-info.c getdns/getdns.h getdns/getdns_extra.h \ + getdns/getdns.h $(srcdir)/const-info.h +context.lo context.o: $(srcdir)/context.c config.h $(srcdir)/debug.h $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h \ + $(srcdir)/gldns/wire2str.h $(srcdir)/context.h getdns/getdns.h getdns/getdns_extra.h \ + getdns/getdns.h $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h \ + $(srcdir)/extension/default_eventloop.h config.h getdns/getdns_extra.h $(srcdir)/ub_loop.h \ $(srcdir)/util-internal.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h \ $(srcdir)/dnssec.h $(srcdir)/stub.h $(srcdir)/list.h $(srcdir)/dict.h $(srcdir)/pubkey-pinning.h -convert.lo convert.o: $(srcdir)/convert.c \ - config.h \ - getdns/getdns.h \ - getdns/getdns_extra.h \ - $(srcdir)/util-internal.h $(srcdir)/context.h $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h \ - $(srcdir)/extension/default_eventloop.h $(srcdir)/ub_loop.h $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h \ - $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h $(srcdir)/gldns/wire2str.h $(srcdir)/gldns/str2wire.h \ - $(srcdir)/gldns/rrdef.h $(srcdir)/dict.h $(srcdir)/list.h $(srcdir)/convert.h -dict.lo dict.o: $(srcdir)/dict.c \ - config.h \ - $(srcdir)/types-internal.h \ - getdns/getdns.h \ - getdns/getdns_extra.h \ - $(srcdir)/util/rbtree.h $(srcdir)/util-internal.h $(srcdir)/context.h $(srcdir)/extension/default_eventloop.h \ +convert.lo convert.o: $(srcdir)/convert.c config.h getdns/getdns.h getdns/getdns_extra.h \ + getdns/getdns.h $(srcdir)/util-internal.h $(srcdir)/context.h $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h \ + $(srcdir)/extension/default_eventloop.h config.h getdns/getdns_extra.h $(srcdir)/ub_loop.h \ + $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h \ + $(srcdir)/gldns/wire2str.h $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/dict.h $(srcdir)/list.h $(srcdir)/convert.h +dict.lo dict.o: $(srcdir)/dict.c config.h $(srcdir)/types-internal.h getdns/getdns.h \ + getdns/getdns_extra.h getdns/getdns.h $(srcdir)/util/rbtree.h $(srcdir)/util-internal.h \ + $(srcdir)/context.h $(srcdir)/extension/default_eventloop.h config.h getdns/getdns_extra.h \ $(srcdir)/ub_loop.h $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h \ $(srcdir)/dict.h $(srcdir)/list.h $(srcdir)/const-info.h $(srcdir)/gldns/wire2str.h -dnssec.lo dnssec.o: $(srcdir)/dnssec.c \ - config.h $(srcdir)/debug.h \ - getdns/getdns.h \ - $(srcdir)/context.h \ - getdns/getdns_extra.h \ - $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/extension/default_eventloop.h $(srcdir)/ub_loop.h \ +dnssec.lo dnssec.o: $(srcdir)/dnssec.c config.h $(srcdir)/debug.h getdns/getdns.h $(srcdir)/context.h \ + getdns/getdns_extra.h getdns/getdns.h $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h \ + $(srcdir)/extension/default_eventloop.h config.h getdns/getdns_extra.h $(srcdir)/ub_loop.h \ $(srcdir)/util-internal.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h \ $(srcdir)/dnssec.h $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/wire2str.h $(srcdir)/gldns/keyraw.h \ $(srcdir)/gldns/parseutil.h $(srcdir)/general.h $(srcdir)/dict.h $(srcdir)/list.h $(srcdir)/util/val_secalgo.h -general.lo general.o: $(srcdir)/general.c \ - config.h $(srcdir)/general.h \ - getdns/getdns.h \ - $(srcdir)/types-internal.h \ - getdns/getdns_extra.h \ - $(srcdir)/util/rbtree.h $(srcdir)/ub_loop.h $(srcdir)/debug.h $(srcdir)/gldns/wire2str.h $(srcdir)/context.h \ - $(srcdir)/extension/default_eventloop.h $(srcdir)/util-internal.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h \ +general.lo general.o: $(srcdir)/general.c config.h $(srcdir)/general.h getdns/getdns.h $(srcdir)/types-internal.h \ + getdns/getdns_extra.h getdns/getdns.h $(srcdir)/util/rbtree.h $(srcdir)/ub_loop.h $(srcdir)/debug.h \ + $(srcdir)/gldns/wire2str.h $(srcdir)/context.h $(srcdir)/extension/default_eventloop.h config.h \ + getdns/getdns_extra.h $(srcdir)/util-internal.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h \ $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h $(srcdir)/dnssec.h $(srcdir)/stub.h $(srcdir)/dict.h -list.lo list.o: $(srcdir)/list.c $(srcdir)/types-internal.h \ - getdns/getdns.h \ - getdns/getdns_extra.h \ - $(srcdir)/util/rbtree.h $(srcdir)/util-internal.h \ - config.h $(srcdir)/context.h \ - $(srcdir)/extension/default_eventloop.h $(srcdir)/ub_loop.h $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h \ - $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h $(srcdir)/list.h $(srcdir)/dict.h -pubkey-pinning.lo pubkey-pinning.o: $(srcdir)/pubkey-pinning.c \ - config.h $(srcdir)/debug.h \ - getdns/getdns.h \ - $(srcdir)/context.h \ - getdns/getdns_extra.h \ - $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/extension/default_eventloop.h $(srcdir)/ub_loop.h \ - $(srcdir)/util-internal.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h -request-internal.lo request-internal.o: $(srcdir)/request-internal.c \ - config.h \ - $(srcdir)/types-internal.h \ - getdns/getdns.h \ - getdns/getdns_extra.h \ - $(srcdir)/util/rbtree.h $(srcdir)/util-internal.h $(srcdir)/context.h $(srcdir)/extension/default_eventloop.h \ - $(srcdir)/ub_loop.h $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h \ - $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/dict.h -rr-dict.lo rr-dict.o: $(srcdir)/rr-dict.c $(srcdir)/rr-dict.h \ - config.h \ - getdns/getdns.h \ - $(srcdir)/gldns/gbuffer.h $(srcdir)/util-internal.h $(srcdir)/context.h \ - getdns/getdns_extra.h \ - $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/extension/default_eventloop.h $(srcdir)/ub_loop.h \ - $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/gldns/pkthdr.h $(srcdir)/dict.h -rr-iter.lo rr-iter.o: $(srcdir)/rr-iter.c $(srcdir)/rr-iter.h \ - getdns/getdns.h \ - $(srcdir)/rr-dict.h config.h \ +list.lo list.o: $(srcdir)/list.c $(srcdir)/types-internal.h getdns/getdns.h getdns/getdns_extra.h \ + getdns/getdns.h $(srcdir)/util/rbtree.h $(srcdir)/util-internal.h config.h $(srcdir)/context.h \ + $(srcdir)/extension/default_eventloop.h config.h getdns/getdns_extra.h $(srcdir)/ub_loop.h \ + $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h $(srcdir)/list.h $(srcdir)/dict.h +pubkey-pinning.lo pubkey-pinning.o: $(srcdir)/pubkey-pinning.c config.h $(srcdir)/debug.h getdns/getdns.h \ + $(srcdir)/context.h getdns/getdns.h getdns/getdns_extra.h $(srcdir)/types-internal.h \ + $(srcdir)/util/rbtree.h $(srcdir)/extension/default_eventloop.h config.h \ + getdns/getdns_extra.h $(srcdir)/ub_loop.h $(srcdir)/util-internal.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h \ + $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h +request-internal.lo request-internal.o: $(srcdir)/request-internal.c config.h $(srcdir)/types-internal.h \ + getdns/getdns.h getdns/getdns_extra.h getdns/getdns.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util-internal.h $(srcdir)/context.h $(srcdir)/extension/default_eventloop.h config.h \ + getdns/getdns_extra.h $(srcdir)/ub_loop.h $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h \ + $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/str2wire.h \ + $(srcdir)/gldns/rrdef.h $(srcdir)/dict.h $(srcdir)/convert.h +rr-dict.lo rr-dict.o: $(srcdir)/rr-dict.c $(srcdir)/rr-dict.h config.h getdns/getdns.h $(srcdir)/gldns/gbuffer.h \ + $(srcdir)/util-internal.h $(srcdir)/context.h getdns/getdns_extra.h getdns/getdns.h \ + $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/extension/default_eventloop.h config.h \ + getdns/getdns_extra.h $(srcdir)/ub_loop.h $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/gldns/pkthdr.h $(srcdir)/dict.h +rr-iter.lo rr-iter.o: $(srcdir)/rr-iter.c $(srcdir)/rr-iter.h getdns/getdns.h $(srcdir)/rr-dict.h config.h \ $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h $(srcdir)/gldns/rrdef.h -stub.lo stub.o: $(srcdir)/stub.c \ - config.h $(srcdir)/debug.h \ - $(srcdir)/stub.h \ - getdns/getdns.h \ - $(srcdir)/types-internal.h \ - getdns/getdns_extra.h \ - $(srcdir)/util/rbtree.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h $(srcdir)/gldns/rrdef.h \ - $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/wire2str.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h \ - $(srcdir)/context.h $(srcdir)/extension/default_eventloop.h $(srcdir)/ub_loop.h $(srcdir)/util-internal.h \ - $(srcdir)/general.h $(srcdir)/pubkey-pinning.h -sync.lo sync.o: $(srcdir)/sync.c \ - getdns/getdns.h \ - config.h $(srcdir)/context.h \ - getdns/getdns_extra.h \ - $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/extension/default_eventloop.h $(srcdir)/ub_loop.h \ +stub.lo stub.o: $(srcdir)/stub.c config.h $(srcdir)/debug.h $(srcdir)/stub.h getdns/getdns.h $(srcdir)/types-internal.h \ + getdns/getdns_extra.h getdns/getdns.h $(srcdir)/util/rbtree.h $(srcdir)/gldns/gbuffer.h \ + $(srcdir)/gldns/pkthdr.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h \ + $(srcdir)/gldns/wire2str.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/context.h \ + $(srcdir)/extension/default_eventloop.h config.h getdns/getdns_extra.h $(srcdir)/ub_loop.h \ + $(srcdir)/util-internal.h $(srcdir)/general.h $(srcdir)/pubkey-pinning.h +sync.lo sync.o: $(srcdir)/sync.c getdns/getdns.h config.h $(srcdir)/context.h getdns/getdns_extra.h \ + getdns/getdns.h $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h \ + $(srcdir)/extension/default_eventloop.h config.h getdns/getdns_extra.h $(srcdir)/ub_loop.h \ $(srcdir)/debug.h $(srcdir)/general.h $(srcdir)/util-internal.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h \ $(srcdir)/gldns/pkthdr.h $(srcdir)/dnssec.h $(srcdir)/stub.h $(srcdir)/gldns/wire2str.h -ub_loop.lo ub_loop.o: $(srcdir)/ub_loop.c $(srcdir)/ub_loop.h \ - config.h \ - getdns/getdns.h \ - getdns/getdns_extra.h \ - $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h $(srcdir)/debug.h -util-internal.lo util-internal.o: $(srcdir)/util-internal.c \ - config.h \ - getdns/getdns.h \ - $(srcdir)/dict.h $(srcdir)/util/rbtree.h $(srcdir)/types-internal.h \ - getdns/getdns_extra.h \ - $(srcdir)/list.h $(srcdir)/util-internal.h $(srcdir)/context.h $(srcdir)/extension/default_eventloop.h $(srcdir)/ub_loop.h \ - $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h \ - $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h -gbuffer.lo gbuffer.o: $(srcdir)/gldns/gbuffer.c \ - config.h \ - $(srcdir)/gldns/gbuffer.h -keyraw.lo keyraw.o: $(srcdir)/gldns/keyraw.c \ - config.h \ - $(srcdir)/gldns/keyraw.h $(srcdir)/gldns/rrdef.h -parse.lo parse.o: $(srcdir)/gldns/parse.c \ - config.h \ - $(srcdir)/gldns/parse.h $(srcdir)/gldns/parseutil.h $(srcdir)/gldns/gbuffer.h -parseutil.lo parseutil.o: $(srcdir)/gldns/parseutil.c \ - config.h \ - $(srcdir)/gldns/parseutil.h -rrdef.lo rrdef.o: $(srcdir)/gldns/rrdef.c \ - config.h \ - $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/parseutil.h -str2wire.lo str2wire.o: $(srcdir)/gldns/str2wire.c \ - config.h \ - $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/wire2str.h $(srcdir)/gldns/gbuffer.h \ - $(srcdir)/gldns/parse.h $(srcdir)/gldns/parseutil.h -wire2str.lo wire2str.o: $(srcdir)/gldns/wire2str.c \ - config.h \ - $(srcdir)/gldns/wire2str.h $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/pkthdr.h \ - $(srcdir)/gldns/parseutil.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/keyraw.h -arc4_lock.lo arc4_lock.o: $(srcdir)/compat/arc4_lock.c \ - config.h -arc4random.lo arc4random.o: $(srcdir)/compat/arc4random.c \ - config.h \ - $(srcdir)/compat/chacha_private.h -arc4random_uniform.lo arc4random_uniform.o: $(srcdir)/compat/arc4random_uniform.c \ - config.h -explicit_bzero.lo explicit_bzero.o: $(srcdir)/compat/explicit_bzero.c \ - config.h -getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c \ - config.h -getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c \ - config.h -getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c \ - config.h -getentropy_win.lo getentropy_win.o: $(srcdir)/compat/getentropy_win.c -inet_ntop.lo inet_ntop.o: $(srcdir)/compat/inet_ntop.c \ - config.h -inet_pton.lo inet_pton.o: $(srcdir)/compat/inet_pton.c \ - config.h -sha512.lo sha512.o: $(srcdir)/compat/sha512.c \ - config.h -strlcpy.lo strlcpy.o: $(srcdir)/compat/strlcpy.c \ - config.h -rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c \ - config.h \ - $(srcdir)/util/log.h $(srcdir)/debug.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/rbtree.h -val_secalgo.lo val_secalgo.o: $(srcdir)/util/val_secalgo.c \ - config.h \ - $(srcdir)/util/val_secalgo.h $(srcdir)/util/log.h $(srcdir)/debug.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/keyraw.h \ - $(srcdir)/gldns/gbuffer.h -default_eventloop.lo default_eventloop.o: $(srcdir)/extension/default_eventloop.c \ - $(srcdir)/extension/default_eventloop.h \ - config.h \ - getdns/getdns.h \ - getdns/getdns_extra.h \ +ub_loop.lo ub_loop.o: $(srcdir)/ub_loop.c $(srcdir)/ub_loop.h config.h getdns/getdns.h \ + getdns/getdns_extra.h getdns/getdns.h $(srcdir)/types-internal.h $(srcdir)/util/rbtree.h \ $(srcdir)/debug.h -libev.lo libev.o: $(srcdir)/extension/libev.c \ - config.h \ - $(srcdir)/types-internal.h \ - getdns/getdns.h \ - getdns/getdns_extra.h \ - $(srcdir)/util/rbtree.h $(srcdir)/getdns/getdns_ext_libev.h -libevent.lo libevent.o: $(srcdir)/extension/libevent.c \ - config.h \ - $(srcdir)/types-internal.h \ - getdns/getdns.h \ - getdns/getdns_extra.h \ - $(srcdir)/util/rbtree.h $(srcdir)/getdns/getdns_ext_libevent.h -libuv.lo libuv.o: $(srcdir)/extension/libuv.c \ - config.h $(srcdir)/debug.h \ - $(srcdir)/types-internal.h \ - getdns/getdns.h \ - getdns/getdns_extra.h \ - $(srcdir)/util/rbtree.h $(srcdir)/getdns/getdns_ext_libuv.h +util-internal.lo util-internal.o: $(srcdir)/util-internal.c config.h getdns/getdns.h $(srcdir)/dict.h \ + $(srcdir)/util/rbtree.h $(srcdir)/types-internal.h getdns/getdns_extra.h getdns/getdns.h \ + $(srcdir)/list.h $(srcdir)/util-internal.h $(srcdir)/context.h $(srcdir)/extension/default_eventloop.h config.h \ + getdns/getdns_extra.h $(srcdir)/ub_loop.h $(srcdir)/debug.h $(srcdir)/rr-iter.h $(srcdir)/rr-dict.h \ + $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/pkthdr.h $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h +version.lo version.o: version.c +gbuffer.lo gbuffer.o: $(srcdir)/gldns/gbuffer.c config.h $(srcdir)/gldns/gbuffer.h +keyraw.lo keyraw.o: $(srcdir)/gldns/keyraw.c config.h $(srcdir)/gldns/keyraw.h $(srcdir)/gldns/rrdef.h +parse.lo parse.o: $(srcdir)/gldns/parse.c config.h $(srcdir)/gldns/parse.h $(srcdir)/gldns/parseutil.h \ + $(srcdir)/gldns/gbuffer.h +parseutil.lo parseutil.o: $(srcdir)/gldns/parseutil.c config.h $(srcdir)/gldns/parseutil.h +rrdef.lo rrdef.o: $(srcdir)/gldns/rrdef.c config.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/parseutil.h +str2wire.lo str2wire.o: $(srcdir)/gldns/str2wire.c config.h $(srcdir)/gldns/str2wire.h $(srcdir)/gldns/rrdef.h \ + $(srcdir)/gldns/wire2str.h $(srcdir)/gldns/gbuffer.h $(srcdir)/gldns/parse.h $(srcdir)/gldns/parseutil.h +wire2str.lo wire2str.o: $(srcdir)/gldns/wire2str.c config.h $(srcdir)/gldns/wire2str.h $(srcdir)/gldns/str2wire.h \ + $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/pkthdr.h $(srcdir)/gldns/parseutil.h $(srcdir)/gldns/gbuffer.h \ + $(srcdir)/gldns/keyraw.h +arc4_lock.lo arc4_lock.o: $(srcdir)/compat/arc4_lock.c config.h +arc4random.lo arc4random.o: $(srcdir)/compat/arc4random.c config.h $(srcdir)/compat/chacha_private.h +arc4random_uniform.lo arc4random_uniform.o: $(srcdir)/compat/arc4random_uniform.c config.h +explicit_bzero.lo explicit_bzero.o: $(srcdir)/compat/explicit_bzero.c config.h +getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h +getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c config.h +getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h +getentropy_win.lo getentropy_win.o: $(srcdir)/compat/getentropy_win.c +inet_ntop.lo inet_ntop.o: $(srcdir)/compat/inet_ntop.c config.h +inet_pton.lo inet_pton.o: $(srcdir)/compat/inet_pton.c config.h +sha512.lo sha512.o: $(srcdir)/compat/sha512.c config.h +strlcpy.lo strlcpy.o: $(srcdir)/compat/strlcpy.c config.h +rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c config.h $(srcdir)/util/log.h $(srcdir)/debug.h config.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/rbtree.h +val_secalgo.lo val_secalgo.o: $(srcdir)/util/val_secalgo.c config.h $(srcdir)/util/val_secalgo.h $(srcdir)/util/log.h \ + $(srcdir)/debug.h config.h $(srcdir)/gldns/rrdef.h $(srcdir)/gldns/keyraw.h $(srcdir)/gldns/gbuffer.h +default_eventloop.lo default_eventloop.o: $(srcdir)/extension/default_eventloop.c \ + $(srcdir)/extension/default_eventloop.h config.h getdns/getdns.h \ + getdns/getdns_extra.h $(srcdir)/debug.h config.h +libev.lo libev.o: $(srcdir)/extension/libev.c config.h $(srcdir)/types-internal.h getdns/getdns.h \ + getdns/getdns_extra.h getdns/getdns.h $(srcdir)/util/rbtree.h \ + $(srcdir)/getdns/getdns_ext_libev.h getdns/getdns_extra.h +libevent.lo libevent.o: $(srcdir)/extension/libevent.c config.h $(srcdir)/types-internal.h \ + getdns/getdns.h getdns/getdns_extra.h getdns/getdns.h $(srcdir)/util/rbtree.h \ + $(srcdir)/getdns/getdns_ext_libevent.h getdns/getdns_extra.h +libuv.lo libuv.o: $(srcdir)/extension/libuv.c config.h $(srcdir)/debug.h config.h $(srcdir)/types-internal.h \ + getdns/getdns.h getdns/getdns_extra.h getdns/getdns.h $(srcdir)/util/rbtree.h \ + $(srcdir)/getdns/getdns_ext_libuv.h getdns/getdns_extra.h diff --git a/src/convert.c b/src/convert.c index 1e0f1027..24789fdf 100644 --- a/src/convert.c +++ b/src/convert.c @@ -750,20 +750,31 @@ getdns_wire2msg_dict_scan( if (!getdns_dict_get_int(reply, "/header/" #X, &n)) \ GLDNS_ ## Y ## _SET(header, n); #define SET_HEADER_BIT(X,Y) \ - if (!getdns_dict_get_int(reply, "/header/" #X, &n) && n) \ - GLDNS_ ## Y ## _SET(header); + if (!getdns_dict_get_int(reply, "/header/" #X, &n)) { \ + if (n) GLDNS_ ## Y ## _SET(header); \ + else GLDNS_ ## Y ## _CLR(header); \ + } -static getdns_return_t -_getdns_reply_dict2wire(const getdns_dict *reply, gldns_buffer *buf) +getdns_return_t +_getdns_reply_dict2wire( + const getdns_dict *reply, gldns_buffer *buf, int reuse_header) { - uint8_t header[GLDNS_HEADER_SIZE]; + uint8_t header_spc[GLDNS_HEADER_SIZE], *header; uint32_t n, qtype, qclass = GETDNS_RRCLASS_IN; size_t pkt_start, i; getdns_list *section; getdns_dict *rr_dict; getdns_bindata *qname; - (void) memset(header, 0, sizeof(GLDNS_HEADER_SIZE)); + pkt_start = gldns_buffer_position(buf); + if (reuse_header) { + if (gldns_buffer_remaining(buf) < GLDNS_HEADER_SIZE) + return GETDNS_RETURN_NEED_MORE_SPACE; + header = gldns_buffer_current(buf); + gldns_buffer_skip(buf, GLDNS_HEADER_SIZE); + } else + (void) memset((header = header_spc), 0, GLDNS_HEADER_SIZE); + SET_HEADER_INT(id, ID); SET_HEADER_BIT(qr, QR); SET_HEADER_BIT(aa, AA); @@ -776,8 +787,8 @@ _getdns_reply_dict2wire(const getdns_dict *reply, gldns_buffer *buf) SET_HEADER_INT(rcode, RCODE); SET_HEADER_BIT(z, Z); - pkt_start = gldns_buffer_position(buf); - gldns_buffer_write(buf, header, sizeof(header)); + if (!reuse_header) + gldns_buffer_write(buf, header, GLDNS_HEADER_SIZE); if (!getdns_dict_get_bindata(reply, "/question/qname", &qname) && !getdns_dict_get_int(reply, "/question/qtype", &qtype)) { @@ -786,6 +797,14 @@ _getdns_reply_dict2wire(const getdns_dict *reply, gldns_buffer *buf) gldns_buffer_write_u16(buf, (uint16_t)qtype); gldns_buffer_write_u16(buf, (uint16_t)qclass); gldns_buffer_write_u16_at(buf, pkt_start+GLDNS_QDCOUNT_OFF, 1); + if (reuse_header) { + gldns_buffer_write_u16_at( + buf, pkt_start+GLDNS_ANCOUNT_OFF, 0); + gldns_buffer_write_u16_at( + buf, pkt_start+GLDNS_NSCOUNT_OFF, 0); + gldns_buffer_write_u16_at( + buf, pkt_start+GLDNS_ARCOUNT_OFF, 0); + } } if (!getdns_dict_get_list(reply, "answer", §ion)) { for ( n = 0, i = 0 @@ -817,7 +836,7 @@ _getdns_reply_dict2wire(const getdns_dict *reply, gldns_buffer *buf) return GETDNS_RETURN_GOOD; } -static getdns_return_t +getdns_return_t _getdns_msg_dict2wire_buf(const getdns_dict *msg_dict, gldns_buffer *gbuf) { getdns_return_t r; @@ -828,11 +847,11 @@ _getdns_msg_dict2wire_buf(const getdns_dict *msg_dict, gldns_buffer *gbuf) if ((r = getdns_dict_get_list(msg_dict, "replies_tree", &replies))) { if (r != GETDNS_RETURN_NO_SUCH_DICT_NAME) return r; - return _getdns_reply_dict2wire(msg_dict, gbuf); + return _getdns_reply_dict2wire(msg_dict, gbuf, 0); } for (i = 0; r == GETDNS_RETURN_GOOD; i++) { if (!(r = getdns_list_get_dict(replies, i, &reply))) - r = _getdns_reply_dict2wire(reply, gbuf); + r = _getdns_reply_dict2wire(reply, gbuf, 0); } return r == GETDNS_RETURN_NO_SUCH_LIST_ITEM ? GETDNS_RETURN_GOOD : r; } @@ -889,10 +908,9 @@ getdns_msg_dict2wire_scan( getdns_return_t r; gldns_buffer gbuf; - if (!msg_dict || !wire || !*wire || !wire_sz) + if (!msg_dict || !wire || !wire_sz || (!*wire && *wire_sz)) return GETDNS_RETURN_INVALID_PARAMETER; - gldns_buffer_init_frm_data(&gbuf, *wire, *wire_sz); if ((r = _getdns_msg_dict2wire_buf(msg_dict, &gbuf))) return r; diff --git a/src/convert.h b/src/convert.h index 18b982ed..5b66412c 100644 --- a/src/convert.h +++ b/src/convert.h @@ -53,5 +53,8 @@ getdns_return_t _getdns_str2rr_dict(struct mem_funcs *mf, const char *str, getdns_return_t _getdns_fp2rr_list(struct mem_funcs *mf, FILE *in, getdns_list **rr_list, const char *origin, uint32_t default_ttl); +getdns_return_t _getdns_reply_dict2wire( + const getdns_dict *reply, gldns_buffer *buf, int reuse_header); + #endif /* convert.h */ diff --git a/src/general.c b/src/general.c index 4de98853..c88bf69b 100644 --- a/src/general.c +++ b/src/general.c @@ -418,6 +418,7 @@ validate_extensions(struct getdns_dict * extensions) #else 0}, #endif + {"header" , t_dict, 1}, {"return_api_information" , t_int , 1}, {"return_both_v4_and_v6" , t_int , 1}, {"return_call_reporting" , t_int , 1}, diff --git a/src/gldns/gbuffer.h b/src/gldns/gbuffer.h index 3d3190ed..2db9e250 100644 --- a/src/gldns/gbuffer.h +++ b/src/gldns/gbuffer.h @@ -164,7 +164,7 @@ gldns_buffer_invariant(gldns_buffer *buffer) assert(buffer != NULL); assert(buffer->_position <= buffer->_limit || buffer->_fixed); assert(buffer->_limit <= buffer->_capacity); - assert(buffer->_data != NULL); + assert(buffer->_data != NULL || (buffer->_capacity == 0 && buffer->_fixed)); } #endif diff --git a/src/request-internal.c b/src/request-internal.c index f619429c..174ea89d 100644 --- a/src/request-internal.c +++ b/src/request-internal.c @@ -42,6 +42,7 @@ #include "gldns/pkthdr.h" #include "dict.h" #include "debug.h" +#include "convert.h" /* MAXIMUM_TSIG_SPACE = TSIG name (dname) : 256 * TSIG type (uint16_t) : 2 @@ -143,7 +144,7 @@ network_req_init(getdns_network_req *net_req, getdns_dns_req *owner, int edns_maximum_udp_payload_size, uint8_t edns_extended_rcode, uint8_t edns_version, int edns_do_bit, uint16_t opt_options_size, size_t noptions, getdns_list *options, - size_t wire_data_sz, size_t max_query_sz) + size_t wire_data_sz, size_t max_query_sz, getdns_dict *extensions) { uint8_t *buf; getdns_dict *option; @@ -151,6 +152,7 @@ network_req_init(getdns_network_req *net_req, getdns_dns_req *owner, getdns_bindata *option_data; size_t i; int r = 0; + gldns_buffer gbuf; /* variables that stay the same on reinit, don't touch */ @@ -204,6 +206,10 @@ network_req_init(getdns_network_req *net_req, getdns_dns_req *owner, gldns_write_uint16(buf + GLDNS_ARCOUNT_OFF, with_opt ? 1 : 0); buf = netreq_reset(net_req); + gldns_buffer_init_frm_data( + &gbuf, net_req->query, net_req->wire_data_sz - 2); + _getdns_reply_dict2wire(extensions, &gbuf, 1); + if (with_opt) { net_req->opt = buf; buf[0] = 0; /* dname for . */ @@ -907,7 +913,8 @@ _getdns_dns_req_new(getdns_context *context, getdns_eventloop *loop, edns_maximum_udp_payload_size, edns_extended_rcode, edns_version, edns_do_bit, opt_options_size, noptions, options, - netreq_sz - sizeof(getdns_network_req), max_query_sz); + netreq_sz - sizeof(getdns_network_req), max_query_sz, + extensions); if (a_aaaa_query) network_req_init(result->netreqs[1], result, @@ -917,7 +924,8 @@ _getdns_dns_req_new(getdns_context *context, getdns_eventloop *loop, edns_maximum_udp_payload_size, edns_extended_rcode, edns_version, edns_do_bit, opt_options_size, noptions, options, - netreq_sz - sizeof(getdns_network_req), max_query_sz); + netreq_sz - sizeof(getdns_network_req), max_query_sz, + extensions); return result; } diff --git a/src/rr-dict.c b/src/rr-dict.c index bc7a77cd..76972997 100644 --- a/src/rr-dict.c +++ b/src/rr-dict.c @@ -1147,12 +1147,14 @@ getdns_return_t _getdns_rr_dict2wire(const getdns_dict *rr_dict, gldns_buffer *buf) { getdns_return_t r = GETDNS_RETURN_GOOD; + getdns_bindata root = { 1, (void *)"" }; getdns_bindata *name; getdns_bindata *rdata_raw; getdns_dict *rdata; uint32_t rr_type; uint32_t rr_class = GETDNS_RRCLASS_IN; uint32_t rr_ttl = 0; + uint32_t value; const _getdns_rr_def *rr_def; const _getdns_rdata_def *rd_def, *rep_rd_def; int n_rdata_fields, rep_n_rdata_fields; @@ -1164,18 +1166,35 @@ _getdns_rr_dict2wire(const getdns_dict *rr_dict, gldns_buffer *buf) assert(rr_dict); assert(buf); - if ((r = getdns_dict_get_bindata(rr_dict, "name", &name))) - return r; - gldns_buffer_write(buf, name->data, name->size); - if ((r = getdns_dict_get_int(rr_dict, "type", &rr_type))) return r; + if ((r = getdns_dict_get_bindata(rr_dict, "name", &name))) { + if (r == GETDNS_RETURN_NO_SUCH_DICT_NAME && + rr_type == GETDNS_RRTYPE_OPT) { + name = &root; + } else + return r; + } + gldns_buffer_write(buf, name->data, name->size); gldns_buffer_write_u16(buf, (uint16_t)rr_type); (void) getdns_dict_get_int(rr_dict, "class", &rr_class); + if (rr_type == GETDNS_RRTYPE_OPT) + (void) getdns_dict_get_int( + rr_dict, "udp_payload_size", &rr_class); gldns_buffer_write_u16(buf, (uint16_t)rr_class); (void) getdns_dict_get_int(rr_dict, "ttl", &rr_ttl); + if (rr_type == GETDNS_RRTYPE_OPT) { + if (!getdns_dict_get_int(rr_dict, "extended_rcode", &value)) + rr_ttl = (rr_ttl & 0x00FFFFFF)|((value & 0xFF) << 24); + if (!getdns_dict_get_int(rr_dict, "version", &value)) + rr_ttl = (rr_ttl & 0xFF00FFFF)|((value & 0xFF) << 16); + if (!getdns_dict_get_int(rr_dict, "z", &value)) + rr_ttl = (rr_ttl & 0xFFFF0000)| (value & 0xFFFF); + if (!getdns_dict_get_int(rr_dict, "do", &value)) + rr_ttl = (rr_ttl & 0xFFFF7FFF)| (value ? 0x8000 : 0); + } gldns_buffer_write_u32(buf, rr_ttl); /* Does rdata contain compressed names? diff --git a/src/test/Makefile.in b/src/test/Makefile.in index 03e1cce1..fbc72f8d 100644 --- a/src/test/Makefile.in +++ b/src/test/Makefile.in @@ -221,24 +221,21 @@ depend: .PHONY: clean test # Dependencies for the unit tests -check_getdns.lo check_getdns.o: $(srcdir)/check_getdns.c \ - ../getdns/getdns.h \ - $(srcdir)/check_getdns_common.h \ - ../getdns/getdns_extra.h \ - $(srcdir)/check_getdns_general.h $(srcdir)/check_getdns_general_sync.h \ - $(srcdir)/check_getdns_address.h $(srcdir)/check_getdns_address_sync.h \ - $(srcdir)/check_getdns_hostname.h $(srcdir)/check_getdns_hostname_sync.h \ - $(srcdir)/check_getdns_context_create.h $(srcdir)/check_getdns_context_destroy.h \ - $(srcdir)/check_getdns_cancel_callback.h $(srcdir)/check_getdns_list_get_length.h \ - $(srcdir)/check_getdns_list_get_data_type.h $(srcdir)/check_getdns_list_get_dict.h \ - $(srcdir)/check_getdns_list_get_list.h $(srcdir)/check_getdns_list_get_int.h \ - $(srcdir)/check_getdns_list_get_bindata.h $(srcdir)/check_getdns_dict_get_names.h \ - $(srcdir)/check_getdns_dict_get_data_type.h $(srcdir)/check_getdns_dict_get_dict.h \ - $(srcdir)/check_getdns_dict_get_list.h $(srcdir)/check_getdns_dict_get_bindata.h \ - $(srcdir)/check_getdns_dict_get_int.h $(srcdir)/check_getdns_dict_destroy.h \ - $(srcdir)/check_getdns_dict_set_dict.h $(srcdir)/check_getdns_dict_set_list.h \ - $(srcdir)/check_getdns_dict_set_bindata.h $(srcdir)/check_getdns_dict_set_int.h \ - $(srcdir)/check_getdns_convert_ulabel_to_alabel.h \ +check_getdns.lo check_getdns.o: $(srcdir)/check_getdns.c ../getdns/getdns.h $(srcdir)/check_getdns_common.h \ + ../getdns/getdns_extra.h $(srcdir)/check_getdns_general.h \ + $(srcdir)/check_getdns_general_sync.h $(srcdir)/check_getdns_address.h \ + $(srcdir)/check_getdns_address_sync.h $(srcdir)/check_getdns_hostname.h \ + $(srcdir)/check_getdns_hostname_sync.h $(srcdir)/check_getdns_context_create.h \ + $(srcdir)/check_getdns_context_destroy.h $(srcdir)/check_getdns_cancel_callback.h \ + $(srcdir)/check_getdns_list_get_length.h $(srcdir)/check_getdns_list_get_data_type.h \ + $(srcdir)/check_getdns_list_get_dict.h $(srcdir)/check_getdns_list_get_list.h \ + $(srcdir)/check_getdns_list_get_int.h $(srcdir)/check_getdns_list_get_bindata.h \ + $(srcdir)/check_getdns_dict_get_names.h $(srcdir)/check_getdns_dict_get_data_type.h \ + $(srcdir)/check_getdns_dict_get_dict.h $(srcdir)/check_getdns_dict_get_list.h \ + $(srcdir)/check_getdns_dict_get_bindata.h $(srcdir)/check_getdns_dict_get_int.h \ + $(srcdir)/check_getdns_dict_destroy.h $(srcdir)/check_getdns_dict_set_dict.h \ + $(srcdir)/check_getdns_dict_set_list.h $(srcdir)/check_getdns_dict_set_bindata.h \ + $(srcdir)/check_getdns_dict_set_int.h $(srcdir)/check_getdns_convert_ulabel_to_alabel.h \ $(srcdir)/check_getdns_convert_alabel_to_ulabel.h $(srcdir)/check_getdns_pretty_print_dict.h \ $(srcdir)/check_getdns_display_ip_address.h \ $(srcdir)/check_getdns_context_set_context_update_callback.h \ @@ -246,63 +243,36 @@ check_getdns.lo check_getdns.o: $(srcdir)/check_getdns.c \ $(srcdir)/check_getdns_context_set_upstream_recursive_servers.h \ $(srcdir)/check_getdns_service.h $(srcdir)/check_getdns_service_sync.h \ $(srcdir)/check_getdns_transport.h -check_getdns_common.lo check_getdns_common.o: $(srcdir)/check_getdns_common.c \ - ../getdns/getdns.h \ - ../config.h \ - $(srcdir)/check_getdns_common.h \ - ../getdns/getdns_extra.h \ +check_getdns_common.lo check_getdns_common.o: $(srcdir)/check_getdns_common.c ../getdns/getdns.h \ + ../config.h $(srcdir)/check_getdns_common.h ../getdns/getdns_extra.h \ $(srcdir)/check_getdns_eventloop.h check_getdns_context_set_timeout.lo check_getdns_context_set_timeout.o: $(srcdir)/check_getdns_context_set_timeout.c \ $(srcdir)/check_getdns_context_set_timeout.h $(srcdir)/check_getdns_common.h \ - ../getdns/getdns.h \ - ../getdns/getdns_extra.h + ../getdns/getdns.h ../getdns/getdns_extra.h check_getdns_libev.lo check_getdns_libev.o: $(srcdir)/check_getdns_libev.c $(srcdir)/check_getdns_eventloop.h \ - ../config.h \ - ../getdns/getdns.h \ - $(srcdir)/../getdns/getdns_ext_libev.h \ - ../getdns/getdns_extra.h \ - $(srcdir)/check_getdns_common.h + ../config.h ../getdns/getdns.h $(srcdir)/../getdns/getdns_ext_libev.h \ + ../getdns/getdns_extra.h $(srcdir)/check_getdns_common.h check_getdns_libevent.lo check_getdns_libevent.o: $(srcdir)/check_getdns_libevent.c $(srcdir)/check_getdns_eventloop.h \ - ../config.h \ - ../getdns/getdns.h \ - $(srcdir)/../getdns/getdns_ext_libevent.h \ - ../getdns/getdns_extra.h \ - $(srcdir)/check_getdns_libevent.h $(srcdir)/check_getdns_common.h + ../config.h ../getdns/getdns.h $(srcdir)/../getdns/getdns_ext_libevent.h \ + ../getdns/getdns_extra.h $(srcdir)/check_getdns_libevent.h $(srcdir)/check_getdns_common.h check_getdns_libuv.lo check_getdns_libuv.o: $(srcdir)/check_getdns_libuv.c $(srcdir)/check_getdns_eventloop.h \ - ../config.h \ - ../getdns/getdns.h \ - $(srcdir)/../getdns/getdns_ext_libuv.h \ - ../getdns/getdns_extra.h \ - $(srcdir)/check_getdns_common.h + ../config.h ../getdns/getdns.h $(srcdir)/../getdns/getdns_ext_libuv.h \ + ../getdns/getdns_extra.h $(srcdir)/check_getdns_common.h check_getdns_selectloop.lo check_getdns_selectloop.o: $(srcdir)/check_getdns_selectloop.c \ - $(srcdir)/check_getdns_eventloop.h \ - ../config.h \ - ../getdns/getdns.h \ + $(srcdir)/check_getdns_eventloop.h ../config.h ../getdns/getdns.h \ ../getdns/getdns_extra.h check_getdns_transport.lo check_getdns_transport.o: $(srcdir)/check_getdns_transport.c \ - $(srcdir)/check_getdns_transport.h $(srcdir)/check_getdns_common.h \ - ../getdns/getdns.h \ + $(srcdir)/check_getdns_transport.h $(srcdir)/check_getdns_common.h ../getdns/getdns.h \ ../getdns/getdns_extra.h -getdns_query.lo getdns_query.o: $(srcdir)/getdns_query.c \ - ../config.h \ - $(srcdir)/../debug.h \ - ../getdns/getdns.h \ - ../getdns/getdns_extra.h -scratchpad.template.lo scratchpad.template.o: scratchpad.template.c \ - ../getdns/getdns.h \ +getdns_query.lo getdns_query.o: $(srcdir)/getdns_query.c ../config.h $(srcdir)/../debug.h ../config.h \ + ../getdns/getdns.h ../getdns/getdns_extra.h +scratchpad.template.lo scratchpad.template.o: scratchpad.template.c ../getdns/getdns.h \ ../getdns/getdns_extra.h testmessages.lo testmessages.o: $(srcdir)/testmessages.c $(srcdir)/testmessages.h -tests_dict.lo tests_dict.o: $(srcdir)/tests_dict.c $(srcdir)/testmessages.h \ - ../getdns/getdns.h -tests_list.lo tests_list.o: $(srcdir)/tests_list.c $(srcdir)/testmessages.h \ - ../getdns/getdns.h -tests_namespaces.lo tests_namespaces.o: $(srcdir)/tests_namespaces.c $(srcdir)/testmessages.h \ - ../getdns/getdns.h -tests_stub_async.lo tests_stub_async.o: $(srcdir)/tests_stub_async.c \ - ../config.h \ - $(srcdir)/testmessages.h \ - ../getdns/getdns.h \ - ../getdns/getdns_extra.h -tests_stub_sync.lo tests_stub_sync.o: $(srcdir)/tests_stub_sync.c $(srcdir)/testmessages.h \ - ../getdns/getdns.h \ +tests_dict.lo tests_dict.o: $(srcdir)/tests_dict.c $(srcdir)/testmessages.h ../getdns/getdns.h +tests_list.lo tests_list.o: $(srcdir)/tests_list.c $(srcdir)/testmessages.h ../getdns/getdns.h +tests_namespaces.lo tests_namespaces.o: $(srcdir)/tests_namespaces.c $(srcdir)/testmessages.h ../getdns/getdns.h +tests_stub_async.lo tests_stub_async.o: $(srcdir)/tests_stub_async.c ../config.h $(srcdir)/testmessages.h \ + ../getdns/getdns.h ../getdns/getdns_extra.h +tests_stub_sync.lo tests_stub_sync.o: $(srcdir)/tests_stub_sync.c $(srcdir)/testmessages.h ../getdns/getdns.h \ ../getdns/getdns_extra.h diff --git a/src/test/tpkg/100-compile.tpkg/100-compile.dsc b/src/test/tpkg/100-compile.tpkg/100-compile.dsc index e39ac6a7..8f73a87f 100644 --- a/src/test/tpkg/100-compile.tpkg/100-compile.dsc +++ b/src/test/tpkg/100-compile.tpkg/100-compile.dsc @@ -9,7 +9,7 @@ CmdDepends: Depends: Help: Pre: 100-compile.pre -Post: +Post: 100-compile.post Test: 100-compile.test AuxFiles: Passed: diff --git a/src/test/tpkg/100-compile.tpkg/100-compile.post b/src/test/tpkg/100-compile.tpkg/100-compile.post new file mode 100644 index 00000000..7744f6e7 --- /dev/null +++ b/src/test/tpkg/100-compile.tpkg/100-compile.post @@ -0,0 +1,20 @@ +# #-- 100-compile.post --# +# source the master var file when it's there +if [ -f ../.tpkg.var.master ] +then + source ../.tpkg.var.master +else + ( + cd .. + [ -f "${TPKG_SRCDIR}/setup-env.sh" ] \ + && sh "${TPKG_SRCDIR}/setup-env.sh" + ) && source ../.tpkg.var.master +fi +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +for f in `cat restore-srcdir-configure-settings` +do + mv "${SRCROOT}/${f}.build" "${SRCROOT}/${f}" +done + diff --git a/src/test/tpkg/100-compile.tpkg/100-compile.pre b/src/test/tpkg/100-compile.tpkg/100-compile.pre index a0272ed3..95fbced2 100644 --- a/src/test/tpkg/100-compile.tpkg/100-compile.pre +++ b/src/test/tpkg/100-compile.tpkg/100-compile.pre @@ -13,6 +13,15 @@ fi # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test +echo "" > restore-srcdir-configure-settings +for f in `grep 'CONFIG_[FH][IE][LA][ED][SE]' "${SRCROOT}/configure.ac" | sed -e 's/^.*(\[//g' -e 's/\])//g'` +do + if [ -f "${SRCROOT}/$f" ] + then + mv "${SRCROOT}/${f}" "${SRCROOT}/${f}.build" && \ + echo "$f" >> restore-srcdir-configure-settings + fi +done rm -fr "${BUILDDIR}/build" mkdir "${BUILDDIR}/build" cd "${BUILDDIR}/build" diff --git a/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.dsc b/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.dsc index 3cf0cd88..4faf21b2 100644 --- a/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.dsc +++ b/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.dsc @@ -9,7 +9,7 @@ CmdDepends: Depends: Help: Pre: 200-stub-only-compile.pre -Post: +Post: 200-stub-only-compile.post Test: 200-stub-only-compile.test AuxFiles: Passed: diff --git a/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.post b/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.post new file mode 100644 index 00000000..0a681250 --- /dev/null +++ b/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.post @@ -0,0 +1,20 @@ +# #-- 200-stub-only-compile.post --# +# source the master var file when it's there +if [ -f ../.tpkg.var.master ] +then + source ../.tpkg.var.master +else + ( + cd .. + [ -f "${TPKG_SRCDIR}/setup-env.sh" ] \ + && sh "${TPKG_SRCDIR}/setup-env.sh" + ) && source ../.tpkg.var.master +fi +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +for f in `cat restore-srcdir-configure-settings` +do + mv "${SRCROOT}/${f}.build-stub-only" "${SRCROOT}/${f}" +done + diff --git a/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.pre b/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.pre index e95a7446..0b41e374 100644 --- a/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.pre +++ b/src/test/tpkg/200-stub-only-compile.tpkg/200-stub-only-compile.pre @@ -13,6 +13,15 @@ fi # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test +echo "" > restore-srcdir-configure-settings +for f in `grep 'CONFIG_[FH][IE][LA][ED][SE]' "${SRCROOT}/configure.ac" | sed -e 's/^.*(\[//g' -e 's/\])//g'` +do + if [ -f "${SRCROOT}/$f" ] + then + mv "${SRCROOT}/${f}" "${SRCROOT}/${f}.build-stub-only" && \ + echo "$f" >> restore-srcdir-configure-settings + fi +done rm -fr "${BUILDDIR}/build-stub-only" mkdir "${BUILDDIR}/build-stub-only" cd "${BUILDDIR}/build-stub-only" diff --git a/src/test/tpkg/270-header-extension.tpkg/270-header-extension.Makefile b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.Makefile new file mode 100644 index 00000000..708341a1 --- /dev/null +++ b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.Makefile @@ -0,0 +1,15 @@ +builddir = @BUILDDIR@ +testname = @TPKG_NAME@ +LIBTOOL = $(builddir)/libtool + +CFLAGS=-I$(builddir)/src +LDLIBS=$(builddir)/src/libgetdns.la + +.SUFFIXES: .c .o .a .lo .h + +.c.lo: + $(LIBTOOL) --quiet --tag=CC --mode=compile $(CC) $(CFLAGS) -c $< -o $@ + +$(testname): $(testname).lo + $(LIBTOOL) --tag=CC --mode=link $(CC) $(LDLIBS) $(LDFLAGS) -o $@ $< + diff --git a/src/test/tpkg/270-header-extension.tpkg/270-header-extension.c b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.c new file mode 100644 index 00000000..e845299b --- /dev/null +++ b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.c @@ -0,0 +1,115 @@ +#include +#include +#include + +/* Example setting header bits to do a direct authoritative query */ + +int main() +{ + getdns_return_t r; + getdns_context *ctx = NULL; + getdns_dict *extensions = NULL; + getdns_bindata ipv4 = { 4, (uint8_t*)"IPv4" }; + /* 185.49.141.37 */ + getdns_bindata nsip = { 4, (uint8_t*)"\xb9\x31\x8c\x3c" }; + getdns_dict *upstream = NULL; + getdns_list *upstreams = NULL; + getdns_dict *response = NULL; + uint32_t value; + char *str; + + if ((r = getdns_context_create(&ctx, 1))) + fprintf(stderr, "Could not create context"); + + else if (!(extensions = getdns_dict_create_with_context(ctx))) { + fprintf(stderr, "Could not create dictionary"); + r = GETDNS_RETURN_MEMORY_ERROR; + + } else if ((r = getdns_dict_set_int(extensions, "/header/rd", 0))) + fprintf(stderr, "Could not set RD bit"); + + else if ((r = getdns_dict_set_int(extensions, "/add_opt_parameters/do_bit", 1))) + fprintf(stderr, "Could not set qtype"); + + else if (!(upstream = getdns_dict_create_with_context(ctx))) { + fprintf(stderr, "Could not create upstream dictionary"); + r = GETDNS_RETURN_MEMORY_ERROR; + + } else if ((r = getdns_dict_set_bindata(upstream, "address_type", &ipv4))) + fprintf(stderr, "Could set \"address_type\""); + + else if ((r = getdns_dict_set_bindata(upstream, "address_data", &nsip))) + fprintf(stderr, "Could set \"address_data\""); + + else if (!(upstreams = getdns_list_create_with_context(ctx))) { + fprintf(stderr, "Could not create upstreams list"); + r = GETDNS_RETURN_MEMORY_ERROR; + + } else if ((r = getdns_list_set_dict(upstreams, 0, upstream))) + fprintf(stderr, "Could not append upstream to upstreams list"); + + else if ((r = getdns_context_set_resolution_type(ctx, GETDNS_RESOLUTION_STUB))) + fprintf(stderr, "Could not set stub mode"); + + else if ((r = getdns_context_set_upstream_recursive_servers(ctx, upstreams))) + fprintf(stderr, "Could not set upstreams list"); + + else if ((r = getdns_general_sync(ctx, "bogus.nlnetlabs.nl.", GETDNS_RRTYPE_TXT, extensions, &response))) + fprintf(stderr, "Could not do lookup"); + + else if ((r = getdns_dict_get_int(response, "status", &value))) + fprintf(stderr, "Could not get status from response"); + + else if (value != GETDNS_RESPSTATUS_GOOD) { + fprintf(stderr, "response['status'] != GETDNS_RESPSTATUS_GOOD"); + r = GETDNS_RETURN_GENERIC_ERROR; + + } else if ((r = getdns_dict_get_int(response, "/replies_tree/0/header/rd", &value))) + fprintf(stderr, "Could not get RD bit from header"); + + else if (value != 0) { + fprintf(stderr, "RD bit != 0"); + r = GETDNS_RETURN_GENERIC_ERROR; + + } else if ((r = getdns_dict_get_int(response, "/replies_tree/0/header/ancount", &value))) + fprintf(stderr, "Could not get ANCOUNT from header"); + + else if (value != 2) { + fprintf(stderr, "ANCOUNT != 2"); + r = GETDNS_RETURN_GENERIC_ERROR; + + } else if ((r = getdns_dict_set_int(extensions, "/header/opcode", GETDNS_OPCODE_STATUS))) + fprintf(stderr, "Could not set opcode"); + + else if ((r = getdns_general_sync(ctx, "bogus.nlnetlabs.nl.", GETDNS_RRTYPE_TXT, extensions, &response))) + fprintf(stderr, "Could not do lookup"); + + else if ((r = getdns_dict_remove_name(response, "replies_full"))) + fprintf(stderr, "Could not remove reponse['replies_full']"); + + else if ((r = getdns_dict_remove_name(response, "/replies_tree/0/header/id"))) + fprintf(stderr, "Could not remove ID from response"); + + else if (!(str = getdns_pretty_print_dict(response))) + fprintf(stderr, "Could not pretty print dict"); + + else if(printf("%s\n", str), free(str), 0) + ; + + if (response) + getdns_dict_destroy(response); + if (upstreams) + getdns_list_destroy(upstreams); + if (upstream) + getdns_dict_destroy(upstream); + if (extensions) + getdns_dict_destroy(extensions); + if (ctx) + getdns_context_destroy(ctx); + + if (r) { + fprintf(stderr, ": %s\n", getdns_get_errorstr_by_id(r)); + exit(EXIT_FAILURE); + } + exit(EXIT_SUCCESS); +} diff --git a/src/test/tpkg/270-header-extension.tpkg/270-header-extension.dsc b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.dsc new file mode 100644 index 00000000..2ac9ae37 --- /dev/null +++ b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.dsc @@ -0,0 +1,16 @@ +BaseName: 270-header-extension +Version: 1.0 +Description: Test json pointers +CreationDate: do 28 apr 2016 13:48:05 CEST +Maintainer: Willem Toorop +Category: +Component: +CmdDepends: +Depends: 200-stub-only-compile.tpkg +Help: +Pre: 270-header-extension.pre +Post: +Test: 270-header-extension.test +AuxFiles: +Passed: +Failure: diff --git a/src/test/tpkg/270-header-extension.tpkg/270-header-extension.good b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.good new file mode 100644 index 00000000..2419d76b --- /dev/null +++ b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.good @@ -0,0 +1,32 @@ +{ + "answer_type": GETDNS_NAMETYPE_DNS, + "canonical_name": , + "replies_tree": + [ + { + "additional": [], + "answer": [], + "answer_type": GETDNS_NAMETYPE_DNS, + "authority": [], + "canonical_name": , + "header": + { + "aa": 0, + "ad": 0, + "ancount": 0, + "arcount": 0, + "cd": 0, + "nscount": 0, + "opcode": GETDNS_OPCODE_STATUS, + "qdcount": 0, + "qr": 1, + "ra": 0, + "rcode": GETDNS_RCODE_NOTIMP, + "rd": 0, + "tc": 0, + "z": 0 + } + } + ], + "status": GETDNS_RESPSTATUS_NO_NAME +} diff --git a/src/test/tpkg/270-header-extension.tpkg/270-header-extension.pre b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.pre new file mode 100644 index 00000000..f6db2030 --- /dev/null +++ b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.pre @@ -0,0 +1,14 @@ +# #-- 270-header-extension.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +( + grep '^CC=' "${BUILDDIR}/build-stub-only/src/Makefile" + grep '^LDFLAGS=' "${BUILDDIR}/build-stub-only/src/Makefile" + + BUILDDIR4SED=`echo "${BUILDDIR}/build-stub-only" | sed 's/\//\\\\\//g'` + sed -e "s/@BUILDDIR@/${BUILDDIR4SED}/g" \ + -e "s/@TPKG_NAME@/${TPKG_NAME}/g" "${TPKG_NAME}.Makefile" +) > Makefile diff --git a/src/test/tpkg/270-header-extension.tpkg/270-header-extension.test b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.test new file mode 100644 index 00000000..b9f372ac --- /dev/null +++ b/src/test/tpkg/270-header-extension.tpkg/270-header-extension.test @@ -0,0 +1,7 @@ +# #-- 270-header-extension.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +make && "./${TPKG_NAME}" | tee out && diff out "${TPKG_NAME}.good" diff --git a/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.dsc b/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.dsc index 96d36c48..61defe2c 100644 --- a/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.dsc +++ b/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.dsc @@ -8,8 +8,8 @@ Component: CmdDepends: Depends: 300-event-loops-configure.tpkg Help: -Pre: -Post: +Pre: 320-event-loops-compile.pre +Post: 320-event-loops-compile.post Test: 320-event-loops-compile.test AuxFiles: Passed: diff --git a/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.post b/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.post new file mode 100644 index 00000000..a3e29076 --- /dev/null +++ b/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.post @@ -0,0 +1,20 @@ +# #-- 320-event-loops-compile.post --# +# source the master var file when it's there +if [ -f ../.tpkg.var.master ] +then + source ../.tpkg.var.master +else + ( + cd .. + [ -f "${TPKG_SRCDIR}/setup-env.sh" ] \ + && sh "${TPKG_SRCDIR}/setup-env.sh" + ) && source ../.tpkg.var.master +fi +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +for f in `cat restore-srcdir-configure-settings` +do + mv "${SRCROOT}/${f}.build-event-loops" "${SRCROOT}/${f}" +done + diff --git a/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.pre b/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.pre new file mode 100644 index 00000000..a48754d4 --- /dev/null +++ b/src/test/tpkg/320-event-loops-compile.tpkg/320-event-loops-compile.pre @@ -0,0 +1,24 @@ +# #-- 320-event-loops-compile.pre--# +# source the master var file when it's there +if [ -f ../.tpkg.var.master ] +then + source ../.tpkg.var.master +else + ( + cd .. + [ -f "${TPKG_SRCDIR}/setup-env.sh" ] \ + && sh "${TPKG_SRCDIR}/setup-env.sh" + ) && source ../.tpkg.var.master +fi +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +echo "" > restore-srcdir-configure-settings +for f in `grep 'CONFIG_[FH][IE][LA][ED][SE]' "${SRCROOT}/configure.ac" | sed -e 's/^.*(\[//g' -e 's/\])//g'` +do + if [ -f "${SRCROOT}/$f" ] + then + mv "${SRCROOT}/${f}" "${SRCROOT}/${f}.build-event-loops" && \ + echo "$f" >> restore-srcdir-configure-settings + fi +done diff --git a/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test b/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test index e80948e0..d0740e4a 100644 --- a/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test +++ b/src/test/tpkg/330-event-loops-unit-tests.tpkg/330-event-loops-unit-tests.test @@ -4,5 +4,13 @@ # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test -cd "${BUILDDIR}/build-event-loops" -make test +( + cd "${BUILDDIR}/build-event-loops" + make test +) && if grep 'ERROR:' result.330-event-loops-unit-tests +then + exit 1 +else + echo 'No ERROR:s found in result.330-event-loops-unit-tests' + ls -l result.330-event-loops-unit-tests +fi