diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2023-07-12 16:53:59 +0000 |
---|---|---|
committer | Laurent Bercot <ska@appnovation.com> | 2023-07-12 16:53:59 +0000 |
commit | 207845f50a8fb54fe8e584928078dc3687399caf (patch) | |
tree | f58eac67edc2dbaba13a48442a2093f76e869991 /src/libs6dns | |
parent | 8cf671e973a4ea2ef7c9ca1321531a7ceeaa5073 (diff) | |
download | s6-dns-207845f50a8fb54fe8e584928078dc3687399caf.tar.gz s6-dns-207845f50a8fb54fe8e584928078dc3687399caf.tar.xz s6-dns-207845f50a8fb54fe8e584928078dc3687399caf.zip |
Pass on all clients, add hosts support wherever applicable
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/libs6dns')
-rw-r--r-- | src/libs6dns/deps-lib/s6dns | 71 | ||||
-rw-r--r-- | src/libs6dns/s6dns_finish.c | 1 | ||||
-rw-r--r-- | src/libs6dns/s6dns_hosts_init.c | 6 | ||||
-rw-r--r-- | src/libs6dns/s6dns_init.c | 6 |
4 files changed, 47 insertions, 37 deletions
diff --git a/src/libs6dns/deps-lib/s6dns b/src/libs6dns/deps-lib/s6dns index 6eaf610..266b574 100644 --- a/src/libs6dns/deps-lib/s6dns +++ b/src/libs6dns/deps-lib/s6dns @@ -1,5 +1,24 @@ +s6dns_analyze_packet.o +s6dns_analyze_qtype_parse.o +s6dns_analyze_record.o +s6dns_analyze_record_a.o +s6dns_analyze_record_aaaa.o +s6dns_analyze_record_caa.o +s6dns_analyze_record_domain.o +s6dns_analyze_record_hinfo.o +s6dns_analyze_record_mx.o +s6dns_analyze_record_soa.o +s6dns_analyze_record_srv.o +s6dns_analyze_record_strings.o +s6dns_analyze_record_unknown.o +s6dns_analyze_rtypetable.o s6dns_constants_error.o s6dns_constants_error_str.o +s6dns_debug_dumpdt_post_recv.o +s6dns_debug_dumpdt_post_send.o +s6dns_debug_dumpdt_pre_send.o +s6dns_debug_dumpdt_stderr.o +s6dns_debug_dumpdt_stdout.o s6dns_debughook_zero.o s6dns_domain_arpafromip4.o s6dns_domain_arpafromip6.o @@ -18,46 +37,49 @@ s6dns_engine_freen.o s6dns_engine_here.o s6dns_engine_nextdeadline.o s6dns_engine_zero.o +s6dns_finish.o +s6dns_fmt_caa.o s6dns_fmt_domainlist.o s6dns_fmt_hinfo.o s6dns_fmt_mx.o s6dns_fmt_soa.o s6dns_fmt_srv.o -s6dns_fmt_caa.o -s6dns_hosts_compile.o s6dns_hosts_aaaaa_q.o s6dns_hosts_aaaaa_string.o +s6dns_hosts_compile.o +s6dns_hosts_here.o +s6dns_hosts_init.o s6dns_hosts_ip_q.o s6dns_hosts_ip_string.o s6dns_hosts_name.o -s6dns_hosts_here.o +s6dns_init.o s6dns_message_counts_next.o s6dns_message_counts_pack.o s6dns_message_counts_unpack.o s6dns_message_counts_zero.o +s6dns_message_get_caa.o s6dns_message_get_domain.o s6dns_message_get_domain_nodecode.o s6dns_message_get_hinfo.o -s6dns_message_get_string.o -s6dns_message_get_string_internal.o -s6dns_message_get_strings.o s6dns_message_get_mx.o s6dns_message_get_soa.o s6dns_message_get_srv.o -s6dns_message_get_caa.o +s6dns_message_get_string.o +s6dns_message_get_string_internal.o +s6dns_message_get_strings.o s6dns_message_header_pack.o s6dns_message_header_unpack.o s6dns_message_header_zero.o -s6dns_message_parse_answer_aaaa.o +s6dns_message_parse.o s6dns_message_parse_answer_a.o +s6dns_message_parse_answer_aaaa.o +s6dns_message_parse_answer_caa.o s6dns_message_parse_answer_domain.o s6dns_message_parse_answer_hinfo.o s6dns_message_parse_answer_mx.o s6dns_message_parse_answer_soa.o s6dns_message_parse_answer_srv.o -s6dns_message_parse_answer_caa.o s6dns_message_parse_answer_strings.o -s6dns_message_parse.o s6dns_message_parse_getrr.o s6dns_message_parse_init.o s6dns_message_parse_next.o @@ -68,36 +90,15 @@ s6dns_rci_here.o s6dns_rci_init.o s6dns_rci_zero.o s6dns_resolve_core.o -s6dns_resolve_parse.o -s6dns_resolven_loop.o -s6dns_resolven_parse.o s6dns_resolve_dpag.o s6dns_resolve_mpag.o s6dns_resolve_name4.o s6dns_resolve_name6.o +s6dns_resolve_parse.o +s6dns_resolven_loop.o +s6dns_resolven_parse.o s6dns_resolvenoq.o -s6dns_resolveq.o s6dns_resolvenoq_aaaaa.o +s6dns_resolveq.o s6dns_resolveq_aaaaa.o -s6dns_analyze_packet.o -s6dns_analyze_qtype_parse.o -s6dns_analyze_record.o -s6dns_analyze_record_a.o -s6dns_analyze_record_aaaa.o -s6dns_analyze_record_hinfo.o -s6dns_analyze_record_mx.o -s6dns_analyze_record_soa.o -s6dns_analyze_record_srv.o -s6dns_analyze_record_caa.o -s6dns_analyze_record_domain.o -s6dns_analyze_record_strings.o -s6dns_analyze_record_unknown.o -s6dns_analyze_rtypetable.o -s6dns_debug_dumpdt_stdout.o -s6dns_debug_dumpdt_stderr.o -s6dns_debug_dumpdt_post_recv.o -s6dns_debug_dumpdt_pre_send.o -s6dns_debug_dumpdt_post_send.o -s6dns_init.o -s6dns_finish.o -lskarnet diff --git a/src/libs6dns/s6dns_finish.c b/src/libs6dns/s6dns_finish.c index f786329..a8a479a 100644 --- a/src/libs6dns/s6dns_finish.c +++ b/src/libs6dns/s6dns_finish.c @@ -7,5 +7,6 @@ void s6dns_finish () { s6dns_engine_free(&s6dns_engine_here) ; + s6dns_hosts_free(&s6dns_hosts_here) ; s6dns_rci_free(&s6dns_rci_here) ; } diff --git a/src/libs6dns/s6dns_hosts_init.c b/src/libs6dns/s6dns_hosts_init.c index 762d738..8f78ab1 100644 --- a/src/libs6dns/s6dns_hosts_init.c +++ b/src/libs6dns/s6dns_hosts_init.c @@ -5,6 +5,7 @@ #include <errno.h> #include <stdlib.h> #include <sys/stat.h> +#include <time.h> #include <skalibs/posixplz.h> #include <skalibs/cdb.h> @@ -12,7 +13,7 @@ #include <s6-dns/hosts.h> -int s6dns_hosts_init_r (cdb *c, char const *txtfile, char const *cdbfile, char const *tmpprefix) +int s6dns_hosts_init (cdb *c, char const *txtfile, char const *cdbfile, char const *tmpprefix) { int fdr ; int fdc = openc_read(cdbfile) ; @@ -25,7 +26,8 @@ int s6dns_hosts_init_r (cdb *c, char const *txtfile, char const *cdbfile, char c if (errno == ENOENT) goto useit ; else goto errc ; } - if (stc.st_mtim > str.st_mtim) goto useit ; + if (stc.st_mtim.tv_sec > str.st_mtim.tv_sec + || (stc.st_mtim.tv_sec == str.st_mtim.tv_sec && stc.st_mtim.tv_nsec > str.st_mtim.tv_nsec)) goto useit ; fd_close(fdc) ; } diff --git a/src/libs6dns/s6dns_init.c b/src/libs6dns/s6dns_init.c index 7f98d13..10dcbf5 100644 --- a/src/libs6dns/s6dns_init.c +++ b/src/libs6dns/s6dns_init.c @@ -1,10 +1,16 @@ /* ISC license. */ #include <s6-dns/s6dns-rci.h> +#include <s6-dns/hosts.h> #include <s6-dns/s6dns.h> int s6dns_init (void) { if (!s6dns_rci_init(&s6dns_rci_here, "/etc/resolv.conf")) return 0 ; + if (s6dns_hosts_init(&s6dns_hosts_here, "/etc/hosts", "/etc/hosts.cdb", "/tmp/hosts.cdb") == -1) goto err ; return 1 ; + + err: + s6dns_rci_free(&s6dns_rci_here) ; + return 0 ; } |