summaryrefslogtreecommitdiffstats
path: root/lib/libc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/asr/asr.c44
-rw-r--r--lib/libc/asr/asr.h12
-rw-r--r--lib/libc/asr/asr_debug.c10
-rw-r--r--lib/libc/asr/asr_private.h26
-rw-r--r--lib/libc/asr/asr_utils.c85
-rw-r--r--lib/libc/asr/async_resolver.348
-rw-r--r--lib/libc/asr/getaddrinfo.c4
-rw-r--r--lib/libc/asr/getaddrinfo_async.c24
-rw-r--r--lib/libc/asr/gethostnamadr.c6
-rw-r--r--lib/libc/asr/gethostnamadr_async.c83
-rw-r--r--lib/libc/asr/getnameinfo.c4
-rw-r--r--lib/libc/asr/getnameinfo_async.c8
-rw-r--r--lib/libc/asr/getnetnamadr.c6
-rw-r--r--lib/libc/asr/getnetnamadr_async.c24
-rw-r--r--lib/libc/asr/getrrsetbyname.c4
-rw-r--r--lib/libc/asr/getrrsetbyname_async.c10
-rw-r--r--lib/libc/asr/res_mkquery.c10
-rw-r--r--lib/libc/asr/res_query.c6
-rw-r--r--lib/libc/asr/res_search_async.c34
-rw-r--r--lib/libc/asr/res_send.c4
-rw-r--r--lib/libc/asr/res_send_async.c44
21 files changed, 246 insertions, 250 deletions
diff --git a/lib/libc/asr/asr.c b/lib/libc/asr/asr.c
index 988900f33a3..f87fc513647 100644
--- a/lib/libc/asr/asr.c
+++ b/lib/libc/asr/asr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: asr.c,v 1.30 2013/06/01 15:02:01 eric Exp $ */
+/* $OpenBSD: asr.c,v 1.31 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2010-2012 Eric Faurot <eric@openbsd.org>
*
@@ -87,7 +87,7 @@ static struct asr *_asr = NULL;
/* Allocate and configure an async "resolver". */
struct asr *
-async_resolver(const char *conf)
+asr_resolver(const char *conf)
{
static int init = 0;
struct asr *asr;
@@ -156,7 +156,7 @@ async_resolver(const char *conf)
* Drop the reference to the current context.
*/
void
-async_resolver_done(struct asr *asr)
+asr_resolver_done(struct asr *asr)
{
struct asr **priv;
@@ -177,9 +177,9 @@ async_resolver_done(struct asr *asr)
* Cancel an async query.
*/
void
-async_abort(struct async *as)
+asr_async_abort(struct async *as)
{
- async_free(as);
+ asr_async_free(as);
}
/*
@@ -188,7 +188,7 @@ async_abort(struct async *as)
* the user-allocated memory at "ar".
*/
int
-async_run(struct async *as, struct async_res *ar)
+asr_async_run(struct async *as, struct async_res *ar)
{
int r, saved_errno = errno;
@@ -203,7 +203,7 @@ async_run(struct async *as, struct async_res *ar)
DPRINT(" fd=%i timeout=%i", ar->ar_fd, ar->ar_timeout);
DPRINT("\n");
if (r == ASYNC_DONE)
- async_free(as);
+ asr_async_free(as);
errno = saved_errno;
@@ -214,12 +214,12 @@ async_run(struct async *as, struct async_res *ar)
* Same as above, but run in a loop that handles the fd conditions result.
*/
int
-async_run_sync(struct async *as, struct async_res *ar)
+asr_async_run_sync(struct async *as, struct async_res *ar)
{
struct pollfd fds[1];
int r, saved_errno = errno;
- while ((r = async_run(as, ar)) == ASYNC_COND) {
+ while ((r = asr_async_run(as, ar)) == ASYNC_COND) {
fds[0].fd = ar->ar_fd;
fds[0].events = (ar->ar_cond == ASYNC_READ) ? POLLIN : POLLOUT;
again:
@@ -227,7 +227,7 @@ async_run_sync(struct async *as, struct async_res *ar)
if (r == -1 && errno == EINTR)
goto again;
/*
- * Otherwise, just ignore the error and let async_run()
+ * Otherwise, just ignore the error and let asr_async_run()
* catch the failure.
*/
}
@@ -243,11 +243,11 @@ async_run_sync(struct async *as, struct async_res *ar)
* is running.
*/
struct async *
-async_new(struct asr_ctx *ac, int type)
+asr_async_new(struct asr_ctx *ac, int type)
{
struct async *as;
- DPRINT("asr: async_new(ctx=%p) type=%i refcount=%i\n", ac, type,
+ DPRINT("asr: asr_async_new(ctx=%p) type=%i refcount=%i\n", ac, type,
ac ? ac->ac_refcount : 0);
if (ac == NULL || (as = calloc(1, sizeof(*as))) == NULL)
return (NULL);
@@ -265,9 +265,9 @@ async_new(struct asr_ctx *ac, int type)
* Free an async query and unref the associated context.
*/
void
-async_free(struct async *as)
+asr_async_free(struct async *as)
{
- DPRINT("asr: async_free(%p)\n", as);
+ DPRINT("asr: asr_async_free(%p)\n", as);
switch (as->as_type) {
case ASR_SEND:
if (as->as_fd != -1)
@@ -282,14 +282,14 @@ async_free(struct async *as)
case ASR_SEARCH:
if (as->as.search.subq)
- 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)
- async_free(as->as.rrset.subq);
+ asr_async_free(as->as.rrset.subq);
if (as->as.rrset.name)
free(as->as.rrset.name);
break;
@@ -297,7 +297,7 @@ async_free(struct async *as)
case ASR_GETHOSTBYNAME:
case ASR_GETHOSTBYADDR:
if (as->as.hostnamadr.subq)
- async_free(as->as.hostnamadr.subq);
+ asr_async_free(as->as.hostnamadr.subq);
if (as->as.hostnamadr.name)
free(as->as.hostnamadr.name);
break;
@@ -305,14 +305,14 @@ async_free(struct async *as)
case ASR_GETNETBYNAME:
case ASR_GETNETBYADDR:
if (as->as.netnamadr.subq)
- 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)
- 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)
@@ -325,7 +325,7 @@ async_free(struct async *as)
case ASR_GETNAMEINFO:
if (as->as.ni.subq)
- async_free(as->as.ni.subq);
+ asr_async_free(as->as.ni.subq);
break;
}
@@ -348,7 +348,7 @@ asr_use_resolver(struct asr *asr)
priv = _THREAD_PRIVATE(_asr, _asr, &_asr);
if (*priv == NULL) {
DPRINT("setting up thread-local resolver\n");
- *priv = async_resolver(NULL);
+ *priv = asr_resolver(NULL);
}
asr = *priv;
}
@@ -808,7 +808,7 @@ asr_parse_nameserver(struct sockaddr *sa, const char *s)
return (-1);
}
- if (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)
diff --git a/lib/libc/asr/asr.h b/lib/libc/asr/asr.h
index b0513b8f167..a8b3caf904f 100644
--- a/lib/libc/asr/asr.h
+++ b/lib/libc/asr/asr.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: asr.h,v 1.6 2013/04/30 12:02:39 eric Exp $ */
+/* $OpenBSD: asr.h,v 1.7 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -68,15 +68,15 @@ struct async_res {
struct netent *ar_netent;
};
-int async_run(struct async *, struct async_res *);
-int async_run_sync(struct async *, struct async_res *);
-void async_abort(struct async *);
+int asr_async_run(struct async *, struct async_res *);
+int asr_async_run_sync(struct async *, struct async_res *);
+void asr_async_abort(struct async *);
/* This opaque structure holds an async resolver context. */
struct asr;
-struct asr *async_resolver(const char *);
-void async_resolver_done(struct asr *);
+struct asr *asr_resolver(const char *);
+void asr_resolver_done(struct asr *);
/* Async version of the resolver API */
diff --git a/lib/libc/asr/asr_debug.c b/lib/libc/asr/asr_debug.c
index 8cc54e2062f..620d674f508 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.13 2013/05/27 17:31:01 eric Exp $ */
+/* $OpenBSD: asr_debug.c,v 1.14 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -173,9 +173,9 @@ asr_dump_packet(FILE *f, const void *data, size_t len)
if (f == NULL)
return;
- unpack_init(&p, data, len);
+ asr_unpack_init(&p, data, len);
- if (unpack_header(&p, &h) == -1) {
+ if (asr_unpack_header(&p, &h) == -1) {
fprintf(f, ";; BAD PACKET: %s\n", p.err);
return;
}
@@ -185,7 +185,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 (unpack_query(&p, &q) == -1)
+ if (asr_unpack_query(&p, &q) == -1)
goto error;
fprintf(f, "%s\n", print_query(&q, buf, sizeof buf));
}
@@ -203,7 +203,7 @@ asr_dump_packet(FILE *f, const void *data, size_t len)
if (i == ar)
fprintf(f, "\n;; ADDITIONAL SECTION:\n");
- if (unpack_rr(&p, &rr) == -1)
+ if (asr_unpack_rr(&p, &rr) == -1)
goto error;
fprintf(f, "%s\n", print_rr(&rr, buf, sizeof buf));
}
diff --git a/lib/libc/asr/asr_private.h b/lib/libc/asr/asr_private.h
index db08e3d3aee..821f513fafc 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.22 2013/06/01 15:02:01 eric Exp $ */
+/* $OpenBSD: asr_private.h,v 1.23 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -299,22 +299,22 @@ enum asr_state {
/* asr_utils.c */
-void pack_init(struct pack *, char *, size_t);
-int pack_header(struct pack *, const struct header *);
-int pack_query(struct pack *, uint16_t, uint16_t, const char *);
-
-void unpack_init(struct unpack *, const char *, size_t);
-int unpack_header(struct unpack *, struct header *);
-int unpack_query(struct unpack *, struct query *);
-int unpack_rr(struct unpack *, struct rr *);
-int sockaddr_from_str(struct sockaddr *, int, const char *);
-ssize_t dname_from_fqdn(const char *, char *, size_t);
+void asr_pack_init(struct pack *, char *, size_t);
+int asr_pack_header(struct pack *, const struct header *);
+int asr_pack_query(struct pack *, uint16_t, uint16_t, const char *);
+void asr_unpack_init(struct unpack *, const char *, size_t);
+int asr_unpack_header(struct unpack *, struct header *);
+int asr_unpack_query(struct unpack *, struct query *);
+int asr_unpack_rr(struct unpack *, struct 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 */
struct asr_ctx *asr_use_resolver(struct asr *);
void asr_ctx_unref(struct asr_ctx *);
-struct async *async_new(struct asr_ctx *, int);
-void async_free(struct async *);
+struct async *asr_async_new(struct asr_ctx *, int);
+void asr_async_free(struct async *);
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 async *);
diff --git a/lib/libc/asr/asr_utils.c b/lib/libc/asr/asr_utils.c
index e05905c58bb..f5a1da8a528 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.7 2013/04/14 22:23:08 deraadt Exp $ */
+/* $OpenBSD: asr_utils.c,v 1.8 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2009-2012 Eric Faurot <eric@faurot.net>
*
@@ -62,7 +62,7 @@ dname_check_label(const char *s, size_t l)
}
ssize_t
-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;
@@ -165,7 +165,7 @@ dname_expand(const unsigned char *data, size_t len, size_t offset,
}
void
-pack_init(struct pack *pack, char *buf, size_t len)
+asr_pack_init(struct pack *pack, char *buf, size_t len)
{
pack->buf = buf;
pack->len = len;
@@ -174,7 +174,7 @@ pack_init(struct pack *pack, char *buf, size_t len)
}
void
-unpack_init(struct unpack *unpack, const char *buf, size_t len)
+asr_unpack_init(struct unpack *unpack, const char *buf, size_t len)
{
unpack->buf = buf;
unpack->len = len;
@@ -255,7 +255,7 @@ unpack_dname(struct unpack *p, char *dst, size_t max)
}
int
-unpack_header(struct unpack *p, struct header *h)
+asr_unpack_header(struct unpack *p, struct header *h)
{
if (unpack_data(p, h, HFIXEDSZ) == -1)
return (-1);
@@ -270,7 +270,7 @@ unpack_header(struct unpack *p, struct header *h)
}
int
-unpack_query(struct unpack *p, struct query *q)
+asr_unpack_query(struct unpack *p, struct query *q)
{
unpack_dname(p, q->q_dname, sizeof(q->q_dname));
unpack_u16(p, &q->q_type);
@@ -280,7 +280,7 @@ unpack_query(struct unpack *p, struct query *q)
}
int
-unpack_rr(struct unpack *p, struct rr *rr)
+asr_unpack_rr(struct unpack *p, struct rr *rr)
{
uint16_t rdlen;
size_t save_offset;
@@ -393,7 +393,7 @@ pack_dname(struct pack *p, const char *dname)
}
int
-pack_header(struct pack *p, const struct header *h)
+asr_pack_header(struct pack *p, const struct header *h)
{
struct header c;
@@ -408,7 +408,7 @@ pack_header(struct pack *p, const struct header *h)
}
int
-pack_query(struct pack *p, uint16_t type, uint16_t class, const char *dname)
+asr_pack_query(struct pack *p, uint16_t type, uint16_t class, const char *dname)
{
pack_dname(p, dname);
pack_u16(p, type);
@@ -418,7 +418,7 @@ pack_query(struct pack *p, uint16_t type, uint16_t class, const char *dname)
}
int
-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;
@@ -429,9 +429,9 @@ sockaddr_from_str(struct sockaddr *sa, int family, const char *str)
switch (family) {
case PF_UNSPEC:
- if (sockaddr_from_str(sa, PF_INET, str) == 0)
+ if (asr_sockaddr_from_str(sa, PF_INET, str) == 0)
return (0);
- return 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)
@@ -486,3 +486,64 @@ sockaddr_from_str(struct sockaddr *sa, int family, const char *str)
return (-1);
}
+
+ssize_t
+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;
+
+ switch (family) {
+ case AF_INET:
+ in_addr = ntohl(*((const in_addr_t *)addr));
+ snprintf(dst, max,
+ "%d.%d.%d.%d.in-addr.arpa.",
+ in_addr & 0xff,
+ (in_addr >> 8) & 0xff,
+ (in_addr >> 16) & 0xff,
+ (in_addr >> 24) & 0xff);
+ break;
+ case AF_INET6:
+ in6_addr = (const struct in6_addr *)addr;
+ snprintf(dst, max,
+ "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
+ "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
+ "ip6.arpa.",
+ in6_addr->s6_addr[15] & 0xf,
+ (in6_addr->s6_addr[15] >> 4) & 0xf,
+ in6_addr->s6_addr[14] & 0xf,
+ (in6_addr->s6_addr[14] >> 4) & 0xf,
+ in6_addr->s6_addr[13] & 0xf,
+ (in6_addr->s6_addr[13] >> 4) & 0xf,
+ in6_addr->s6_addr[12] & 0xf,
+ (in6_addr->s6_addr[12] >> 4) & 0xf,
+ in6_addr->s6_addr[11] & 0xf,
+ (in6_addr->s6_addr[11] >> 4) & 0xf,
+ in6_addr->s6_addr[10] & 0xf,
+ (in6_addr->s6_addr[10] >> 4) & 0xf,
+ in6_addr->s6_addr[9] & 0xf,
+ (in6_addr->s6_addr[9] >> 4) & 0xf,
+ in6_addr->s6_addr[8] & 0xf,
+ (in6_addr->s6_addr[8] >> 4) & 0xf,
+ in6_addr->s6_addr[7] & 0xf,
+ (in6_addr->s6_addr[7] >> 4) & 0xf,
+ in6_addr->s6_addr[6] & 0xf,
+ (in6_addr->s6_addr[6] >> 4) & 0xf,
+ in6_addr->s6_addr[5] & 0xf,
+ (in6_addr->s6_addr[5] >> 4) & 0xf,
+ in6_addr->s6_addr[4] & 0xf,
+ (in6_addr->s6_addr[4] >> 4) & 0xf,
+ in6_addr->s6_addr[3] & 0xf,
+ (in6_addr->s6_addr[3] >> 4) & 0xf,
+ in6_addr->s6_addr[2] & 0xf,
+ (in6_addr->s6_addr[2] >> 4) & 0xf,
+ in6_addr->s6_addr[1] & 0xf,
+ (in6_addr->s6_addr[1] >> 4) & 0xf,
+ in6_addr->s6_addr[0] & 0xf,
+ (in6_addr->s6_addr[0] >> 4) & 0xf);
+ break;
+ default:
+ return (-1);
+ }
+ return (0);
+}
diff --git a/lib/libc/asr/async_resolver.3 b/lib/libc/asr/async_resolver.3
index 8460309360d..04c7700ebc7 100644
--- a/lib/libc/asr/async_resolver.3
+++ b/lib/libc/asr/async_resolver.3
@@ -1,4 +1,4 @@
-.\" $OpenBSD: async_resolver.3,v 1.13 2013/06/05 03:39:22 tedu Exp $
+.\" $OpenBSD: async_resolver.3,v 1.14 2013/07/12 14:36:21 eric Exp $
.\"
.\" Copyright (c) 2012, Eric Faurot <eric@openbsd.org>
.\"
@@ -14,15 +14,15 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: June 5 2013 $
+.Dd $Mdocdate: July 12 2013 $
.Dt ASYN_RESOLVER 3
.Os
.Sh NAME
-.Nm async_resolver ,
-.Nm async_resolver_done ,
-.Nm async_run ,
-.Nm async_run_sync ,
-.Nm async_abort ,
+.Nm asr_resolver ,
+.Nm asr_resolver_done ,
+.Nm asr_async_run ,
+.Nm asr_async_run_sync ,
+.Nm asr_async_abort ,
.Nm res_send_async ,
.Nm res_query_async ,
.Nm res_search_async ,
@@ -39,15 +39,15 @@
.Sh SYNOPSIS
.In asr.h
.Ft struct asr *
-.Fn async_resolver "const char *conf"
+.Fn asr_resolver "const char *conf"
.Ft void
-.Fn async_resolver_done "struct asr *asr"
+.Fn asr_resolver_done "struct asr *asr"
.Ft int
-.Fn async_run "struct async *as" "struct async_res *ar"
+.Fn asr_async_run "struct async *as" "struct async_res *ar"
.Ft int
-.Fn async_run_sync "struct async *as" "struct async_res *ar"
+.Fn asr_async_run_sync "struct async *as" "struct async_res *ar"
.Ft void
-.Fn async_abort "struct async *as"
+.Fn asr_async_abort "struct async *as"
.Ft struct async *
.Fn res_send_async "const unsigned char *pkt" "int pktlen" "struct asr *asr"
.Ft struct async *
@@ -95,7 +95,7 @@ The user is responsible for dealing with the situation (fetch the result,
or wait until the fd conditions are met), and call back into the resolving
machinery when it is ready to proceed.
.Pp
-.Fn async_resolver
+.Fn asr_resolver
is the function used to create a new resolver context.
The
.Fa conf
@@ -120,7 +120,7 @@ string is a '!', the configuration is read from the rest of the string rather
than loaded from a file.
No further update occurs in this case.
.Pp
-.Fn async_resolver_done
+.Fn asr_resolver_done
is used to discard the
.Fa asr
context when it is not used anymore.
@@ -131,7 +131,7 @@ it will be able to complete safely.
All relevant resources are effectively freed when all such queries are cleared.
.Pp
The
-.Fn async_run
+.Fn asr_async_run
function drives the resolving process.
It runs the
.Fa as
@@ -190,7 +190,7 @@ The timeout, expressed in milliseconds.
.El
.Pp
The caller is expected to call
-.Fn async_run
+.Fn asr_async_run
again once the condition holds or the timeout expires.
.It ASYNC_DONE
The query is completed.
@@ -204,20 +204,20 @@ set.
The query-specific members of
.Fa ar
are set accordingly and the resolving process can be resumed by calling
-.Fn async_run .
+.Fn asr_async_run .
.El
.Pp
Note that although the query itself may fail (the error being properly reported
in the
.Fa ar
structure), the
-.Fn async_run
+.Fn asr_async_run
function itself cannot fail and it always preserves errno.
.Pp
The
-.Fn async_run_sync
+.Fn asr_async_run_sync
function is a wrapper around
-.Fn async_run
+.Fn asr_async_run
that handles the read/write conditions, thus falling back to a blocking
interface.
It only returns partial and complete results through ASYNC_YIELD and ASYNC_DONE
@@ -225,14 +225,14 @@ respectively.
It also preserves errno.
.Pp
The
-.Fn async_abort
+.Fn asr_async_abort
function clears a running query.
It can be called after a partial result has been retrieved or when the query
is waiting on a file descriptor.
Note that a completed query is already cleared when
-.Fn async_run
+.Fn asr_async_run
returns, so
-.Fn async_abort
+.Fn asr_async_abort
must not be called in this case.
.Pp
The remaining functions are used to initiate different kinds of query
@@ -244,7 +244,7 @@ All functions return NULL if they could not allocate the necessary resources
to initiate the query.
All other errors (especially invalid parameters)
are reported when calling
-.Fn async_run .
+.Fn asr_async_run .
They usually have the same interface as an existing resolver function, with
an additional
.Ar asr
diff --git a/lib/libc/asr/getaddrinfo.c b/lib/libc/asr/getaddrinfo.c
index 9e8ba91c5b2..0c6e2f45c75 100644
--- a/lib/libc/asr/getaddrinfo.c
+++ b/lib/libc/asr/getaddrinfo.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: getaddrinfo.c,v 1.2 2013/05/27 17:31:01 eric Exp $ */
+/* $OpenBSD: getaddrinfo.c,v 1.3 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -42,7 +42,7 @@ getaddrinfo(const char *hostname, const char *servname,
return (EAI_SYSTEM);
}
- async_run_sync(as, &ar);
+ asr_async_run_sync(as, &ar);
*res = ar.ar_addrinfo;
if (ar.ar_gai_errno == EAI_SYSTEM)
diff --git a/lib/libc/asr/getaddrinfo_async.c b/lib/libc/asr/getaddrinfo_async.c
index 659fb6a52b1..57e2506b401 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.18 2013/06/01 14:34:34 eric Exp $ */
+/* $OpenBSD: getaddrinfo_async.c,v 1.19 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -74,7 +74,7 @@ getaddrinfo_async(const char *hostname, const char *servname,
struct async *as;
ac = asr_use_resolver(asr);
- if ((as = async_new(ac, ASR_GETADDRINFO)) == NULL)
+ if ((as = asr_async_new(ac, ASR_GETADDRINFO)) == NULL)
goto abort; /* errno set */
as->as_run = getaddrinfo_async_run;
@@ -93,7 +93,7 @@ getaddrinfo_async(const char *hostname, const char *servname,
return (as);
abort:
if (as)
- async_free(as);
+ asr_async_free(as);
asr_ctx_unref(ac);
return (NULL);
}
@@ -222,7 +222,7 @@ getaddrinfo_async_run(struct async *as, struct async_res *ar)
str = (ai->ai_flags & AI_PASSIVE) ? \
"::" : "::1";
/* This can't fail */
- 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;
@@ -240,7 +240,7 @@ getaddrinfo_async_run(struct async *as, struct async_res *ar)
family != -1;
family = iter_family(as, 0)) {
- if (sockaddr_from_str(&sa.sa, family,
+ if (asr_sockaddr_from_str(&sa.sa, family,
as->as.ai.hostname) == -1)
continue;
@@ -379,7 +379,7 @@ getaddrinfo_async_run(struct async *as, struct async_res *ar)
break;
case ASR_STATE_SUBQUERY:
- if ((r = async_run(as->as.ai.subq, ar)) == ASYNC_COND)
+ if ((r = asr_async_run(as->as.ai.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
as->as.ai.subq = NULL;
@@ -576,7 +576,7 @@ addrinfo_from_file(struct async *as, int family, FILE *f)
for (i = 1; i < n; i++) {
if (strcasecmp(name, tokens[i]))
continue;
- if (sockaddr_from_str(&u.sa, family, tokens[0]) == -1)
+ if (asr_sockaddr_from_str(&u.sa, family, tokens[0]) == -1)
continue;
break;
}
@@ -609,13 +609,13 @@ addrinfo_from_pkt(struct async *as, char *pkt, size_t pktlen)
} u;
char buf[MAXDNAME], *c;
- unpack_init(&p, pkt, pktlen);
- unpack_header(&p, &h);
+ asr_unpack_init(&p, pkt, pktlen);
+ asr_unpack_header(&p, &h);
for (; h.qdcount; h.qdcount--)
- unpack_query(&p, &q);
+ asr_unpack_query(&p, &q);
for (i = 0; i < h.ancount; i++) {
- unpack_rr(&p, &rr);
+ asr_unpack_rr(&p, &rr);
if (rr.rr_type != q.q_type ||
rr.rr_class != q.q_class)
continue;
@@ -694,7 +694,7 @@ addrinfo_from_yp(struct async *as, int family, char *line)
if (ntok < 2)
continue;
- if (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.c b/lib/libc/asr/gethostnamadr.c
index 5af9d8ca525..31ead29cf31 100644
--- a/lib/libc/asr/gethostnamadr.c
+++ b/lib/libc/asr/gethostnamadr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: gethostnamadr.c,v 1.8 2013/05/29 06:43:49 eric Exp $ */
+/* $OpenBSD: gethostnamadr.c,v 1.9 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2012,2013 Eric Faurot <eric@openbsd.org>
*
@@ -114,7 +114,7 @@ _gethostbyname(const char *name, int af, struct hostent *ret, char *buf,
if (as == NULL)
return (errno);
- async_run_sync(as, &ar);
+ asr_async_run_sync(as, &ar);
errno = ar.ar_errno;
*h_errnop = ar.ar_h_errno;
@@ -176,7 +176,7 @@ gethostbyaddr(const void *addr, socklen_t len, int af)
return (NULL);
}
- async_run_sync(as, &ar);
+ asr_async_run_sync(as, &ar);
errno = ar.ar_errno;
h_errno = ar.ar_h_errno;
diff --git a/lib/libc/asr/gethostnamadr_async.c b/lib/libc/asr/gethostnamadr_async.c
index 9dcbbe55b3e..aa75e55a6eb 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.20 2013/06/01 14:34:34 eric Exp $ */
+/* $OpenBSD: gethostnamadr_async.c,v 1.21 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -48,8 +48,6 @@ struct hostent_ext {
char *pos;
};
-ssize_t addr_as_fqdn(const char *, int, char *, size_t);
-
static int gethostnamadr_async_run(struct async *, struct async_res *);
static struct hostent_ext *hostent_alloc(int);
static int hostent_set_cname(struct hostent_ext *, const char *, int);
@@ -83,7 +81,7 @@ gethostbyname2_async(const char *name, int af, struct asr *asr)
}
ac = asr_use_resolver(asr);
- if ((as = async_new(ac, ASR_GETHOSTBYNAME)) == NULL)
+ if ((as = asr_async_new(ac, ASR_GETHOSTBYNAME)) == NULL)
goto abort; /* errno set */
as->as_run = gethostnamadr_async_run;
@@ -101,7 +99,7 @@ gethostbyname2_async(const char *name, int af, struct asr *asr)
abort:
if (as)
- async_free(as);
+ asr_async_free(as);
asr_ctx_unref(ac);
return (NULL);
}
@@ -125,7 +123,7 @@ gethostbyaddr_async_ctx(const void *addr, socklen_t len, int af,
{
struct async *as;
- if ((as = 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;
@@ -218,7 +216,7 @@ gethostnamadr_async_run(struct async *as, struct async_res *ar)
as->as.hostnamadr.name,
C_IN, type, as->as_ctx);
} else {
- 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(
@@ -306,7 +304,7 @@ gethostnamadr_async_run(struct async *as, struct async_res *ar)
/* Run the DNS subquery. */
- if ((r = async_run(as->as.hostnamadr.subq, ar)) == ASYNC_COND)
+ if ((r = asr_async_run(as->as.hostnamadr.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
/* Done. */
@@ -477,14 +475,14 @@ hostent_from_packet(int reqtype, int family, char *pkt, size_t pktlen)
if ((h = hostent_alloc(family)) == NULL)
return (NULL);
- unpack_init(&p, pkt, pktlen);
- unpack_header(&p, &hdr);
+ asr_unpack_init(&p, pkt, pktlen);
+ asr_unpack_header(&p, &hdr);
for (; hdr.qdcount; hdr.qdcount--)
- unpack_query(&p, &q);
+ asr_unpack_query(&p, &q);
strlcpy(dname, q.q_dname, sizeof(dname));
for (; hdr.ancount; hdr.ancount--) {
- unpack_rr(&p, &rr);
+ asr_unpack_rr(&p, &rr);
if (rr.rr_class != C_IN)
continue;
switch (rr.rr_type) {
@@ -633,67 +631,6 @@ hostent_add_addr(struct hostent_ext *h, const void *addr, size_t size)
return (0);
}
-ssize_t
-addr_as_fqdn(const char *addr, int family, char *dst, size_t max)
-{
- const struct in6_addr *in6_addr;
- in_addr_t in_addr;
-
- switch (family) {
- case AF_INET:
- in_addr = ntohl(*((const in_addr_t *)addr));
- snprintf(dst, max,
- "%d.%d.%d.%d.in-addr.arpa.",
- in_addr & 0xff,
- (in_addr >> 8) & 0xff,
- (in_addr >> 16) & 0xff,
- (in_addr >> 24) & 0xff);
- break;
- case AF_INET6:
- in6_addr = (const struct in6_addr *)addr;
- snprintf(dst, max,
- "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
- "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
- "ip6.arpa.",
- in6_addr->s6_addr[15] & 0xf,
- (in6_addr->s6_addr[15] >> 4) & 0xf,
- in6_addr->s6_addr[14] & 0xf,
- (in6_addr->s6_addr[14] >> 4) & 0xf,
- in6_addr->s6_addr[13] & 0xf,
- (in6_addr->s6_addr[13] >> 4) & 0xf,
- in6_addr->s6_addr[12] & 0xf,
- (in6_addr->s6_addr[12] >> 4) & 0xf,
- in6_addr->s6_addr[11] & 0xf,
- (in6_addr->s6_addr[11] >> 4) & 0xf,
- in6_addr->s6_addr[10] & 0xf,
- (in6_addr->s6_addr[10] >> 4) & 0xf,
- in6_addr->s6_addr[9] & 0xf,
- (in6_addr->s6_addr[9] >> 4) & 0xf,
- in6_addr->s6_addr[8] & 0xf,
- (in6_addr->s6_addr[8] >> 4) & 0xf,
- in6_addr->s6_addr[7] & 0xf,
- (in6_addr->s6_addr[7] >> 4) & 0xf,
- in6_addr->s6_addr[6] & 0xf,
- (in6_addr->s6_addr[6] >> 4) & 0xf,
- in6_addr->s6_addr[5] & 0xf,
- (in6_addr->s6_addr[5] >> 4) & 0xf,
- in6_addr->s6_addr[4] & 0xf,
- (in6_addr->s6_addr[4] >> 4) & 0xf,
- in6_addr->s6_addr[3] & 0xf,
- (in6_addr->s6_addr[3] >> 4) & 0xf,
- in6_addr->s6_addr[2] & 0xf,
- (in6_addr->s6_addr[2] >> 4) & 0xf,
- in6_addr->s6_addr[1] & 0xf,
- (in6_addr->s6_addr[1] >> 4) & 0xf,
- in6_addr->s6_addr[0] & 0xf,
- (in6_addr->s6_addr[0] >> 4) & 0xf);
- break;
- default:
- return (-1);
- }
- return (0);
-}
-
#ifdef YP
static struct hostent_ext *
_yp_gethostnamadr(int type, const void *data)
diff --git a/lib/libc/asr/getnameinfo.c b/lib/libc/asr/getnameinfo.c
index 7e2b5d43db4..5f5c6535da5 100644
--- a/lib/libc/asr/getnameinfo.c
+++ b/lib/libc/asr/getnameinfo.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: getnameinfo.c,v 1.2 2013/05/27 17:31:01 eric Exp $ */
+/* $OpenBSD: getnameinfo.c,v 1.3 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -43,7 +43,7 @@ getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
return (EAI_SYSTEM);
}
- async_run_sync(as, &ar);
+ asr_async_run_sync(as, &ar);
if (ar.ar_gai_errno == EAI_SYSTEM)
errno = ar.ar_errno;
diff --git a/lib/libc/asr/getnameinfo_async.c b/lib/libc/asr/getnameinfo_async.c
index febb25d76cc..55f0e68b1b3 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.6 2013/03/29 21:20:50 eric Exp $ */
+/* $OpenBSD: getnameinfo_async.c,v 1.7 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -43,7 +43,7 @@ getnameinfo_async(const struct sockaddr *sa, socklen_t slen, char *host,
struct async *as;
ac = asr_use_resolver(asr);
- if ((as = async_new(ac, ASR_GETNAMEINFO)) == NULL)
+ if ((as = asr_async_new(ac, ASR_GETNAMEINFO)) == NULL)
goto abort; /* errno set */
as->as_run = getnameinfo_async_run;
@@ -64,7 +64,7 @@ getnameinfo_async(const struct sockaddr *sa, socklen_t slen, char *host,
abort:
if (as)
- async_free(as);
+ asr_async_free(as);
asr_ctx_unref(ac);
return (NULL);
}
@@ -153,7 +153,7 @@ getnameinfo_async_run(struct async *as, struct async_res *ar)
case ASR_STATE_SUBQUERY:
- if ((r = async_run(as->as.ni.subq, ar)) == ASYNC_COND)
+ if ((r = asr_async_run(as->as.ni.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
/*
diff --git a/lib/libc/asr/getnetnamadr.c b/lib/libc/asr/getnetnamadr.c
index 5c8781cb2ef..eeae092c9a1 100644
--- a/lib/libc/asr/getnetnamadr.c
+++ b/lib/libc/asr/getnetnamadr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: getnetnamadr.c,v 1.5 2013/05/27 17:31:01 eric Exp $ */
+/* $OpenBSD: getnetnamadr.c,v 1.6 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -91,7 +91,7 @@ getnetbyname(const char *name)
return (NULL);
}
- async_run_sync(as, &ar);
+ asr_async_run_sync(as, &ar);
errno = ar.ar_errno;
h_errno = ar.ar_h_errno;
@@ -118,7 +118,7 @@ getnetbyaddr(in_addr_t net, int type)
return (NULL);
}
- async_run_sync(as, &ar);
+ asr_async_run_sync(as, &ar);
errno = ar.ar_errno;
h_errno = ar.ar_h_errno;
diff --git a/lib/libc/asr/getnetnamadr_async.c b/lib/libc/asr/getnetnamadr_async.c
index c7da0cf4b82..ef3d3d1b165 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.9 2013/04/30 12:02:39 eric Exp $ */
+/* $OpenBSD: getnetnamadr_async.c,v 1.10 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -39,8 +39,6 @@ struct netent_ext {
char *pos;
};
-ssize_t addr_as_fqdn(const char *, int, char *, size_t);
-
static int getnetnamadr_async_run(struct async *, struct async_res *);
static struct netent_ext *netent_alloc(int);
static int netent_set_cname(struct netent_ext *, const char *, int);
@@ -61,7 +59,7 @@ getnetbyname_async(const char *name, struct asr *asr)
}
ac = asr_use_resolver(asr);
- if ((as = async_new(ac, ASR_GETNETBYNAME)) == NULL)
+ if ((as = asr_async_new(ac, ASR_GETNETBYNAME)) == NULL)
goto abort; /* errno set */
as->as_run = getnetnamadr_async_run;
@@ -75,7 +73,7 @@ getnetbyname_async(const char *name, struct asr *asr)
abort:
if (as)
- async_free(as);
+ asr_async_free(as);
asr_ctx_unref(ac);
return (NULL);
}
@@ -87,7 +85,7 @@ getnetbyaddr_async(in_addr_t net, int family, struct asr *asr)
struct async *as;
ac = asr_use_resolver(asr);
- if ((as = async_new(ac, ASR_GETNETBYADDR)) == NULL)
+ if ((as = asr_async_new(ac, ASR_GETNETBYADDR)) == NULL)
goto abort; /* errno set */
as->as_run = getnetnamadr_async_run;
@@ -99,7 +97,7 @@ getnetbyaddr_async(in_addr_t net, int family, struct asr *asr)
abort:
if (as)
- async_free(as);
+ asr_async_free(as);
asr_ctx_unref(ac);
return (NULL);
}
@@ -154,7 +152,7 @@ getnetnamadr_async_run(struct async *as, struct async_res *ar)
name = dname;
in = htonl(as->as.netnamadr.addr);
- 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(
@@ -202,7 +200,7 @@ getnetnamadr_async_run(struct async *as, struct async_res *ar)
case ASR_STATE_SUBQUERY:
- if ((r = async_run(as->as.netnamadr.subq, ar)) == ASYNC_COND)
+ if ((r = asr_async_run(as->as.netnamadr.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
as->as.netnamadr.subq = NULL;
@@ -329,12 +327,12 @@ netent_from_packet(int reqtype, char *pkt, size_t pktlen)
if ((n = netent_alloc(AF_INET)) == NULL)
return (NULL);
- unpack_init(&p, pkt, pktlen);
- unpack_header(&p, &hdr);
+ asr_unpack_init(&p, pkt, pktlen);
+ asr_unpack_header(&p, &hdr);
for (; hdr.qdcount; hdr.qdcount--)
- unpack_query(&p, &q);
+ asr_unpack_query(&p, &q);
for (; hdr.ancount; hdr.ancount--) {
- unpack_rr(&p, &rr);
+ asr_unpack_rr(&p, &rr);
if (rr.rr_class != C_IN)
continue;
switch (rr.rr_type) {
diff --git a/lib/libc/asr/getrrsetbyname.c b/lib/libc/asr/getrrsetbyname.c
index 9cafae80877..8736ae06a72 100644
--- a/lib/libc/asr/getrrsetbyname.c
+++ b/lib/libc/asr/getrrsetbyname.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: getrrsetbyname.c,v 1.2 2013/05/27 17:31:01 eric Exp $ */
+/* $OpenBSD: getrrsetbyname.c,v 1.3 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -41,7 +41,7 @@ getrrsetbyname(const char *name, unsigned int class, unsigned int type,
return (r);
}
- async_run_sync(as, &ar);
+ asr_async_run_sync(as, &ar);
*res = ar.ar_rrsetinfo;
diff --git a/lib/libc/asr/getrrsetbyname_async.c b/lib/libc/asr/getrrsetbyname_async.c
index 1e0e77617dc..338fc8d563a 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.4 2013/04/30 12:02:39 eric Exp $ */
+/* $OpenBSD: getrrsetbyname_async.c,v 1.5 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -42,7 +42,7 @@ getrrsetbyname_async(const char *hostname, unsigned int rdclass,
struct async *as;
ac = asr_use_resolver(asr);
- if ((as = async_new(ac, ASR_GETRRSETBYNAME)) == NULL)
+ if ((as = asr_async_new(ac, ASR_GETRRSETBYNAME)) == NULL)
goto abort; /* errno set */
as->as_run = getrrsetbyname_async_run;
@@ -57,7 +57,7 @@ getrrsetbyname_async(const char *hostname, unsigned int rdclass,
return (as);
abort:
if (as)
- async_free(as);
+ asr_async_free(as);
asr_ctx_unref(ac);
return (NULL);
@@ -109,7 +109,7 @@ getrrsetbyname_async_run(struct async *as, struct async_res *ar)
case ASR_STATE_SUBQUERY:
- if ((async_run(as->as.rrset.subq, ar)) == ASYNC_COND)
+ if ((asr_async_run(as->as.rrset.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
as->as.rrset.subq = NULL;
@@ -169,7 +169,7 @@ getrrsetbyname_async_run(struct async *as, struct async_res *ar)
/* The rest of this file is taken from the orignal implementation. */
-/* $OpenBSD: getrrsetbyname_async.c,v 1.4 2013/04/30 12:02:39 eric Exp $ */
+/* $OpenBSD: getrrsetbyname_async.c,v 1.5 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2001 Jakob Schlyter. All rights reserved.
diff --git a/lib/libc/asr/res_mkquery.c b/lib/libc/asr/res_mkquery.c
index ffd7a34a411..8e9e2689129 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.5 2013/04/01 20:22:27 eric Exp $ */
+/* $OpenBSD: res_mkquery.c,v 1.6 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -49,7 +49,7 @@ res_mkquery(int op, const char *dname, int class, int type,
dname = fqdn;
}
- if (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);
@@ -60,9 +60,9 @@ res_mkquery(int op, const char *dname, int class, int type,
h.flags |= RD_MASK;
h.qdcount = 1;
- pack_init(&p, buf, buflen);
- pack_header(&p, &h);
- 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);
diff --git a/lib/libc/asr/res_query.c b/lib/libc/asr/res_query.c
index c30188fae54..eed33d78307 100644
--- a/lib/libc/asr/res_query.c
+++ b/lib/libc/asr/res_query.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: res_query.c,v 1.4 2013/05/27 17:31:01 eric Exp $ */
+/* $OpenBSD: res_query.c,v 1.5 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -48,7 +48,7 @@ res_query(const char *name, int class, int type, u_char *ans, int anslen)
return (-1); /* errno set */
}
- async_run_sync(as, &ar);
+ asr_async_run_sync(as, &ar);
if (ar.ar_errno)
errno = ar.ar_errno;
@@ -90,7 +90,7 @@ res_search(const char *name, int class, int type, u_char *ans, int anslen)
return (-1); /* errno set */
}
- async_run_sync(as, &ar);
+ asr_async_run_sync(as, &ar);
if (ar.ar_errno)
errno = ar.ar_errno;
diff --git a/lib/libc/asr/res_search_async.c b/lib/libc/asr/res_search_async.c
index 8bc950db7bb..3a5dc001ba2 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.9 2013/06/01 15:02:01 eric Exp $ */
+/* $OpenBSD: res_search_async.c,v 1.10 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -29,8 +29,8 @@
#include "asr_private.h"
static int res_search_async_run(struct async *, struct async_res *);
-size_t asr_domcat(const char *, const char *, char *, size_t);
-int asr_iter_domain(struct async *, const char *, char *, size_t);
+static size_t domcat(const char *, const char *, char *, size_t);
+static int iter_domain(struct async *, const char *, char *, size_t);
/*
* Unlike res_query_async(), this function returns a valid packet only if
@@ -63,7 +63,7 @@ res_search_async_ctx(const char *name, int class, int type, struct asr_ctx *ac)
if (asr_hostalias(ac, name, alias, sizeof(alias)))
return res_query_async_ctx(alias, class, type, ac);
- if ((as = 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)
@@ -75,7 +75,7 @@ res_search_async_ctx(const char *name, int class, int type, struct asr_ctx *ac)
return (as);
err:
if (as)
- async_free(as);
+ asr_async_free(as);
return (NULL);
}
@@ -103,7 +103,7 @@ res_search_async_run(struct async *as, struct async_res *ar)
*/
as->as_dom_flags = 0;
- r = asr_iter_domain(as, as->as.search.name, fqdn, sizeof(fqdn));
+ r = iter_domain(as, as->as.search.name, fqdn, sizeof(fqdn));
if (r == -1) {
async_set_state(as, ASR_STATE_NOT_FOUND);
break;
@@ -134,7 +134,7 @@ res_search_async_run(struct async *as, struct async_res *ar)
case ASR_STATE_SUBQUERY:
- if ((r = async_run(as->as.search.subq, ar)) == ASYNC_COND)
+ if ((r = asr_async_run(as->as.search.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
as->as.search.subq = NULL;
@@ -207,8 +207,8 @@ res_search_async_run(struct async *as, struct async_res *ar)
* Concatenate a name and a domain name. The result has no trailing dot.
* Return the resulting string length, or 0 in case of error.
*/
-size_t
-asr_domcat(const char *name, const char *domain, char *buf, size_t buflen)
+static size_t
+domcat(const char *name, const char *domain, char *buf, size_t buflen)
{
size_t r;
@@ -239,7 +239,7 @@ enum {
* error generating the next name, or the resulting name length.
*/
int
-asr_iter_domain(struct async *as, const char *name, char * buf, size_t len)
+iter_domain(struct async *as, const char *name, char * buf, size_t len)
{
const char *c;
int dots;
@@ -254,10 +254,10 @@ asr_iter_domain(struct async *as, const char *name, char * buf, size_t len)
* don't try anything else.
*/
if (strlen(name) && name[strlen(name) - 1] == '.') {
- DPRINT("asr: asr_iter_domain(\"%s\") fqdn\n", name);
+ DPRINT("asr: iter_domain(\"%s\") fqdn\n", name);
as->as_dom_flags |= ASYNC_DOM_FQDN;
as->as_dom_step = DOM_DONE;
- return (asr_domcat(name, NULL, buf, len));
+ return (domcat(name, NULL, buf, len));
}
/*
@@ -274,7 +274,7 @@ asr_iter_domain(struct async *as, const char *name, char * buf, size_t len)
for (c = name; *c; c++)
dots += (*c == '.');
if (dots >= as->as_ctx->ac_ndots) {
- DPRINT("asr: asr_iter_domain(\"%s\") ndots\n", name);
+ DPRINT("asr: iter_domain(\"%s\") ndots\n", name);
as->as_dom_flags |= ASYNC_DOM_NDOTS;
if (strlcpy(buf, name, len) >= len)
return (0);
@@ -285,10 +285,10 @@ asr_iter_domain(struct async *as, const char *name, char * buf, size_t len)
case DOM_DOMAIN:
if (as->as_dom_idx < as->as_ctx->ac_domcount) {
- DPRINT("asr: asr_iter_domain(\"%s\") domain \"%s\"\n",
+ 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 (asr_domcat(name,
+ return (domcat(name,
as->as_ctx->ac_dom[as->as_dom_idx++], buf, len));
}
@@ -301,7 +301,7 @@ asr_iter_domain(struct async *as, const char *name, char * buf, size_t len)
* do it now.
*/
if (!(as->as_dom_flags & ASYNC_DOM_NDOTS)) {
- DPRINT("asr: asr_iter_domain(\"%s\") as is\n", name);
+ DPRINT("asr: iter_domain(\"%s\") as is\n", name);
as->as_dom_flags |= ASYNC_DOM_ASIS;
if (strlcpy(buf, name, len) >= len)
return (0);
@@ -311,7 +311,7 @@ asr_iter_domain(struct async *as, const char *name, char * buf, size_t len)
case DOM_DONE:
default:
- DPRINT("asr: asr_iter_domain(\"%s\") done\n", name);
+ DPRINT("asr: iter_domain(\"%s\") done\n", name);
return (-1);
}
}
diff --git a/lib/libc/asr/res_send.c b/lib/libc/asr/res_send.c
index 2353796a080..054eca5e39e 100644
--- a/lib/libc/asr/res_send.c
+++ b/lib/libc/asr/res_send.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: res_send.c,v 1.4 2013/05/27 17:31:01 eric Exp $ */
+/* $OpenBSD: res_send.c,v 1.5 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -42,7 +42,7 @@ res_send(const u_char *buf, int buflen, u_char *ans, int anslen)
if (as == NULL)
return (-1); /* errno set */
- async_run_sync(as, &ar);
+ asr_async_run_sync(as, &ar);
if (ar.ar_errno) {
errno = ar.ar_errno;
diff --git a/lib/libc/asr/res_send_async.c b/lib/libc/asr/res_send_async.c
index 4a3e1665df7..07518170104 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.18 2013/06/01 09:21:10 eric Exp $ */
+/* $OpenBSD: res_send_async.c,v 1.19 2013/07/12 14:36:22 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -43,7 +43,7 @@ static int tcp_read(struct async *);
static int validate_packet(struct async *);
static int setup_query(struct async *, const char *, const char *, int, int);
static int ensure_ibuf(struct async *, size_t);
-int asr_iter_ns(struct async *);
+static int iter_ns(struct async *);
#define AS_NS_SA(p) ((p)->as_ctx->ac_ns[(p)->as.dns.nsidx - 1])
@@ -60,7 +60,7 @@ res_send_async(const unsigned char *buf, int buflen, struct asr *asr)
DPRINT_PACKET("asr: res_send_async()", buf, buflen);
ac = asr_use_resolver(asr);
- if ((as = async_new(ac, ASR_SEND)) == NULL) {
+ if ((as = asr_async_new(ac, ASR_SEND)) == NULL) {
asr_ctx_unref(ac);
return (NULL); /* errno set */
}
@@ -71,9 +71,9 @@ res_send_async(const unsigned char *buf, int buflen, struct asr *asr)
as->as.dns.obuflen = buflen;
as->as.dns.obufsize = buflen;
- unpack_init(&p, buf, buflen);
- unpack_header(&p, &h);
- 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;
@@ -89,7 +89,7 @@ res_send_async(const unsigned char *buf, int buflen, struct asr *asr)
return (as);
err:
if (as)
- async_free(as);
+ asr_async_free(as);
asr_ctx_unref(ac);
return (NULL);
}
@@ -122,7 +122,7 @@ res_query_async_ctx(const char *name, int class, int type, struct asr_ctx *a_ctx
DPRINT("asr: res_query_async_ctx(\"%s\", %i, %i)\n", name, class, type);
- if ((as = 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;
@@ -136,7 +136,7 @@ res_query_async_ctx(const char *name, int class, int type, struct asr_ctx *a_ctx
err:
if (as)
- async_free(as);
+ asr_async_free(as);
return (NULL);
}
@@ -160,7 +160,7 @@ res_send_async_run(struct async *as, struct async_res *ar)
case ASR_STATE_NEXT_NS:
- if (asr_iter_ns(as) == -1) {
+ if (iter_ns(as) == -1) {
ar->ar_errno = ETIMEDOUT;
async_set_state(as, ASR_STATE_HALT);
break;
@@ -363,9 +363,9 @@ setup_query(struct async *as, const char *name, const char *dom,
return (-1);
}
- if (dname_from_fqdn(fqdn, dname, sizeof(dname)) == -1) {
+ if (asr_dname_from_fqdn(fqdn, dname, sizeof(dname)) == -1) {
errno = EINVAL;
- DPRINT("dname_from_fqdn: invalid\n");
+ DPRINT("asr_dname_from_fqdn: invalid\n");
return (-1);
}
@@ -383,9 +383,9 @@ setup_query(struct async *as, const char *name, const char *dom,
h.flags |= RD_MASK;
h.qdcount = 1;
- pack_init(&p, as->as.dns.obuf, as->as.dns.obufsize);
- pack_header(&p, &h);
- 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;
@@ -678,9 +678,9 @@ validate_packet(struct async *as)
struct rr rr;
int r;
- unpack_init(&p, as->as.dns.ibuf, as->as.dns.ibuflen);
+ asr_unpack_init(&p, as->as.dns.ibuf, as->as.dns.ibuflen);
- unpack_header(&p, &h);
+ asr_unpack_header(&p, &h);
if (p.err)
goto inval;
@@ -703,7 +703,7 @@ validate_packet(struct async *as)
as->as.dns.rcode = RCODE(h.flags);
as->as.dns.ancount = h.ancount;
- unpack_query(&p, &q);
+ asr_unpack_query(&p, &q);
if (p.err)
goto inval;
@@ -723,7 +723,7 @@ validate_packet(struct async *as)
/* Validate the rest of the packet */
for (r = h.ancount + h.nscount + h.arcount; r; r--)
- unpack_rr(&p, &rr);
+ asr_unpack_rr(&p, &rr);
if (p.err || (p.offset != as->as.dns.ibuflen))
goto inval;
@@ -740,8 +740,8 @@ validate_packet(struct async *as)
* over the list until the maximum retry counter is reached. Return 0 on
* success, or -1 if all nameservers were used.
*/
-int
-asr_iter_ns(struct async *as)
+static int
+iter_ns(struct async *as)
{
for (;;) {
if (as->as.dns.nsloop >= as->as_ctx->ac_nsretries)
@@ -752,7 +752,7 @@ asr_iter_ns(struct async *as)
break;
as->as.dns.nsidx = 0;
as->as.dns.nsloop++;
- DPRINT("asr: asr_iter_ns(): cycle %i\n", as->as.dns.nsloop);
+ DPRINT("asr: iter_ns(): cycle %i\n", as->as.dns.nsloop);
}
as->as_timeout = 1000 * (as->as_ctx->ac_nstimeout << as->as.dns.nsloop);