diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/Symbols.list | 59 | ||||
-rw-r--r-- | lib/libc/asr/asr.c | 52 | ||||
-rw-r--r-- | lib/libc/asr/asr_debug.c | 26 | ||||
-rw-r--r-- | lib/libc/asr/asr_private.h | 70 | ||||
-rw-r--r-- | lib/libc/asr/asr_utils.c | 26 | ||||
-rw-r--r-- | lib/libc/asr/getaddrinfo_async.c | 139 | ||||
-rw-r--r-- | lib/libc/asr/gethostnamadr_async.c | 50 | ||||
-rw-r--r-- | lib/libc/asr/getnameinfo_async.c | 14 | ||||
-rw-r--r-- | lib/libc/asr/getnetnamadr_async.c | 44 | ||||
-rw-r--r-- | lib/libc/asr/getrrsetbyname_async.c | 16 | ||||
-rw-r--r-- | lib/libc/asr/res_init.c | 6 | ||||
-rw-r--r-- | lib/libc/asr/res_mkquery.c | 16 | ||||
-rw-r--r-- | lib/libc/asr/res_search_async.c | 27 | ||||
-rw-r--r-- | lib/libc/asr/res_send_async.c | 54 |
14 files changed, 238 insertions, 361 deletions
diff --git a/lib/libc/Symbols.list b/lib/libc/Symbols.list index 26ccb98b5c5..9183ae0993a 100644 --- a/lib/libc/Symbols.list +++ b/lib/libc/Symbols.list @@ -1005,49 +1005,32 @@ wcwidth /* asr */ asr_abort -asr_addr_as_fqdn -asr_async_free -asr_async_new -asr_ctx_unref -asr_debug -asr_dname_from_fqdn -asr_dump_config -asr_dump_packet -asr_hostalias -asr_iter_db -asr_make_fqdn -asr_pack_header -asr_pack_init -asr_pack_query -asr_parse_namedb_line -asr_print_sockaddr -asr_querystr -asr_resolver -asr_resolver_done asr_run asr_run_sync -asr_sockaddr_from_str -asr_statestr -asr_strdname -asr_transitionstr -asr_unpack_header -asr_unpack_init -asr_unpack_query -asr_unpack_rr -asr_use_resolver +freerrset +getaddrinfo getaddrinfo_async +gethostbyaddr gethostbyaddr_async -gethostbyaddr_async_ctx +gethostbyname +gethostbyname2 gethostbyname2_async gethostbyname_async +getnameinfo getnameinfo_async +getnetbyaddr getnetbyaddr_async +getnetbyname getnetbyname_async +getrrsetbyname getrrsetbyname_async +res_init +res_mkquery +res_query res_query_async -res_query_async_ctx +res_querydomain +res_search res_search_async -res_search_async_ctx res_send_async /* net */ @@ -1097,17 +1080,9 @@ ether_ntoa ether_ntohost freeaddrinfo freeifaddrs -freerrset gai_strerror -getaddrinfo -gethostbyaddr -gethostbyname2 -gethostbyname gethostent getifaddrs -getnameinfo -getnetbyaddr -getnetbyname getnetent getpeereid getprotobyname @@ -1116,7 +1091,6 @@ getprotobynumber getprotobynumber_r getprotoent getprotoent_r -getrrsetbyname getservbyname getservbyname_r getservbyport @@ -1174,11 +1148,6 @@ rcmd rcmd_af rcmdsh recv -res_init -res_mkquery -res_query -res_querydomain -res_search rresvport rresvport_af ruserok diff --git a/lib/libc/asr/asr.c b/lib/libc/asr/asr.c index c8008681b5e..8c3f15e8f0c 100644 --- a/lib/libc/asr/asr.c +++ b/lib/libc/asr/asr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: asr.c,v 1.39 2015/09/02 13:47:47 deraadt Exp $ */ +/* $OpenBSD: asr.c,v 1.40 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2010-2012 Eric Faurot <eric@openbsd.org> * @@ -88,7 +88,7 @@ static struct asr *_asr = NULL; /* Allocate and configure an async "resolver". */ void * -asr_resolver(const char *conf) +_asr_resolver(const char *conf) { static int init = 0; struct asr *asr; @@ -157,7 +157,7 @@ asr_resolver(const char *conf) * Drop the reference to the current context. */ void -asr_resolver_done(void *arg) +_asr_resolver_done(void *arg) { struct asr *asr = arg; struct asr **priv; @@ -170,7 +170,7 @@ asr_resolver_done(void *arg) *priv = NULL; } - asr_ctx_unref(asr->a_ctx); + _asr_ctx_unref(asr->a_ctx); free(asr->a_path); free(asr); } @@ -181,7 +181,7 @@ asr_resolver_done(void *arg) void asr_abort(struct asr_query *as) { - asr_async_free(as); + _asr_async_free(as); } /* @@ -205,7 +205,7 @@ asr_run(struct asr_query *as, struct asr_result *ar) DPRINT(" fd=%i timeout=%i", ar->ar_fd, ar->ar_timeout); DPRINT("\n"); if (r == ASYNC_DONE) - asr_async_free(as); + _asr_async_free(as); errno = saved_errno; @@ -245,7 +245,7 @@ asr_run_sync(struct asr_query *as, struct asr_result *ar) * is running. */ struct asr_query * -asr_async_new(struct asr_ctx *ac, int type) +_asr_async_new(struct asr_ctx *ac, int type) { struct asr_query *as; @@ -267,7 +267,7 @@ asr_async_new(struct asr_ctx *ac, int type) * Free an async query and unref the associated context. */ void -asr_async_free(struct asr_query *as) +_asr_async_free(struct asr_query *as) { DPRINT("asr: asr_async_free(%p)\n", as); switch (as->as_type) { @@ -284,14 +284,14 @@ asr_async_free(struct asr_query *as) case ASR_SEARCH: if (as->as.search.subq) - asr_async_free(as->as.search.subq); + _asr_async_free(as->as.search.subq); if (as->as.search.name) free(as->as.search.name); break; case ASR_GETRRSETBYNAME: if (as->as.rrset.subq) - asr_async_free(as->as.rrset.subq); + _asr_async_free(as->as.rrset.subq); if (as->as.rrset.name) free(as->as.rrset.name); break; @@ -299,7 +299,7 @@ asr_async_free(struct asr_query *as) case ASR_GETHOSTBYNAME: case ASR_GETHOSTBYADDR: if (as->as.hostnamadr.subq) - asr_async_free(as->as.hostnamadr.subq); + _asr_async_free(as->as.hostnamadr.subq); if (as->as.hostnamadr.name) free(as->as.hostnamadr.name); break; @@ -307,14 +307,14 @@ asr_async_free(struct asr_query *as) case ASR_GETNETBYNAME: case ASR_GETNETBYADDR: if (as->as.netnamadr.subq) - asr_async_free(as->as.netnamadr.subq); + _asr_async_free(as->as.netnamadr.subq); if (as->as.netnamadr.name) free(as->as.netnamadr.name); break; case ASR_GETADDRINFO: if (as->as.ai.subq) - asr_async_free(as->as.ai.subq); + _asr_async_free(as->as.ai.subq); if (as->as.ai.aifirst) freeaddrinfo(as->as.ai.aifirst); if (as->as.ai.hostname) @@ -327,11 +327,11 @@ asr_async_free(struct asr_query *as) case ASR_GETNAMEINFO: if (as->as.ni.subq) - asr_async_free(as->as.ni.subq); + _asr_async_free(as->as.ni.subq); break; } - asr_ctx_unref(as->as_ctx); + _asr_ctx_unref(as->as_ctx); free(as); } @@ -341,7 +341,7 @@ asr_async_free(struct asr_query *as) * using this context. */ struct asr_ctx * -asr_use_resolver(void *arg) +_asr_use_resolver(void *arg) { struct asr *asr = arg; struct asr **priv; @@ -351,7 +351,7 @@ asr_use_resolver(void *arg) priv = _THREAD_PRIVATE(_asr, _asr, &_asr); if (*priv == NULL) { DPRINT("setting up thread-local resolver\n"); - *priv = asr_resolver(NULL); + *priv = _asr_resolver(NULL); } asr = *priv; } @@ -375,7 +375,7 @@ asr_ctx_ref(struct asr_ctx *ac) * count drops to 0. */ void -asr_ctx_unref(struct asr_ctx *ac) +_asr_ctx_unref(struct asr_ctx *ac) { DPRINT("asr: asr_ctx_unref(ctx=%p) refcount=%i\n", ac, ac ? ac->ac_refcount : 0); @@ -454,7 +454,7 @@ asr_check_reload(struct asr *asr) asr_ctx_envopts(ac); #endif if (asr->a_ctx) - asr_ctx_unref(asr->a_ctx); + _asr_ctx_unref(asr->a_ctx); asr->a_ctx = ac; } @@ -467,7 +467,7 @@ asr_check_reload(struct asr *asr) * error. */ size_t -asr_make_fqdn(const char *name, const char *domain, char *buf, size_t buflen) +_asr_make_fqdn(const char *name, const char *domain, char *buf, size_t buflen) { size_t len; @@ -548,7 +548,7 @@ asr_ctx_add_searchdomain(struct asr_ctx *ac, const char *domain) if (ac->ac_domcount == ASR_MAXDOM) return (-1); - if (asr_make_fqdn(domain, NULL, buf, sizeof(buf)) == 0) + if (_asr_make_fqdn(domain, NULL, buf, sizeof(buf)) == 0) return (-1); if ((ac->ac_dom[ac->ac_domcount] = strdup(buf)) == NULL) @@ -817,7 +817,7 @@ asr_parse_nameserver(struct sockaddr *sa, const char *s) return (-1); } - if (asr_sockaddr_from_str(sa, PF_UNSPEC, s) == -1) + if (_asr_sockaddr_from_str(sa, PF_UNSPEC, s) == -1) return (-1); if (sa->sa_family == PF_INET) @@ -834,7 +834,7 @@ asr_parse_nameserver(struct sockaddr *sa, const char *s) * truncated if it exceeds "max" chars. The function returns "buf". */ char * -asr_strdname(const char *_dname, char *buf, size_t max) +_asr_strdname(const char *_dname, char *buf, size_t max) { const unsigned char *dname = _dname; char *res; @@ -869,7 +869,7 @@ asr_strdname(const char *_dname, char *buf, size_t max) * size "ntoken" and returns the number of token on the line. */ int -asr_parse_namedb_line(FILE *file, char **tokens, int ntoken, char *lbuf, size_t sz) +_asr_parse_namedb_line(FILE *file, char **tokens, int ntoken, char *lbuf, size_t sz) { size_t len; char *buf; @@ -902,7 +902,7 @@ asr_parse_namedb_line(FILE *file, char **tokens, int ntoken, char *lbuf, size_t * Return 0 on success, or -1 if no more DBs is available. */ int -asr_iter_db(struct asr_query *as) +_asr_iter_db(struct asr_query *as) { if (as->as_db_idx >= as->as_ctx->ac_dbcount) { DPRINT("asr_iter_db: done\n"); @@ -921,7 +921,7 @@ asr_iter_db(struct asr_query *as) * return "abuf". Otherwise return NULL. */ char * -asr_hostalias(struct asr_ctx *ac, const char *name, char *abuf, size_t abufsz) +_asr_hostalias(struct asr_ctx *ac, const char *name, char *abuf, size_t abufsz) { #if ASR_OPT_HOSTALIASES FILE *fp; diff --git a/lib/libc/asr/asr_debug.c b/lib/libc/asr/asr_debug.c index 2abb6e15140..527b2b55606 100644 --- a/lib/libc/asr/asr_debug.c +++ b/lib/libc/asr/asr_debug.c @@ -1,4 +1,4 @@ -/* $OpenBSD: asr_debug.c,v 1.19 2015/06/20 01:16:25 jca Exp $ */ +/* $OpenBSD: asr_debug.c,v 1.20 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -55,7 +55,7 @@ rcodetostr(uint16_t v) static const char * print_dname(const char *_dname, char *buf, size_t max) { - return (asr_strdname(_dname, buf, max)); + return (_asr_strdname(_dname, buf, max)); } static const char * @@ -162,7 +162,7 @@ print_header(const struct asr_dns_header *h, char *buf, size_t max) } void -asr_dump_packet(FILE *f, const void *data, size_t len) +_asr_dump_packet(FILE *f, const void *data, size_t len) { char buf[1024]; struct asr_unpack p; @@ -174,9 +174,9 @@ asr_dump_packet(FILE *f, const void *data, size_t len) if (f == NULL) return; - asr_unpack_init(&p, data, len); + _asr_unpack_init(&p, data, len); - if (asr_unpack_header(&p, &h) == -1) { + if (_asr_unpack_header(&p, &h) == -1) { fprintf(f, ";; BAD PACKET: %s\n", p.err); return; } @@ -186,7 +186,7 @@ asr_dump_packet(FILE *f, const void *data, size_t len) if (h.qdcount) fprintf(f, ";; QUERY SECTION:\n"); for (i = 0; i < h.qdcount; i++) { - if (asr_unpack_query(&p, &q) == -1) + if (_asr_unpack_query(&p, &q) == -1) goto error; fprintf(f, "%s\n", print_query(&q, buf, sizeof buf)); } @@ -204,7 +204,7 @@ asr_dump_packet(FILE *f, const void *data, size_t len) if (i == ar) fprintf(f, "\n;; ADDITIONAL SECTION:\n"); - if (asr_unpack_rr(&p, &rr) == -1) + if (_asr_unpack_rr(&p, &rr) == -1) goto error; fprintf(f, "%s\n", print_rr(&rr, buf, sizeof buf)); } @@ -219,7 +219,7 @@ asr_dump_packet(FILE *f, const void *data, size_t len) } const char * -asr_print_sockaddr(const struct sockaddr *sa, char *buf, size_t len) +_asr_print_sockaddr(const struct sockaddr *sa, char *buf, size_t len) { char h[256]; int portno; @@ -250,7 +250,7 @@ asr_print_sockaddr(const struct sockaddr *sa, char *buf, size_t len) } void -asr_dump_config(FILE *f, struct asr *a) +_asr_dump_config(FILE *f, struct asr *a) { char buf[256]; int i; @@ -300,7 +300,7 @@ asr_dump_config(FILE *f, struct asr *a) ac->ac_nstimeout, ac->ac_nsretries); for (i = 0; i < ac->ac_nscount; i++) - fprintf(f, " %s\n", asr_print_sockaddr(ac->ac_ns[i], buf, + fprintf(f, " %s\n", _asr_print_sockaddr(ac->ac_ns[i], buf, sizeof buf)); fprintf(f, "LOOKUP %s", ac->ac_db); fprintf(f, "\n------------------------------------\n"); @@ -309,7 +309,7 @@ asr_dump_config(FILE *f, struct asr *a) #define CASE(n) case n: return #n const char * -asr_statestr(int state) +_asr_statestr(int state) { switch (state) { CASE(ASR_STATE_INIT); @@ -332,7 +332,7 @@ asr_statestr(int state) }; const char * -asr_querystr(int type) +_asr_querystr(int type) { switch (type) { CASE(ASR_SEND); @@ -350,7 +350,7 @@ asr_querystr(int type) } const char * -asr_transitionstr(int type) +_asr_transitionstr(int type) { switch (type) { CASE(ASYNC_COND); diff --git a/lib/libc/asr/asr_private.h b/lib/libc/asr/asr_private.h index cd508cf5726..13effd7f134 100644 --- a/lib/libc/asr/asr_private.h +++ b/lib/libc/asr/asr_private.h @@ -1,4 +1,4 @@ -/* $OpenBSD: asr_private.h,v 1.31 2015/06/20 01:16:25 jca Exp $ */ +/* $OpenBSD: asr_private.h,v 1.32 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -297,37 +297,41 @@ enum asr_state { }; +__BEGIN_HIDDEN_DECLS + /* asr_utils.c */ -void asr_pack_init(struct asr_pack *, char *, size_t); -int asr_pack_header(struct asr_pack *, const struct asr_dns_header *); -int asr_pack_query(struct asr_pack *, uint16_t, uint16_t, const char *); -void asr_unpack_init(struct asr_unpack *, const char *, size_t); -int asr_unpack_header(struct asr_unpack *, struct asr_dns_header *); -int asr_unpack_query(struct asr_unpack *, struct asr_dns_query *); -int asr_unpack_rr(struct asr_unpack *, struct asr_dns_rr *); -int asr_sockaddr_from_str(struct sockaddr *, int, const char *); -ssize_t asr_dname_from_fqdn(const char *, char *, size_t); -ssize_t asr_addr_as_fqdn(const char *, int, char *, size_t); +void _asr_pack_init(struct asr_pack *, char *, size_t); +int _asr_pack_header(struct asr_pack *, const struct asr_dns_header *); +int _asr_pack_query(struct asr_pack *, uint16_t, uint16_t, const char *); +void _asr_unpack_init(struct asr_unpack *, const char *, size_t); +int _asr_unpack_header(struct asr_unpack *, struct asr_dns_header *); +int _asr_unpack_query(struct asr_unpack *, struct asr_dns_query *); +int _asr_unpack_rr(struct asr_unpack *, struct asr_dns_rr *); +int _asr_sockaddr_from_str(struct sockaddr *, int, const char *); +ssize_t _asr_dname_from_fqdn(const char *, char *, size_t); +ssize_t _asr_addr_as_fqdn(const char *, int, char *, size_t); /* asr.c */ -void *asr_resolver(const char *); -void asr_resolver_done(void *); -struct asr_ctx *asr_use_resolver(void *); -void asr_ctx_unref(struct asr_ctx *); -struct asr_query *asr_async_new(struct asr_ctx *, int); -void asr_async_free(struct asr_query *); -size_t asr_make_fqdn(const char *, const char *, char *, size_t); -char *asr_strdname(const char *, char *, size_t); -int asr_iter_db(struct asr_query *); -int asr_parse_namedb_line(FILE *, char **, int, char *, size_t); -char *asr_hostalias(struct asr_ctx *, const char *, char *, size_t); +void *_asr_resolver(const char *); +void _asr_resolver_done(void *); +struct asr_ctx *_asr_use_resolver(void *); +void _asr_ctx_unref(struct asr_ctx *); +struct asr_query *_asr_async_new(struct asr_ctx *, int); +void _asr_async_free(struct asr_query *); +size_t _asr_make_fqdn(const char *, const char *, char *, size_t); +char *_asr_strdname(const char *, char *, size_t); +int _asr_iter_db(struct asr_query *); +int _asr_parse_namedb_line(FILE *, char **, int, char *, size_t); +char *_asr_hostalias(struct asr_ctx *, const char *, char *, size_t); /* *_async.c */ -struct asr_query *res_query_async_ctx(const char *, int, int, struct asr_ctx *); -struct asr_query *res_search_async_ctx(const char *, int, int, struct asr_ctx *); -struct asr_query *gethostbyaddr_async_ctx(const void *, socklen_t, int, +struct asr_query *_res_query_async_ctx(const char *, int, int, struct asr_ctx *); +struct asr_query *_res_search_async_ctx(const char *, int, int, struct asr_ctx *); +struct asr_query *_gethostbyaddr_async_ctx(const void *, socklen_t, int, struct asr_ctx *); +int _asr_iter_domain(struct asr_query *, const char *, char *, size_t); + #ifdef DEBUG #define DPRINT(...) do { if(asr_debug) { \ @@ -339,14 +343,14 @@ struct asr_query *gethostbyaddr_async_ctx(const void *, socklen_t, int, fprintf(asr_debug, "--------------\n"); \ } } while (0) -const char *asr_querystr(int); -const char *asr_statestr(int); -const char *asr_transitionstr(int); -const char *asr_print_sockaddr(const struct sockaddr *, char *, size_t); -void asr_dump_config(FILE *, struct asr *); -void asr_dump_packet(FILE *, const void *, size_t); +const char *_asr_querystr(int); +const char *_asr_statestr(int); +const char *_asr_transitionstr(int); +const char *_asr_print_sockaddr(const struct sockaddr *, char *, size_t); +void _asr_dump_config(FILE *, struct asr *); +void _asr_dump_packet(FILE *, const void *, size_t); -extern FILE * asr_debug; +extern FILE *_asr_debug; #else /* DEBUG */ @@ -362,3 +366,5 @@ extern FILE * asr_debug; asr_statestr((a)->as_state), \ asr_statestr((s))); \ (a)->as_state = (s); } while (0) + +__END_HIDDEN_DECLS diff --git a/lib/libc/asr/asr_utils.c b/lib/libc/asr/asr_utils.c index 2d90f1c8fb4..44a89114f4a 100644 --- a/lib/libc/asr/asr_utils.c +++ b/lib/libc/asr/asr_utils.c @@ -1,4 +1,4 @@ -/* $OpenBSD: asr_utils.c,v 1.12 2014/03/26 18:13:15 eric Exp $ */ +/* $OpenBSD: asr_utils.c,v 1.13 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2009-2012 Eric Faurot <eric@faurot.net> * @@ -59,7 +59,7 @@ dname_check_label(const char *s, size_t l) } ssize_t -asr_dname_from_fqdn(const char *str, char *dst, size_t max) +_asr_dname_from_fqdn(const char *str, char *dst, size_t max) { ssize_t res; size_t l, n; @@ -162,7 +162,7 @@ dname_expand(const unsigned char *data, size_t len, size_t offset, } void -asr_pack_init(struct asr_pack *pack, char *buf, size_t len) +_asr_pack_init(struct asr_pack *pack, char *buf, size_t len) { pack->buf = buf; pack->len = len; @@ -171,7 +171,7 @@ asr_pack_init(struct asr_pack *pack, char *buf, size_t len) } void -asr_unpack_init(struct asr_unpack *unpack, const char *buf, size_t len) +_asr_unpack_init(struct asr_unpack *unpack, const char *buf, size_t len) { unpack->buf = buf; unpack->len = len; @@ -252,7 +252,7 @@ unpack_dname(struct asr_unpack *p, char *dst, size_t max) } int -asr_unpack_header(struct asr_unpack *p, struct asr_dns_header *h) +_asr_unpack_header(struct asr_unpack *p, struct asr_dns_header *h) { if (unpack_data(p, h, HFIXEDSZ) == -1) return (-1); @@ -267,7 +267,7 @@ asr_unpack_header(struct asr_unpack *p, struct asr_dns_header *h) } int -asr_unpack_query(struct asr_unpack *p, struct asr_dns_query *q) +_asr_unpack_query(struct asr_unpack *p, struct asr_dns_query *q) { unpack_dname(p, q->q_dname, sizeof(q->q_dname)); unpack_u16(p, &q->q_type); @@ -277,7 +277,7 @@ asr_unpack_query(struct asr_unpack *p, struct asr_dns_query *q) } int -asr_unpack_rr(struct asr_unpack *p, struct asr_dns_rr *rr) +_asr_unpack_rr(struct asr_unpack *p, struct asr_dns_rr *rr) { uint16_t rdlen; size_t save_offset; @@ -390,7 +390,7 @@ pack_dname(struct asr_pack *p, const char *dname) } int -asr_pack_header(struct asr_pack *p, const struct asr_dns_header *h) +_asr_pack_header(struct asr_pack *p, const struct asr_dns_header *h) { struct asr_dns_header c; @@ -405,7 +405,7 @@ asr_pack_header(struct asr_pack *p, const struct asr_dns_header *h) } int -asr_pack_query(struct asr_pack *p, uint16_t type, uint16_t class, const char *dname) +_asr_pack_query(struct asr_pack *p, uint16_t type, uint16_t class, const char *dname) { pack_dname(p, dname); pack_u16(p, type); @@ -415,7 +415,7 @@ asr_pack_query(struct asr_pack *p, uint16_t type, uint16_t class, const char *dn } int -asr_sockaddr_from_str(struct sockaddr *sa, int family, const char *str) +_asr_sockaddr_from_str(struct sockaddr *sa, int family, const char *str) { struct in_addr ina; struct in6_addr in6a; @@ -426,9 +426,9 @@ asr_sockaddr_from_str(struct sockaddr *sa, int family, const char *str) switch (family) { case PF_UNSPEC: - if (asr_sockaddr_from_str(sa, PF_INET, str) == 0) + if (_asr_sockaddr_from_str(sa, PF_INET, str) == 0) return (0); - return asr_sockaddr_from_str(sa, PF_INET6, str); + return _asr_sockaddr_from_str(sa, PF_INET6, str); case PF_INET: if (inet_pton(PF_INET, str, &ina) != 1) @@ -485,7 +485,7 @@ asr_sockaddr_from_str(struct sockaddr *sa, int family, const char *str) } ssize_t -asr_addr_as_fqdn(const char *addr, int family, char *dst, size_t max) +_asr_addr_as_fqdn(const char *addr, int family, char *dst, size_t max) { const struct in6_addr *in6_addr; in_addr_t in_addr; diff --git a/lib/libc/asr/getaddrinfo_async.c b/lib/libc/asr/getaddrinfo_async.c index 5974bf39b63..bccf26123a3 100644 --- a/lib/libc/asr/getaddrinfo_async.c +++ b/lib/libc/asr/getaddrinfo_async.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getaddrinfo_async.c,v 1.41 2015/08/16 20:37:25 jca Exp $ */ +/* $OpenBSD: getaddrinfo_async.c,v 1.42 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -51,7 +51,6 @@ struct match { static int getaddrinfo_async_run(struct asr_query *, struct asr_result *); static int get_port(const char *, const char *, int); static int iter_family(struct asr_query *, int); -static int iter_domain(struct asr_query *, const char *, char *, size_t); static int addrinfo_add(struct asr_query *, const struct sockaddr *, const char *); static int addrinfo_from_file(struct asr_query *, int, FILE *); static int addrinfo_from_pkt(struct asr_query *, char *, size_t); @@ -90,13 +89,13 @@ getaddrinfo_async(const char *hostname, const char *servname, struct asr_query *as; char alias[MAXDNAME]; - ac = asr_use_resolver(asr); - if ((as = asr_async_new(ac, ASR_GETADDRINFO)) == NULL) + ac = _asr_use_resolver(asr); + if ((as = _asr_async_new(ac, ASR_GETADDRINFO)) == NULL) goto abort; /* errno set */ as->as_run = getaddrinfo_async_run; if (hostname) { - if (asr_hostalias(ac, hostname, alias, sizeof(alias))) + if (_asr_hostalias(ac, hostname, alias, sizeof(alias))) hostname = alias; if ((as->as.ai.hostname = strdup(hostname)) == NULL) goto abort; /* errno set */ @@ -111,12 +110,12 @@ getaddrinfo_async(const char *hostname, const char *servname, as->as.ai.hints.ai_flags = AI_ADDRCONFIG; } - asr_ctx_unref(ac); + _asr_ctx_unref(ac); return (as); abort: if (as) - asr_async_free(as); - asr_ctx_unref(ac); + _asr_async_free(as); + _asr_ctx_unref(ac); return (NULL); } @@ -260,7 +259,7 @@ getaddrinfo_async_run(struct asr_query *as, struct asr_result *ar) str = (ai->ai_flags & AI_PASSIVE) ? \ "::" : "::1"; /* This can't fail */ - asr_sockaddr_from_str(&sa.sa, family, str); + _asr_sockaddr_from_str(&sa.sa, family, str); if ((r = addrinfo_add(as, &sa.sa, NULL))) { ar->ar_gai_errno = r; break; @@ -278,7 +277,7 @@ getaddrinfo_async_run(struct asr_query *as, struct asr_result *ar) family != -1; family = iter_family(as, 0)) { - if (asr_sockaddr_from_str(&sa.sa, family, + if (_asr_sockaddr_from_str(&sa.sa, family, as->as.ai.hostname) == -1) continue; @@ -301,7 +300,7 @@ getaddrinfo_async_run(struct asr_query *as, struct asr_result *ar) break; case ASR_STATE_NEXT_DB: - if (asr_iter_db(as) == -1) { + if (_asr_iter_db(as) == -1) { async_set_state(as, ASR_STATE_NOT_FOUND); break; } @@ -336,7 +335,7 @@ getaddrinfo_async_run(struct asr_query *as, struct asr_result *ar) free(as->as.ai.fqdn); as->as.ai.fqdn = NULL; - r = iter_domain(as, as->as.ai.hostname, fqdn, sizeof(fqdn)); + r = _asr_iter_domain(as, as->as.ai.hostname, fqdn, sizeof(fqdn)); if (r == -1) { async_set_state(as, ASR_STATE_NEXT_DB); break; @@ -380,7 +379,7 @@ getaddrinfo_async_run(struct asr_query *as, struct asr_result *ar) break; } - as->as.ai.subq = res_query_async_ctx(as->as.ai.fqdn, + as->as.ai.subq = _res_query_async_ctx(as->as.ai.fqdn, C_IN, (family == AF_INET6) ? T_AAAA : T_A, as->as_ctx); @@ -571,7 +570,7 @@ domcat(const char *name, const char *domain, char *buf, size_t buflen) { size_t r; - r = asr_make_fqdn(name, domain, buf, buflen); + r = _asr_make_fqdn(name, domain, buf, buflen); if (r == 0) return (0); buf[r - 1] = '\0'; @@ -580,102 +579,6 @@ domcat(const char *name, const char *domain, char *buf, size_t buflen) } /* - * Implement the search domain strategy. - * - * XXX duplicate from res_search_async - * - * This function works as a generator that constructs complete domains in - * buffer "buf" of size "len" for the given host name "name", according to the - * search rules defined by the resolving context. It is supposed to be called - * multiple times (with the same name) to generate the next possible domain - * name, if any. - * - * It returns -1 if all possibilities have been exhausted, 0 if there was an - * error generating the next name, or the resulting name length. - */ -static int -iter_domain(struct asr_query *as, const char *name, char * buf, size_t len) -{ - const char *c; - int dots; - - switch (as->as_dom_step) { - - case DOM_INIT: - /* First call */ - - /* - * If "name" is an FQDN, that's the only result and we - * don't try anything else. - */ - if (strlen(name) && name[strlen(name) - 1] == '.') { - DPRINT("asr: iter_domain(\"%s\") fqdn\n", name); - as->as_dom_flags |= ASYNC_DOM_FQDN; - as->as_dom_step = DOM_DONE; - return (domcat(name, NULL, buf, len)); - } - - /* - * Otherwise, we iterate through the specified search domains. - */ - as->as_dom_step = DOM_DOMAIN; - as->as_dom_idx = 0; - - /* - * If "name" as enough dots, use it as-is first, as indicated - * in resolv.conf(5). - */ - dots = 0; - for (c = name; *c; c++) - dots += (*c == '.'); - if (dots >= as->as_ctx->ac_ndots) { - DPRINT("asr: iter_domain(\"%s\") ndots\n", name); - as->as_dom_flags |= ASYNC_DOM_NDOTS; - if (strlcpy(buf, name, len) >= len) - return (0); - return (strlen(buf)); - } - /* Otherwise, starts using the search domains */ - /* FALLTHROUGH */ - - case DOM_DOMAIN: - if (as->as_dom_idx < as->as_ctx->ac_domcount && - (as->as_ctx->ac_options & RES_DNSRCH || ( - as->as_ctx->ac_options & RES_DEFNAMES && - as->as_dom_idx == 0 && - strchr(name, '.') == NULL))) { - DPRINT("asr: iter_domain(\"%s\") domain \"%s\"\n", - name, as->as_ctx->ac_dom[as->as_dom_idx]); - as->as_dom_flags |= ASYNC_DOM_DOMAIN; - return (domcat(name, - as->as_ctx->ac_dom[as->as_dom_idx++], buf, len)); - } - - /* No more domain to try. */ - - as->as_dom_step = DOM_DONE; - - /* - * If the name was not tried as an absolute name before, - * do it now. - */ - if (!(as->as_dom_flags & ASYNC_DOM_NDOTS)) { - DPRINT("asr: iter_domain(\"%s\") as is\n", name); - as->as_dom_flags |= ASYNC_DOM_ASIS; - if (strlcpy(buf, name, len) >= len) - return (0); - return (strlen(buf)); - } - /* Otherwise, we are done. */ - - case DOM_DONE: - default: - DPRINT("asr: iter_domain(\"%s\") done\n", name); - return (-1); - } -} - -/* * Use the sockaddr at "sa" to extend the result list on the "as" context, * with the specified canonical name "cname". This function adds one * entry per protocol/socktype match. @@ -754,14 +657,14 @@ addrinfo_from_file(struct asr_query *as, int family, FILE *f) } u; for (;;) { - n = asr_parse_namedb_line(f, tokens, MAXTOKEN, buf, sizeof(buf)); + n = _asr_parse_namedb_line(f, tokens, MAXTOKEN, buf, sizeof(buf)); if (n == -1) break; /* ignore errors reading the file */ for (i = 1; i < n; i++) { if (strcasecmp(as->as.ai.hostname, tokens[i])) continue; - if (asr_sockaddr_from_str(&u.sa, family, tokens[0]) == -1) + if (_asr_sockaddr_from_str(&u.sa, family, tokens[0]) == -1) continue; break; } @@ -794,13 +697,13 @@ addrinfo_from_pkt(struct asr_query *as, char *pkt, size_t pktlen) } u; char buf[MAXDNAME], *c; - asr_unpack_init(&p, pkt, pktlen); - asr_unpack_header(&p, &h); + _asr_unpack_init(&p, pkt, pktlen); + _asr_unpack_header(&p, &h); for (; h.qdcount; h.qdcount--) - asr_unpack_query(&p, &q); + _asr_unpack_query(&p, &q); for (i = 0; i < h.ancount; i++) { - asr_unpack_rr(&p, &rr); + _asr_unpack_rr(&p, &rr); if (rr.rr_type != q.q_type || rr.rr_class != q.q_class) continue; @@ -820,7 +723,7 @@ addrinfo_from_pkt(struct asr_query *as, char *pkt, size_t pktlen) continue; if (as->as.ai.hints.ai_flags & AI_CANONNAME) { - asr_strdname(rr.rr_dname, buf, sizeof buf); + _asr_strdname(rr.rr_dname, buf, sizeof buf); buf[strlen(buf) - 1] = '\0'; c = res_hnok(buf) ? buf : NULL; } else if (as->as.ai.hints.ai_flags & AI_FQDN) @@ -915,7 +818,7 @@ addrinfo_from_yp(struct asr_query *as, int family, char *line) if (ntok < 2) continue; - if (asr_sockaddr_from_str(&u.sa, family, tokens[0]) == -1) + if (_asr_sockaddr_from_str(&u.sa, family, tokens[0]) == -1) continue; if (as->as.ai.hints.ai_flags & (AI_CANONNAME | AI_FQDN)) diff --git a/lib/libc/asr/gethostnamadr_async.c b/lib/libc/asr/gethostnamadr_async.c index 2d895aad400..bf098e351d4 100644 --- a/lib/libc/asr/gethostnamadr_async.c +++ b/lib/libc/asr/gethostnamadr_async.c @@ -1,4 +1,4 @@ -/* $OpenBSD: gethostnamadr_async.c,v 1.37 2015/05/29 08:49:37 eric Exp $ */ +/* $OpenBSD: gethostnamadr_async.c,v 1.38 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -84,8 +84,8 @@ gethostbyname2_async(const char *name, int af, void *asr) return (NULL); } - ac = asr_use_resolver(asr); - if ((as = asr_async_new(ac, ASR_GETHOSTBYNAME)) == NULL) + ac = _asr_use_resolver(asr); + if ((as = _asr_async_new(ac, ASR_GETHOSTBYNAME)) == NULL) goto abort; /* errno set */ as->as_run = gethostnamadr_async_run; @@ -98,13 +98,13 @@ gethostbyname2_async(const char *name, int af, void *asr) if (as->as.hostnamadr.name == NULL) goto abort; /* errno set */ - asr_ctx_unref(ac); + _asr_ctx_unref(ac); return (as); abort: if (as) - asr_async_free(as); - asr_ctx_unref(ac); + _asr_async_free(as); + _asr_ctx_unref(ac); return (NULL); } @@ -114,20 +114,20 @@ gethostbyaddr_async(const void *addr, socklen_t len, int af, void *asr) struct asr_ctx *ac; struct asr_query *as; - ac = asr_use_resolver(asr); - as = gethostbyaddr_async_ctx(addr, len, af, ac); - asr_ctx_unref(ac); + ac = _asr_use_resolver(asr); + as = _gethostbyaddr_async_ctx(addr, len, af, ac); + _asr_ctx_unref(ac); return (as); } struct asr_query * -gethostbyaddr_async_ctx(const void *addr, socklen_t len, int af, +_gethostbyaddr_async_ctx(const void *addr, socklen_t len, int af, struct asr_ctx *ac) { struct asr_query *as; - if ((as = asr_async_new(ac, ASR_GETHOSTBYADDR)) == NULL) + if ((as = _asr_async_new(ac, ASR_GETHOSTBYADDR)) == NULL) goto abort; /* errno set */ as->as_run = gethostnamadr_async_run; @@ -140,7 +140,7 @@ gethostbyaddr_async_ctx(const void *addr, socklen_t len, int af, abort: if (as) - asr_async_free(as); + _asr_async_free(as); return (NULL); } @@ -210,7 +210,7 @@ gethostnamadr_async_run(struct asr_query *as, struct asr_result *ar) case ASR_STATE_NEXT_DB: - if (asr_iter_db(as) == -1) { + if (_asr_iter_db(as) == -1) { async_set_state(as, ASR_STATE_NOT_FOUND); break; } @@ -224,14 +224,14 @@ gethostnamadr_async_run(struct asr_query *as, struct asr_result *ar) if (as->as_type == ASR_GETHOSTBYNAME) { type = (as->as.hostnamadr.family == AF_INET) ? T_A : T_AAAA; - as->as.hostnamadr.subq = res_search_async_ctx( + as->as.hostnamadr.subq = _res_search_async_ctx( as->as.hostnamadr.name, C_IN, type, as->as_ctx); } else { - asr_addr_as_fqdn(as->as.hostnamadr.addr, + _asr_addr_as_fqdn(as->as.hostnamadr.addr, as->as.hostnamadr.family, name, sizeof(name)); - as->as.hostnamadr.subq = res_query_async_ctx( + as->as.hostnamadr.subq = _res_query_async_ctx( name, C_IN, T_PTR, as->as_ctx); } @@ -253,7 +253,7 @@ gethostnamadr_async_run(struct asr_query *as, struct asr_result *ar) break; if (as->as_type == ASR_GETHOSTBYNAME) { - data = asr_hostalias(as->as_ctx, + data = _asr_hostalias(as->as_ctx, as->as.hostnamadr.name, name, sizeof(name)); if (data == NULL) data = as->as.hostnamadr.name; @@ -287,7 +287,7 @@ gethostnamadr_async_run(struct asr_query *as, struct asr_result *ar) if (as->as.hostnamadr.family != AF_INET) break; if (as->as_type == ASR_GETHOSTBYNAME) { - data = asr_hostalias(as->as_ctx, + data = _asr_hostalias(as->as_ctx, as->as.hostnamadr.name, name, sizeof(name)); if (data == NULL) data = as->as.hostnamadr.name; @@ -434,7 +434,7 @@ hostent_file_match(FILE *f, int reqtype, int family, const char *data, int n, i; for (;;) { - n = asr_parse_namedb_line(f, tokens, MAXTOKEN, buf, sizeof(buf)); + n = _asr_parse_namedb_line(f, tokens, MAXTOKEN, buf, sizeof(buf)); if (n == -1) { errno = 0; /* ignore errors reading the file */ return (NULL); @@ -490,14 +490,14 @@ hostent_from_packet(int reqtype, int family, char *pkt, size_t pktlen) if ((h = hostent_alloc(family)) == NULL) return (NULL); - asr_unpack_init(&p, pkt, pktlen); - asr_unpack_header(&p, &hdr); + _asr_unpack_init(&p, pkt, pktlen); + _asr_unpack_header(&p, &hdr); for (; hdr.qdcount; hdr.qdcount--) - asr_unpack_query(&p, &q); + _asr_unpack_query(&p, &q); strlcpy(dname, q.q_dname, sizeof(dname)); for (; hdr.ancount; hdr.ancount--) { - asr_unpack_rr(&p, &rr); + _asr_unpack_rr(&p, &rr); if (rr.rr_class != C_IN) continue; switch (rr.rr_type) { @@ -582,7 +582,7 @@ hostent_set_cname(struct hostent_ext *h, const char *name, int isdname) return (-1); if (isdname) { - asr_strdname(name, buf, sizeof buf); + _asr_strdname(name, buf, sizeof buf); buf[strlen(buf) - 1] = '\0'; if (!res_hnok(buf)) return (-1); @@ -612,7 +612,7 @@ hostent_add_alias(struct hostent_ext *h, const char *name, int isdname) return (0); if (isdname) { - asr_strdname(name, buf, sizeof buf); + _asr_strdname(name, buf, sizeof buf); buf[strlen(buf)-1] = '\0'; if (!res_hnok(buf)) return (-1); diff --git a/lib/libc/asr/getnameinfo_async.c b/lib/libc/asr/getnameinfo_async.c index 50d65fc38bc..1453fbd7ccf 100644 --- a/lib/libc/asr/getnameinfo_async.c +++ b/lib/libc/asr/getnameinfo_async.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getnameinfo_async.c,v 1.9 2014/03/26 18:13:15 eric Exp $ */ +/* $OpenBSD: getnameinfo_async.c,v 1.10 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -43,8 +43,8 @@ getnameinfo_async(const struct sockaddr *sa, socklen_t slen, char *host, struct asr_ctx *ac; struct asr_query *as; - ac = asr_use_resolver(asr); - if ((as = asr_async_new(ac, ASR_GETNAMEINFO)) == NULL) + ac = _asr_use_resolver(asr); + if ((as = _asr_async_new(ac, ASR_GETNAMEINFO)) == NULL) goto abort; /* errno set */ as->as_run = getnameinfo_async_run; @@ -60,13 +60,13 @@ getnameinfo_async(const struct sockaddr *sa, socklen_t slen, char *host, as->as.ni.servnamelen = servlen; as->as.ni.flags = flags; - asr_ctx_unref(ac); + _asr_ctx_unref(ac); return (as); abort: if (as) - asr_async_free(as); - asr_ctx_unref(ac); + _asr_async_free(as); + _asr_ctx_unref(ac); return (NULL); } @@ -140,7 +140,7 @@ getnameinfo_async_run(struct asr_query *as, struct asr_result *ar) /* * Create a subquery to lookup the address. */ - as->as.ni.subq = gethostbyaddr_async_ctx(addr, addrlen, + as->as.ni.subq = _gethostbyaddr_async_ctx(addr, addrlen, as->as.ni.sa.sa.sa_family, as->as_ctx); if (as->as.ni.subq == NULL) { diff --git a/lib/libc/asr/getnetnamadr_async.c b/lib/libc/asr/getnetnamadr_async.c index 2caa0cc84de..dcf290c4a16 100644 --- a/lib/libc/asr/getnetnamadr_async.c +++ b/lib/libc/asr/getnetnamadr_async.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getnetnamadr_async.c,v 1.20 2015/05/29 08:49:37 eric Exp $ */ +/* $OpenBSD: getnetnamadr_async.c,v 1.21 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -60,8 +60,8 @@ getnetbyname_async(const char *name, void *asr) return (NULL); } - ac = asr_use_resolver(asr); - if ((as = asr_async_new(ac, ASR_GETNETBYNAME)) == NULL) + ac = _asr_use_resolver(asr); + if ((as = _asr_async_new(ac, ASR_GETNETBYNAME)) == NULL) goto abort; /* errno set */ as->as_run = getnetnamadr_async_run; @@ -70,13 +70,13 @@ getnetbyname_async(const char *name, void *asr) if (as->as.netnamadr.name == NULL) goto abort; /* errno set */ - asr_ctx_unref(ac); + _asr_ctx_unref(ac); return (as); abort: if (as) - asr_async_free(as); - asr_ctx_unref(ac); + _asr_async_free(as); + _asr_ctx_unref(ac); return (NULL); } @@ -86,21 +86,21 @@ getnetbyaddr_async(in_addr_t net, int family, void *asr) struct asr_ctx *ac; struct asr_query *as; - ac = asr_use_resolver(asr); - if ((as = asr_async_new(ac, ASR_GETNETBYADDR)) == NULL) + ac = _asr_use_resolver(asr); + if ((as = _asr_async_new(ac, ASR_GETNETBYADDR)) == NULL) goto abort; /* errno set */ as->as_run = getnetnamadr_async_run; as->as.netnamadr.family = family; as->as.netnamadr.addr = net; - asr_ctx_unref(ac); + _asr_ctx_unref(ac); return (as); abort: if (as) - asr_async_free(as); - asr_ctx_unref(ac); + _asr_async_free(as); + _asr_ctx_unref(ac); return (NULL); } @@ -137,7 +137,7 @@ getnetnamadr_async_run(struct asr_query *as, struct asr_result *ar) case ASR_STATE_NEXT_DB: - if (asr_iter_db(as) == -1) { + if (_asr_iter_db(as) == -1) { async_set_state(as, ASR_STATE_NOT_FOUND); break; } @@ -154,17 +154,17 @@ getnetnamadr_async_run(struct asr_query *as, struct asr_result *ar) */ type = T_PTR; name = as->as.netnamadr.name; - as->as.netnamadr.subq = res_search_async_ctx( + as->as.netnamadr.subq = _res_search_async_ctx( name, C_IN, type, as->as_ctx); } else { type = T_PTR; name = dname; in = htonl(as->as.netnamadr.addr); - asr_addr_as_fqdn((char *)&in, + _asr_addr_as_fqdn((char *)&in, as->as.netnamadr.family, dname, sizeof(dname)); - as->as.netnamadr.subq = res_query_async_ctx( + as->as.netnamadr.subq = _res_query_async_ctx( name, C_IN, type, as->as_ctx); } @@ -288,7 +288,7 @@ netent_file_match(FILE *f, int reqtype, const char *data) in_addr_t net; for (;;) { - n = asr_parse_namedb_line(f, tokens, MAXTOKEN, buf, sizeof(buf)); + n = _asr_parse_namedb_line(f, tokens, MAXTOKEN, buf, sizeof(buf)); if (n == -1) { errno = 0; /* ignore errors reading the file */ return (NULL); @@ -340,12 +340,12 @@ netent_from_packet(int reqtype, char *pkt, size_t pktlen) if ((n = netent_alloc(AF_INET)) == NULL) return (NULL); - asr_unpack_init(&p, pkt, pktlen); - asr_unpack_header(&p, &hdr); + _asr_unpack_init(&p, pkt, pktlen); + _asr_unpack_header(&p, &hdr); for (; hdr.qdcount; hdr.qdcount--) - asr_unpack_query(&p, &q); + _asr_unpack_query(&p, &q); for (; hdr.ancount; hdr.ancount--) { - asr_unpack_rr(&p, &rr); + _asr_unpack_rr(&p, &rr); if (rr.rr_class != C_IN) continue; switch (rr.rr_type) { @@ -411,7 +411,7 @@ netent_set_cname(struct netent_ext *n, const char *name, int isdname) return (-1); if (isdname) { - asr_strdname(name, buf, sizeof buf); + _asr_strdname(name, buf, sizeof buf); buf[strlen(buf) - 1] = '\0'; if (!res_hnok(buf)) return (-1); @@ -442,7 +442,7 @@ netent_add_alias(struct netent_ext *n, const char *name, int isdname) return (-1); if (isdname) { - asr_strdname(name, buf, sizeof buf); + _asr_strdname(name, buf, sizeof buf); buf[strlen(buf)-1] = '\0'; if (!res_hnok(buf)) return (-1); diff --git a/lib/libc/asr/getrrsetbyname_async.c b/lib/libc/asr/getrrsetbyname_async.c index 8bc81e628c0..7b885041e5c 100644 --- a/lib/libc/asr/getrrsetbyname_async.c +++ b/lib/libc/asr/getrrsetbyname_async.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getrrsetbyname_async.c,v 1.7 2014/03/26 18:13:15 eric Exp $ */ +/* $OpenBSD: getrrsetbyname_async.c,v 1.8 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -42,8 +42,8 @@ getrrsetbyname_async(const char *hostname, unsigned int rdclass, struct asr_ctx *ac; struct asr_query *as; - ac = asr_use_resolver(asr); - if ((as = asr_async_new(ac, ASR_GETRRSETBYNAME)) == NULL) + ac = _asr_use_resolver(asr); + if ((as = _asr_async_new(ac, ASR_GETRRSETBYNAME)) == NULL) goto abort; /* errno set */ as->as_run = getrrsetbyname_async_run; @@ -54,13 +54,13 @@ getrrsetbyname_async(const char *hostname, unsigned int rdclass, if (as->as.rrset.name == NULL) goto abort; /* errno set */ - asr_ctx_unref(ac); + _asr_ctx_unref(ac); return (as); abort: if (as) - asr_async_free(as); + _asr_async_free(as); - asr_ctx_unref(ac); + _asr_ctx_unref(ac); return (NULL); } @@ -94,7 +94,7 @@ getrrsetbyname_async_run(struct asr_query *as, struct asr_result *ar) } /* Create a delegate the lookup to a subquery. */ - as->as.rrset.subq = res_query_async_ctx( + as->as.rrset.subq = _res_query_async_ctx( as->as.rrset.name, as->as.rrset.class, as->as.rrset.type, @@ -170,7 +170,7 @@ getrrsetbyname_async_run(struct asr_query *as, struct asr_result *ar) /* The rest of this file is taken from the orignal implementation. */ -/* $OpenBSD: getrrsetbyname_async.c,v 1.7 2014/03/26 18:13:15 eric Exp $ */ +/* $OpenBSD: getrrsetbyname_async.c,v 1.8 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2001 Jakob Schlyter. All rights reserved. diff --git a/lib/libc/asr/res_init.c b/lib/libc/asr/res_init.c index 309f779aac1..130646e01dc 100644 --- a/lib/libc/asr/res_init.c +++ b/lib/libc/asr/res_init.c @@ -1,4 +1,4 @@ -/* $OpenBSD: res_init.c,v 1.4 2014/03/26 18:13:15 eric Exp $ */ +/* $OpenBSD: res_init.c,v 1.5 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -41,7 +41,7 @@ res_init(void) struct asr_ctx *ac; int i; - ac = asr_use_resolver(NULL); + ac = _asr_use_resolver(NULL); /* * The first thread to call res_init() will setup the global _res @@ -82,7 +82,7 @@ res_init(void) ac->ac_dbcount = strlen(ac->ac_db); } - asr_ctx_unref(ac); + _asr_ctx_unref(ac); return (0); } diff --git a/lib/libc/asr/res_mkquery.c b/lib/libc/asr/res_mkquery.c index 27ed21e4d4a..3b169c13194 100644 --- a/lib/libc/asr/res_mkquery.c +++ b/lib/libc/asr/res_mkquery.c @@ -1,4 +1,4 @@ -/* $OpenBSD: res_mkquery.c,v 1.8 2014/03/26 18:13:15 eric Exp $ */ +/* $OpenBSD: res_mkquery.c,v 1.9 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -51,10 +51,10 @@ res_mkquery(int op, const char *dname, int class, int type, dname = fqdn; } - if (asr_dname_from_fqdn(dname, dn, sizeof(dn)) == -1) + if (_asr_dname_from_fqdn(dname, dn, sizeof(dn)) == -1) return (-1); - ac = asr_use_resolver(NULL); + ac = _asr_use_resolver(NULL); memset(&h, 0, sizeof h); h.id = res_randomid(); @@ -62,11 +62,11 @@ res_mkquery(int op, const char *dname, int class, int type, h.flags |= RD_MASK; h.qdcount = 1; - asr_pack_init(&p, buf, buflen); - asr_pack_header(&p, &h); - asr_pack_query(&p, type, class, dn); + _asr_pack_init(&p, buf, buflen); + _asr_pack_header(&p, &h); + _asr_pack_query(&p, type, class, dn); - asr_ctx_unref(ac); + _asr_ctx_unref(ac); if (p.err) return (-1); @@ -100,7 +100,7 @@ res_querydomain(const char *name, domain = ndom; } - if (asr_make_fqdn(name, domain, fqdn, sizeof fqdn) == 0) { + if (_asr_make_fqdn(name, domain, fqdn, sizeof fqdn) == 0) { h_errno = NETDB_INTERNAL; errno = EINVAL; return (-1); diff --git a/lib/libc/asr/res_search_async.c b/lib/libc/asr/res_search_async.c index 2172bfc0d2d..fd6669ca94f 100644 --- a/lib/libc/asr/res_search_async.c +++ b/lib/libc/asr/res_search_async.c @@ -1,4 +1,4 @@ -/* $OpenBSD: res_search_async.c,v 1.15 2015/05/25 19:30:25 eric Exp $ */ +/* $OpenBSD: res_search_async.c,v 1.16 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -33,7 +33,6 @@ static int res_search_async_run(struct asr_query *, struct asr_result *); static size_t domcat(const char *, const char *, char *, size_t); -static int iter_domain(struct asr_query *, const char *, char *, size_t); /* * Unlike res_query_async(), this function returns a valid packet only if @@ -47,15 +46,15 @@ res_search_async(const char *name, int class, int type, void *asr) DPRINT("asr: res_search_async(\"%s\", %i, %i)\n", name, class, type); - ac = asr_use_resolver(asr); - as = res_search_async_ctx(name, class, type, ac); - asr_ctx_unref(ac); + ac = _asr_use_resolver(asr); + as = _res_search_async_ctx(name, class, type, ac); + _asr_ctx_unref(ac); return (as); } struct asr_query * -res_search_async_ctx(const char *name, int class, int type, struct asr_ctx *ac) +_res_search_async_ctx(const char *name, int class, int type, struct asr_ctx *ac) { struct asr_query *as; char alias[MAXDNAME]; @@ -63,10 +62,10 @@ res_search_async_ctx(const char *name, int class, int type, struct asr_ctx *ac) DPRINT("asr: res_search_async_ctx(\"%s\", %i, %i)\n", name, class, type); - if (asr_hostalias(ac, name, alias, sizeof(alias))) - return res_query_async_ctx(alias, class, type, ac); + if (_asr_hostalias(ac, name, alias, sizeof(alias))) + return _res_query_async_ctx(alias, class, type, ac); - if ((as = asr_async_new(ac, ASR_SEARCH)) == NULL) + if ((as = _asr_async_new(ac, ASR_SEARCH)) == NULL) goto err; /* errno set */ as->as_run = res_search_async_run; if ((as->as.search.name = strdup(name)) == NULL) @@ -78,7 +77,7 @@ res_search_async_ctx(const char *name, int class, int type, struct asr_ctx *ac) return (as); err: if (as) - asr_async_free(as); + _asr_async_free(as); return (NULL); } @@ -112,7 +111,7 @@ res_search_async_run(struct asr_query *as, struct asr_result *ar) */ as->as_dom_flags = 0; - r = iter_domain(as, as->as.search.name, fqdn, sizeof(fqdn)); + r = _asr_iter_domain(as, as->as.search.name, fqdn, sizeof(fqdn)); if (r == -1) { async_set_state(as, ASR_STATE_NOT_FOUND); break; @@ -125,7 +124,7 @@ res_search_async_run(struct asr_query *as, struct asr_result *ar) async_set_state(as, ASR_STATE_HALT); break; } - as->as.search.subq = res_query_async_ctx(fqdn, + as->as.search.subq = _res_query_async_ctx(fqdn, as->as.search.class, as->as.search.type, as->as_ctx); if (as->as.search.subq == NULL) { ar->ar_errno = errno; @@ -221,7 +220,7 @@ domcat(const char *name, const char *domain, char *buf, size_t buflen) { size_t r; - r = asr_make_fqdn(name, domain, buf, buflen); + r = _asr_make_fqdn(name, domain, buf, buflen); if (r == 0) return (0); buf[r - 1] = '\0'; @@ -248,7 +247,7 @@ enum { * error generating the next name, or the resulting name length. */ int -iter_domain(struct asr_query *as, const char *name, char * buf, size_t len) +_asr_iter_domain(struct asr_query *as, const char *name, char * buf, size_t len) { const char *c; int dots; diff --git a/lib/libc/asr/res_send_async.c b/lib/libc/asr/res_send_async.c index 52dd5ed84e1..b64c6350a6e 100644 --- a/lib/libc/asr/res_send_async.c +++ b/lib/libc/asr/res_send_async.c @@ -1,4 +1,4 @@ -/* $OpenBSD: res_send_async.c,v 1.24 2015/09/09 15:40:04 guenther Exp $ */ +/* $OpenBSD: res_send_async.c,v 1.25 2015/09/09 15:49:34 deraadt Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -61,9 +61,9 @@ res_send_async(const unsigned char *buf, int buflen, void *asr) DPRINT_PACKET("asr: res_send_async()", buf, buflen); - ac = asr_use_resolver(asr); - if ((as = asr_async_new(ac, ASR_SEND)) == NULL) { - asr_ctx_unref(ac); + ac = _asr_use_resolver(asr); + if ((as = _asr_async_new(ac, ASR_SEND)) == NULL) { + _asr_ctx_unref(ac); return (NULL); /* errno set */ } as->as_run = res_send_async_run; @@ -73,9 +73,9 @@ res_send_async(const unsigned char *buf, int buflen, void *asr) as->as.dns.obuflen = buflen; as->as.dns.obufsize = buflen; - asr_unpack_init(&p, buf, buflen); - asr_unpack_header(&p, &h); - asr_unpack_query(&p, &q); + _asr_unpack_init(&p, buf, buflen); + _asr_unpack_header(&p, &h); + _asr_unpack_query(&p, &q); if (p.err) { errno = EINVAL; goto err; @@ -87,12 +87,12 @@ res_send_async(const unsigned char *buf, int buflen, void *asr) if (as->as.dns.dname == NULL) goto err; /* errno set */ - asr_ctx_unref(ac); + _asr_ctx_unref(ac); return (as); err: if (as) - asr_async_free(as); - asr_ctx_unref(ac); + _asr_async_free(as); + _asr_ctx_unref(ac); return (NULL); } @@ -109,21 +109,21 @@ res_query_async(const char *name, int class, int type, void *asr) DPRINT("asr: res_query_async(\"%s\", %i, %i)\n", name, class, type); - ac = asr_use_resolver(asr); - as = res_query_async_ctx(name, class, type, ac); - asr_ctx_unref(ac); + ac = _asr_use_resolver(asr); + as = _res_query_async_ctx(name, class, type, ac); + _asr_ctx_unref(ac); return (as); } struct asr_query * -res_query_async_ctx(const char *name, int class, int type, struct asr_ctx *a_ctx) +_res_query_async_ctx(const char *name, int class, int type, struct asr_ctx *a_ctx) { struct asr_query *as; DPRINT("asr: res_query_async_ctx(\"%s\", %i, %i)\n", name, class, type); - if ((as = asr_async_new(a_ctx, ASR_SEND)) == NULL) + if ((as = _asr_async_new(a_ctx, ASR_SEND)) == NULL) return (NULL); /* errno set */ as->as_run = res_send_async_run; @@ -137,7 +137,7 @@ res_query_async_ctx(const char *name, int class, int type, struct asr_ctx *a_ctx err: if (as) - asr_async_free(as); + _asr_async_free(as); return (NULL); } @@ -350,13 +350,13 @@ setup_query(struct asr_query *as, const char *name, const char *dom, return (-1); } - if (asr_make_fqdn(name, dom, fqdn, sizeof(fqdn)) > sizeof(fqdn)) { + if (_asr_make_fqdn(name, dom, fqdn, sizeof(fqdn)) > sizeof(fqdn)) { errno = EINVAL; DPRINT("asr_make_fqdn: name too long\n"); return (-1); } - if (asr_dname_from_fqdn(fqdn, dname, sizeof(dname)) == -1) { + if (_asr_dname_from_fqdn(fqdn, dname, sizeof(dname)) == -1) { errno = EINVAL; DPRINT("asr_dname_from_fqdn: invalid\n"); return (-1); @@ -376,9 +376,9 @@ setup_query(struct asr_query *as, const char *name, const char *dom, h.flags |= RD_MASK; h.qdcount = 1; - asr_pack_init(&p, as->as.dns.obuf, as->as.dns.obufsize); - asr_pack_header(&p, &h); - asr_pack_query(&p, type, class, dname); + _asr_pack_init(&p, as->as.dns.obuf, as->as.dns.obufsize); + _asr_pack_header(&p, &h); + _asr_pack_query(&p, type, class, dname); if (p.err) { DPRINT("error packing query"); errno = EINVAL; @@ -418,7 +418,7 @@ udp_send(struct asr_query *as) #endif DPRINT("asr: [%p] connecting to %s UDP\n", as, - asr_print_sockaddr(AS_NS_SA(as), buf, sizeof buf)); + _asr_print_sockaddr(AS_NS_SA(as), buf, sizeof buf)); as->as_fd = sockaddr_connect(AS_NS_SA(as), SOCK_DGRAM); if (as->as_fd == -1) @@ -495,7 +495,7 @@ tcp_write(struct asr_query *as) /* First try to connect if not already */ if (as->as_fd == -1) { DPRINT("asr: [%p] connecting to %s TCP\n", as, - asr_print_sockaddr(AS_NS_SA(as), buf, sizeof buf)); + _asr_print_sockaddr(AS_NS_SA(as), buf, sizeof buf)); as->as_fd = sockaddr_connect(AS_NS_SA(as), SOCK_STREAM); if (as->as_fd == -1) return (-1); /* errno set */ @@ -671,9 +671,9 @@ validate_packet(struct asr_query *as) struct asr_dns_rr rr; int r; - asr_unpack_init(&p, as->as.dns.ibuf, as->as.dns.ibuflen); + _asr_unpack_init(&p, as->as.dns.ibuf, as->as.dns.ibuflen); - asr_unpack_header(&p, &h); + _asr_unpack_header(&p, &h); if (p.err) goto inval; @@ -696,7 +696,7 @@ validate_packet(struct asr_query *as) as->as.dns.rcode = RCODE(h.flags); as->as.dns.ancount = h.ancount; - asr_unpack_query(&p, &q); + _asr_unpack_query(&p, &q); if (p.err) goto inval; @@ -716,7 +716,7 @@ validate_packet(struct asr_query *as) /* Validate the rest of the packet */ for (r = h.ancount + h.nscount + h.arcount; r; r--) - asr_unpack_rr(&p, &rr); + _asr_unpack_rr(&p, &rr); if (p.err || (p.offset != as->as.dns.ibuflen)) goto inval; |