summaryrefslogtreecommitdiff
path: root/lib/libc/asr
diff options
context:
space:
mode:
authorEric Faurot <eric@cvs.openbsd.org>2014-03-25 19:48:12 +0000
committerEric Faurot <eric@cvs.openbsd.org>2014-03-25 19:48:12 +0000
commit1a090236bf712741c66bb951190b19b8606e20de (patch)
tree6355a65f2168b0e5be6fe216d4dc4cfed415633c /lib/libc/asr
parent2d06d16ca6569b9936404a79bf3821691d0fb951 (diff)
Cleanup and simplify the API to be exposed. Use better names for
structures, functions and defines. discussed with and ok deraadt@ guenther@
Diffstat (limited to 'lib/libc/asr')
-rw-r--r--lib/libc/asr/asr.c38
-rw-r--r--lib/libc/asr/asr.h104
-rw-r--r--lib/libc/asr/asr_debug.c3
-rw-r--r--lib/libc/asr/asr_private.h36
-rw-r--r--lib/libc/asr/getaddrinfo.c8
-rw-r--r--lib/libc/asr/getaddrinfo_async.c43
-rw-r--r--lib/libc/asr/gethostnamadr.c18
-rw-r--r--lib/libc/asr/gethostnamadr_async.c32
-rw-r--r--lib/libc/asr/getnameinfo.c10
-rw-r--r--lib/libc/asr/getnameinfo_async.c24
-rw-r--r--lib/libc/asr/getnetnamadr.c14
-rw-r--r--lib/libc/asr/getnetnamadr_async.c24
-rw-r--r--lib/libc/asr/getrrsetbyname.c10
-rw-r--r--lib/libc/asr/getrrsetbyname_async.c22
-rw-r--r--lib/libc/asr/res_query.c14
-rw-r--r--lib/libc/asr/res_search_async.c26
-rw-r--r--lib/libc/asr/res_send.c10
-rw-r--r--lib/libc/asr/res_send_async.c69
18 files changed, 251 insertions, 254 deletions
diff --git a/lib/libc/asr/asr.c b/lib/libc/asr/asr.c
index f87fc513647..8edbf10a6d2 100644
--- a/lib/libc/asr/asr.c
+++ b/lib/libc/asr/asr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: asr.c,v 1.31 2013/07/12 14:36:21 eric Exp $ */
+/* $OpenBSD: asr.c,v 1.32 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2010-2012 Eric Faurot <eric@openbsd.org>
*
@@ -86,7 +86,7 @@ static void *__THREAD_NAME(_asr);
static struct asr *_asr = NULL;
/* Allocate and configure an async "resolver". */
-struct asr *
+void *
asr_resolver(const char *conf)
{
static int init = 0;
@@ -156,8 +156,9 @@ asr_resolver(const char *conf)
* Drop the reference to the current context.
*/
void
-asr_resolver_done(struct asr *asr)
+asr_resolver_done(void *arg)
{
+ struct asr *asr = arg;
struct asr **priv;
if (asr == NULL) {
@@ -177,26 +178,26 @@ asr_resolver_done(struct asr *asr)
* Cancel an async query.
*/
void
-asr_async_abort(struct async *as)
+asr_abort(struct asr_query *as)
{
asr_async_free(as);
}
/*
* Resume the "as" async query resolution. Return one of ASYNC_COND,
- * ASYNC_YIELD or ASYNC_DONE and put query-specific return values in
- * the user-allocated memory at "ar".
+ * or ASYNC_DONE and put query-specific return values in the user-allocated
+ * memory at "ar".
*/
int
-asr_async_run(struct async *as, struct async_res *ar)
+asr_run(struct asr_query *as, struct asr_result *ar)
{
int r, saved_errno = errno;
- DPRINT("asr: async_run(%p, %p) %s ctx=[%p]\n", as, ar,
+ DPRINT("asr: asr_run(%p, %p) %s ctx=[%p]\n", as, ar,
asr_querystr(as->as_type), as->as_ctx);
r = as->as_run(as, ar);
- DPRINT("asr: async_run(%p, %p) -> %s", as, ar, asr_transitionstr(r));
+ DPRINT("asr: asr_run(%p, %p) -> %s", as, ar, asr_transitionstr(r));
#ifdef DEBUG
if (r == ASYNC_COND)
#endif
@@ -214,20 +215,20 @@ asr_async_run(struct async *as, struct async_res *ar)
* Same as above, but run in a loop that handles the fd conditions result.
*/
int
-asr_async_run_sync(struct async *as, struct async_res *ar)
+asr_run_sync(struct asr_query *as, struct asr_result *ar)
{
struct pollfd fds[1];
int r, saved_errno = errno;
- while ((r = asr_async_run(as, ar)) == ASYNC_COND) {
+ while ((r = asr_run(as, ar)) == ASYNC_COND) {
fds[0].fd = ar->ar_fd;
- fds[0].events = (ar->ar_cond == ASYNC_READ) ? POLLIN : POLLOUT;
+ fds[0].events = (ar->ar_cond == ASR_WANT_READ) ? POLLIN:POLLOUT;
again:
r = poll(fds, 1, ar->ar_timeout);
if (r == -1 && errno == EINTR)
goto again;
/*
- * Otherwise, just ignore the error and let asr_async_run()
+ * Otherwise, just ignore the error and let asr_run()
* catch the failure.
*/
}
@@ -242,10 +243,10 @@ asr_async_run_sync(struct async *as, struct async_res *ar)
* Take a reference on it so it does not gets deleted while the async query
* is running.
*/
-struct async *
+struct asr_query *
asr_async_new(struct asr_ctx *ac, int type)
{
- struct async *as;
+ struct asr_query *as;
DPRINT("asr: asr_async_new(ctx=%p) type=%i refcount=%i\n", ac, type,
ac ? ac->ac_refcount : 0);
@@ -265,7 +266,7 @@ asr_async_new(struct asr_ctx *ac, int type)
* Free an async query and unref the associated context.
*/
void
-asr_async_free(struct async *as)
+asr_async_free(struct asr_query *as)
{
DPRINT("asr: asr_async_free(%p)\n", as);
switch (as->as_type) {
@@ -339,8 +340,9 @@ asr_async_free(struct async *as)
* using this context.
*/
struct asr_ctx *
-asr_use_resolver(struct asr *asr)
+asr_use_resolver(void *arg)
{
+ struct asr *asr = arg;
struct asr **priv;
if (asr == NULL) {
@@ -886,7 +888,7 @@ asr_parse_namedb_line(FILE *file, char **tokens, int ntoken)
* Return 0 on success, or -1 if no more DBs is available.
*/
int
-asr_iter_db(struct async *as)
+asr_iter_db(struct asr_query *as)
{
if (as->as_db_idx >= as->as_ctx->ac_dbcount) {
DPRINT("asr_iter_db: done\n");
diff --git a/lib/libc/asr/asr.h b/lib/libc/asr/asr.h
index a8b3caf904f..9a1d792220a 100644
--- a/lib/libc/asr/asr.h
+++ b/lib/libc/asr/asr.h
@@ -1,6 +1,6 @@
-/* $OpenBSD: asr.h,v 1.7 2013/07/12 14:36:21 eric Exp $ */
+/* $OpenBSD: asr.h,v 1.8 2014/03/25 19:48:11 eric Exp $ */
/*
- * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
+ * Copyright (c) 2012-2014 Eric Faurot <eric@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -18,83 +18,75 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
-#include <netinet/in.h>
/*
- * This part is the generic API for the async mechanism. It could be useful
- * beyond the resolver.
+ * Expected fd conditions
*/
-
-/* Return values for async_run() */
-#define ASYNC_COND 0 /* wait for fd condition */
-#define ASYNC_YIELD 1 /* partial result */
-#define ASYNC_DONE 2 /* done */
-
-/* Expected fd conditions */
-#define ASYNC_READ 1
-#define ASYNC_WRITE 2
-
-/* This opaque structure holds an async query state. */
-struct async;
+#define ASR_WANT_READ 1
+#define ASR_WANT_WRITE 2
/*
- * This is the structure through which async_run() returns async
- * results to the caller.
+ * Structure through which asynchronous query results are returned when
+ * calling asr_run().
*/
-struct async_res {
- int ar_cond;
- int ar_fd;
- int ar_timeout;
+struct asr_result {
+ /* Fields set if the query is not done yet (asr_run returns 0) */
+ int ar_cond; /* ASR_WANT_READ or ASR_WANT_WRITE */
+ int ar_fd; /* the fd waiting for io condition */
+ int ar_timeout; /* time to wait for in milliseconds */
+ /* Error fields. Depends on the query type. */
int ar_errno;
int ar_h_errno;
int ar_gai_errno;
int ar_rrset_errno;
- int ar_count;
-
- int ar_rcode;
- void *ar_data;
- int ar_datalen;
- union {
- struct sockaddr sa;
- struct sockaddr_in sain;
- struct sockaddr_in6 sain6;
- } ar_sa;
+ /* Result for res_*_async() calls */
+ int ar_count; /* number of answers in the dns reply */
+ int ar_rcode; /* response code in the dns reply */
+ void *ar_data; /* raw reply packet (must be freed) */
+ int ar_datalen; /* reply packet length */
+ struct sockaddr_storage ar_ns; /* nameserver that responded */
+ /* Result for other calls. Must be freed properly. */
struct addrinfo *ar_addrinfo;
struct rrsetinfo *ar_rrsetinfo;
struct hostent *ar_hostent;
struct netent *ar_netent;
};
-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;
+/*
+ * Asynchronous query management.
+ */
-struct asr *asr_resolver(const char *);
-void asr_resolver_done(struct asr *);
+/* Forward declaration. The API uses opaque pointers as query handles. */
+struct asr_query;
-/* Async version of the resolver API */
+int asr_run(struct asr_query *, struct asr_result *);
+int asr_run_sync(struct asr_query *, struct asr_result *);
+void asr_abort(struct asr_query *);
-struct async *res_send_async(const unsigned char *, int, struct asr *);
-struct async *res_query_async(const char *, int, int, struct asr *);
-struct async *res_search_async(const char *, int, int, struct asr *);
+/*
+ * Asynchronous version of the resolver functions. Similar prototypes, with
+ * an extra context parameter at the end which must currently be set to NULL.
+ * All functions return a handle suitable for use with the management functions
+ * above.
+ */
+struct asr_query *res_send_async(const unsigned char *, int, void *);
+struct asr_query *res_query_async(const char *, int, int, void *);
+struct asr_query *res_search_async(const char *, int, int, void *);
-struct async *getrrsetbyname_async(const char *, unsigned int, unsigned int,
- unsigned int, struct asr *);
+struct asr_query *getrrsetbyname_async(const char *, unsigned int, unsigned int,
+ unsigned int, void *);
-struct async *gethostbyname_async(const char *, struct asr *);
-struct async *gethostbyname2_async(const char *, int, struct asr *);
-struct async *gethostbyaddr_async(const void *, socklen_t, int, struct asr *);
+struct asr_query *gethostbyname_async(const char *, void *);
+struct asr_query *gethostbyname2_async(const char *, int, void *);
+struct asr_query *gethostbyaddr_async(const void *, socklen_t, int, void *);
-struct async *getnetbyname_async(const char *, struct asr *);
-struct async *getnetbyaddr_async(in_addr_t, int, struct asr *);
+struct asr_query *getnetbyname_async(const char *, void *);
+struct asr_query *getnetbyaddr_async(in_addr_t, int, void *);
-struct async *getaddrinfo_async(const char *, const char *,
- const struct addrinfo *, struct asr *);
-struct async *getnameinfo_async(const struct sockaddr *, socklen_t, char *,
- size_t, char *, size_t, int, struct asr *);
+struct asr_query *getaddrinfo_async(const char *, const char *,
+ const struct addrinfo *, void *);
+struct asr_query *getnameinfo_async(const struct sockaddr *, socklen_t, char *,
+ size_t, char *, size_t, int, void *);
diff --git a/lib/libc/asr/asr_debug.c b/lib/libc/asr/asr_debug.c
index fff192edcea..cfab567704e 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.15 2014/03/14 11:07:33 eric Exp $ */
+/* $OpenBSD: asr_debug.c,v 1.16 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -354,7 +354,6 @@ asr_transitionstr(int type)
{
switch (type) {
CASE(ASYNC_COND);
- CASE(ASYNC_YIELD);
CASE(ASYNC_DONE);
default:
return "?";
diff --git a/lib/libc/asr/asr_private.h b/lib/libc/asr/asr_private.h
index c8cd3456f0c..d03e686310a 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.24 2014/03/14 11:07:33 eric Exp $ */
+/* $OpenBSD: asr_private.h,v 1.25 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -152,6 +152,8 @@ struct asr {
struct asr_ctx *a_ctx;
};
+#define ASYNC_COND 0
+#define ASYNC_DONE 1
#define ASYNC_DOM_FQDN 0x00000001
#define ASYNC_DOM_NDOTS 0x00000002
@@ -164,8 +166,8 @@ struct asr {
#define ASYNC_EXTOBUF 0x00002000
-struct async {
- int (*as_run)(struct async *, struct async_res *);
+struct asr_query {
+ int (*as_run)(struct asr_query *, struct asr_result *);
struct asr_ctx *as_ctx;
int as_type;
int as_state;
@@ -212,7 +214,7 @@ struct async {
int class;
int type;
char *name;
- struct async *subq;
+ struct asr_query *subq;
int saved_h_errno;
} search;
@@ -221,13 +223,13 @@ struct async {
int class;
int type;
char *name;
- struct async *subq;
+ struct asr_query *subq;
} rrset;
struct {
char *name;
int family;
- struct async *subq;
+ struct asr_query *subq;
char addr[16];
int addrlen;
int subq_h_errno;
@@ -236,7 +238,7 @@ struct async {
struct {
char *name;
int family;
- struct async *subq;
+ struct asr_query *subq;
in_addr_t addr;
} netnamadr;
@@ -255,7 +257,7 @@ struct async {
char *fqdn;
struct addrinfo *aifirst;
struct addrinfo *ailast;
- struct async *subq;
+ struct asr_query *subq;
int flags;
} ai;
@@ -270,7 +272,7 @@ struct async {
struct sockaddr_in6 sain6;
} sa;
int flags;
- struct async *subq;
+ struct asr_query *subq;
} ni;
#define MAXTOKEN 10
} as;
@@ -311,20 +313,22 @@ 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_resolver(const char *);
+void asr_resolver_done(void *);
+struct asr_ctx *asr_use_resolver(void *);
void asr_ctx_unref(struct asr_ctx *);
-struct async *asr_async_new(struct asr_ctx *, int);
-void asr_async_free(struct async *);
+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 async *);
+int asr_iter_db(struct asr_query *);
int asr_parse_namedb_line(FILE *, char **, int);
char *asr_hostalias(struct asr_ctx *, const char *, char *, size_t);
/* *_async.c */
-struct async *res_query_async_ctx(const char *, int, int, struct asr_ctx *);
-struct async *res_search_async_ctx(const char *, int, int, struct asr_ctx *);
-struct async *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 *);
#ifdef DEBUG
diff --git a/lib/libc/asr/getaddrinfo.c b/lib/libc/asr/getaddrinfo.c
index 0c6e2f45c75..074a824c1be 100644
--- a/lib/libc/asr/getaddrinfo.c
+++ b/lib/libc/asr/getaddrinfo.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: getaddrinfo.c,v 1.3 2013/07/12 14:36:21 eric Exp $ */
+/* $OpenBSD: getaddrinfo.c,v 1.4 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -27,8 +27,8 @@ int
getaddrinfo(const char *hostname, const char *servname,
const struct addrinfo *hints, struct addrinfo **res)
{
- struct async *as;
- struct async_res ar;
+ struct asr_query *as;
+ struct asr_result ar;
int saved_errno = errno;
res_init();
@@ -42,7 +42,7 @@ getaddrinfo(const char *hostname, const char *servname,
return (EAI_SYSTEM);
}
- asr_async_run_sync(as, &ar);
+ asr_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 b730d8c87d5..bf7328803a5 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.24 2014/03/14 11:07:33 eric Exp $ */
+/* $OpenBSD: getaddrinfo_async.c,v 1.25 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -43,15 +43,15 @@ struct match {
int protocol;
};
-static int getaddrinfo_async_run(struct async *, struct async_res *);
+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 async *, int);
-static int iter_domain(struct async *, const char *, char *, size_t);
-static int addrinfo_add(struct async *, const struct sockaddr *, const char *);
-static int addrinfo_from_file(struct async *, int, FILE *);
-static int addrinfo_from_pkt(struct async *, char *, size_t);
+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);
#ifdef YP
-static int addrinfo_from_yp(struct async *, int, char *);
+static int addrinfo_from_yp(struct asr_query *, int, char *);
#endif
static const struct match matches[] = {
@@ -76,13 +76,13 @@ enum {
DOM_DONE
};
-struct async *
+struct asr_query *
getaddrinfo_async(const char *hostname, const char *servname,
- const struct addrinfo *hints, struct asr *asr)
+ const struct addrinfo *hints, void *asr)
{
- struct asr_ctx *ac;
- struct async *as;
- char alias[MAXDNAME];
+ struct asr_ctx *ac;
+ struct asr_query *as;
+ char alias[MAXDNAME];
ac = asr_use_resolver(asr);
if ((as = asr_async_new(ac, ASR_GETADDRINFO)) == NULL)
@@ -114,7 +114,7 @@ getaddrinfo_async(const char *hostname, const char *servname,
}
static int
-getaddrinfo_async_run(struct async *as, struct async_res *ar)
+getaddrinfo_async_run(struct asr_query *as, struct asr_result *ar)
{
#ifdef YP
static char *domain = NULL;
@@ -422,8 +422,9 @@ getaddrinfo_async_run(struct async *as, struct async_res *ar)
break;
case ASR_STATE_SUBQUERY:
- if ((r = asr_async_run(as->as.ai.subq, ar)) == ASYNC_COND)
+ if ((r = asr_run(as->as.ai.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
+
as->as.ai.subq = NULL;
if (ar->ar_datalen == -1) {
@@ -512,7 +513,7 @@ get_port(const char *servname, const char *proto, int numonly)
* list on the async context, unless a specific family was given in hints.
*/
static int
-iter_family(struct async *as, int first)
+iter_family(struct asr_query *as, int first)
{
if (first) {
as->as_family_idx = 0;
@@ -561,7 +562,7 @@ domcat(const char *name, const char *domain, char *buf, size_t buflen)
* error generating the next name, or the resulting name length.
*/
static int
-iter_domain(struct async *as, const char *name, char * buf, size_t len)
+iter_domain(struct asr_query *as, const char *name, char * buf, size_t len)
{
const char *c;
int dots;
@@ -644,7 +645,7 @@ iter_domain(struct async *as, const char *name, char * buf, size_t len)
* entry per protocol/socktype match.
*/
static int
-addrinfo_add(struct async *as, const struct sockaddr *sa, const char *cname)
+addrinfo_add(struct asr_query *as, const struct sockaddr *sa, const char *cname)
{
struct addrinfo *ai;
int i, port, proto;
@@ -706,7 +707,7 @@ addrinfo_add(struct async *as, const struct sockaddr *sa, const char *cname)
}
static int
-addrinfo_from_file(struct async *as, int family, FILE *f)
+addrinfo_from_file(struct asr_query *as, int family, FILE *f)
{
char *tokens[MAXTOKEN], *c;
int n, i;
@@ -743,7 +744,7 @@ addrinfo_from_file(struct async *as, int family, FILE *f)
}
static int
-addrinfo_from_pkt(struct async *as, char *pkt, size_t pktlen)
+addrinfo_from_pkt(struct asr_query *as, char *pkt, size_t pktlen)
{
struct asr_unpack p;
struct asr_dns_header h;
@@ -815,7 +816,7 @@ strsplit(char *line, char **tokens, int ntokens)
}
static int
-addrinfo_from_yp(struct async *as, int family, char *line)
+addrinfo_from_yp(struct asr_query *as, int family, char *line)
{
char *next, *tokens[MAXTOKEN], *c;
int ntok;
diff --git a/lib/libc/asr/gethostnamadr.c b/lib/libc/asr/gethostnamadr.c
index 31ead29cf31..a7561f132e3 100644
--- a/lib/libc/asr/gethostnamadr.c
+++ b/lib/libc/asr/gethostnamadr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: gethostnamadr.c,v 1.9 2013/07/12 14:36:21 eric Exp $ */
+/* $OpenBSD: gethostnamadr.c,v 1.10 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012,2013 Eric Faurot <eric@openbsd.org>
*
@@ -102,9 +102,9 @@ static int
_gethostbyname(const char *name, int af, struct hostent *ret, char *buf,
size_t buflen, int *h_errnop)
{
- struct async *as;
- struct async_res ar;
- int r;
+ struct asr_query *as;
+ struct asr_result ar;
+ int r;
if (af == -1)
as = gethostbyname_async(name, NULL);
@@ -114,7 +114,7 @@ _gethostbyname(const char *name, int af, struct hostent *ret, char *buf,
if (as == NULL)
return (errno);
- asr_async_run_sync(as, &ar);
+ asr_run_sync(as, &ar);
errno = ar.ar_errno;
*h_errnop = ar.ar_h_errno;
@@ -164,9 +164,9 @@ gethostbyname2(const char *name, int af)
struct hostent *
gethostbyaddr(const void *addr, socklen_t len, int af)
{
- struct async *as;
- struct async_res ar;
- int r;
+ struct asr_query *as;
+ struct asr_result ar;
+ int r;
res_init();
@@ -176,7 +176,7 @@ gethostbyaddr(const void *addr, socklen_t len, int af)
return (NULL);
}
- asr_async_run_sync(as, &ar);
+ asr_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 dd41ccb73e8..7d27be9eedb 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.26 2014/03/14 11:07:33 eric Exp $ */
+/* $OpenBSD: gethostnamadr_async.c,v 1.27 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -49,7 +49,7 @@ struct hostent_ext {
char *pos;
};
-static int gethostnamadr_async_run(struct async *, struct async_res *);
+static int gethostnamadr_async_run(struct asr_query *, struct asr_result *);
static struct hostent_ext *hostent_alloc(int);
static int hostent_set_cname(struct hostent_ext *, const char *, int);
static int hostent_add_alias(struct hostent_ext *, const char *, int);
@@ -63,17 +63,17 @@ static struct hostent_ext *_yp_gethostnamadr(int, const void *);
static struct hostent_ext *hostent_from_yp(int, char *);
#endif
-struct async *
-gethostbyname_async(const char *name, struct asr *asr)
+struct asr_query *
+gethostbyname_async(const char *name, void *asr)
{
return gethostbyname2_async(name, AF_INET, asr);
}
-struct async *
-gethostbyname2_async(const char *name, int af, struct asr *asr)
+struct asr_query *
+gethostbyname2_async(const char *name, int af, void *asr)
{
- struct asr_ctx *ac;
- struct async *as;
+ struct asr_ctx *ac;
+ struct asr_query *as;
/* the original segfaults */
if (name == NULL) {
@@ -105,11 +105,11 @@ gethostbyname2_async(const char *name, int af, struct asr *asr)
return (NULL);
}
-struct async *
-gethostbyaddr_async(const void *addr, socklen_t len, int af, struct asr *asr)
+struct asr_query *
+gethostbyaddr_async(const void *addr, socklen_t len, int af, void *asr)
{
- struct asr_ctx *ac;
- struct async *as;
+ struct asr_ctx *ac;
+ struct asr_query *as;
ac = asr_use_resolver(asr);
as = gethostbyaddr_async_ctx(addr, len, af, ac);
@@ -118,11 +118,11 @@ gethostbyaddr_async(const void *addr, socklen_t len, int af, struct asr *asr)
return (as);
}
-struct async *
+struct asr_query *
gethostbyaddr_async_ctx(const void *addr, socklen_t len, int af,
struct asr_ctx *ac)
{
- struct async *as;
+ struct asr_query *as;
if ((as = asr_async_new(ac, ASR_GETHOSTBYADDR)) == NULL)
goto abort; /* errno set */
@@ -142,7 +142,7 @@ gethostbyaddr_async_ctx(const void *addr, socklen_t len, int af,
}
static int
-gethostnamadr_async_run(struct async *as, struct async_res *ar)
+gethostnamadr_async_run(struct asr_query *as, struct asr_result *ar)
{
struct hostent_ext *h;
int r, type, saved_errno;
@@ -306,7 +306,7 @@ gethostnamadr_async_run(struct async *as, struct async_res *ar)
/* Run the DNS subquery. */
- if ((r = asr_async_run(as->as.hostnamadr.subq, ar)) == ASYNC_COND)
+ if ((r = asr_run(as->as.hostnamadr.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
/* Done. */
diff --git a/lib/libc/asr/getnameinfo.c b/lib/libc/asr/getnameinfo.c
index 5f5c6535da5..4ca82dae098 100644
--- a/lib/libc/asr/getnameinfo.c
+++ b/lib/libc/asr/getnameinfo.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: getnameinfo.c,v 1.3 2013/07/12 14:36:21 eric Exp $ */
+/* $OpenBSD: getnameinfo.c,v 1.4 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -27,9 +27,9 @@ int
getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
size_t hostlen, char *serv, size_t servlen, int flags)
{
- struct async *as;
- struct async_res ar;
- int saved_errno = errno;
+ struct asr_query *as;
+ struct asr_result ar;
+ int saved_errno = errno;
res_init();
@@ -43,7 +43,7 @@ getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
return (EAI_SYSTEM);
}
- asr_async_run_sync(as, &ar);
+ asr_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 55f0e68b1b3..6f8965c0b7c 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.7 2013/07/12 14:36:22 eric Exp $ */
+/* $OpenBSD: getnameinfo_async.c,v 1.8 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -31,16 +31,16 @@
#include "asr.h"
#include "asr_private.h"
-static int getnameinfo_async_run(struct async *, struct async_res *);
-static int _servname(struct async *);
-static int _numerichost(struct async *);
+static int getnameinfo_async_run(struct asr_query *, struct asr_result *);
+static int _servname(struct asr_query *);
+static int _numerichost(struct asr_query *);
-struct async *
+struct asr_query *
getnameinfo_async(const struct sockaddr *sa, socklen_t slen, char *host,
- size_t hostlen, char *serv, size_t servlen, int flags, struct asr *asr)
+ size_t hostlen, char *serv, size_t servlen, int flags, void *asr)
{
- struct asr_ctx *ac;
- struct async *as;
+ struct asr_ctx *ac;
+ struct asr_query *as;
ac = asr_use_resolver(asr);
if ((as = asr_async_new(ac, ASR_GETNAMEINFO)) == NULL)
@@ -70,7 +70,7 @@ getnameinfo_async(const struct sockaddr *sa, socklen_t slen, char *host,
}
static int
-getnameinfo_async_run(struct async *as, struct async_res *ar)
+getnameinfo_async_run(struct asr_query *as, struct asr_result *ar)
{
void *addr;
socklen_t addrlen;
@@ -153,7 +153,7 @@ getnameinfo_async_run(struct async *as, struct async_res *ar)
case ASR_STATE_SUBQUERY:
- if ((r = asr_async_run(as->as.ni.subq, ar)) == ASYNC_COND)
+ if ((r = asr_run(as->as.ni.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
/*
@@ -206,7 +206,7 @@ getnameinfo_async_run(struct async *as, struct async_res *ar)
* return (-1) if the buffer is too small.
*/
static int
-_servname(struct async *as)
+_servname(struct asr_query *as)
{
struct servent s;
struct servent_data sd;
@@ -244,7 +244,7 @@ _servname(struct async *as)
* Write the numeric address
*/
static int
-_numerichost(struct async *as)
+_numerichost(struct asr_query *as)
{
unsigned int ifidx;
char scope[IF_NAMESIZE + 1], *ifname;
diff --git a/lib/libc/asr/getnetnamadr.c b/lib/libc/asr/getnetnamadr.c
index eeae092c9a1..07ed822d02d 100644
--- a/lib/libc/asr/getnetnamadr.c
+++ b/lib/libc/asr/getnetnamadr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: getnetnamadr.c,v 1.6 2013/07/12 14:36:22 eric Exp $ */
+/* $OpenBSD: getnetnamadr.c,v 1.7 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -80,8 +80,8 @@ _fillnetent(const struct netent *e, struct netent *r, char *buf, size_t len)
struct netent *
getnetbyname(const char *name)
{
- struct async *as;
- struct async_res ar;
+ struct asr_query *as;
+ struct asr_result ar;
res_init();
@@ -91,7 +91,7 @@ getnetbyname(const char *name)
return (NULL);
}
- asr_async_run_sync(as, &ar);
+ asr_run_sync(as, &ar);
errno = ar.ar_errno;
h_errno = ar.ar_h_errno;
@@ -107,8 +107,8 @@ getnetbyname(const char *name)
struct netent *
getnetbyaddr(in_addr_t net, int type)
{
- struct async *as;
- struct async_res ar;
+ struct asr_query *as;
+ struct asr_result ar;
res_init();
@@ -118,7 +118,7 @@ getnetbyaddr(in_addr_t net, int type)
return (NULL);
}
- asr_async_run_sync(as, &ar);
+ asr_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 af46c5ba89e..6a948a52cb5 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.12 2014/03/14 11:07:33 eric Exp $ */
+/* $OpenBSD: getnetnamadr_async.c,v 1.13 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -40,18 +40,18 @@ struct netent_ext {
char *pos;
};
-static int getnetnamadr_async_run(struct async *, struct async_res *);
+static int getnetnamadr_async_run(struct asr_query *, struct asr_result *);
static struct netent_ext *netent_alloc(int);
static int netent_set_cname(struct netent_ext *, const char *, int);
static int netent_add_alias(struct netent_ext *, const char *, int);
static struct netent_ext *netent_file_match(FILE *, int, const char *);
static struct netent_ext *netent_from_packet(int, char *, size_t);
-struct async *
-getnetbyname_async(const char *name, struct asr *asr)
+struct asr_query *
+getnetbyname_async(const char *name, void *asr)
{
- struct asr_ctx *ac;
- struct async *as;
+ struct asr_ctx *ac;
+ struct asr_query *as;
/* The current resolver segfaults. */
if (name == NULL) {
@@ -79,11 +79,11 @@ getnetbyname_async(const char *name, struct asr *asr)
return (NULL);
}
-struct async *
-getnetbyaddr_async(in_addr_t net, int family, struct asr *asr)
+struct asr_query *
+getnetbyaddr_async(in_addr_t net, int family, void *asr)
{
- struct asr_ctx *ac;
- struct async *as;
+ struct asr_ctx *ac;
+ struct asr_query *as;
ac = asr_use_resolver(asr);
if ((as = asr_async_new(ac, ASR_GETNETBYADDR)) == NULL)
@@ -104,7 +104,7 @@ getnetbyaddr_async(in_addr_t net, int family, struct asr *asr)
}
static int
-getnetnamadr_async_run(struct async *as, struct async_res *ar)
+getnetnamadr_async_run(struct asr_query *as, struct asr_result *ar)
{
struct netent_ext *n;
int r, type, saved_errno;
@@ -201,7 +201,7 @@ getnetnamadr_async_run(struct async *as, struct async_res *ar)
case ASR_STATE_SUBQUERY:
- if ((r = asr_async_run(as->as.netnamadr.subq, ar)) == ASYNC_COND)
+ if ((r = asr_run(as->as.netnamadr.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
as->as.netnamadr.subq = NULL;
diff --git a/lib/libc/asr/getrrsetbyname.c b/lib/libc/asr/getrrsetbyname.c
index 8736ae06a72..359f1dd416b 100644
--- a/lib/libc/asr/getrrsetbyname.c
+++ b/lib/libc/asr/getrrsetbyname.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: getrrsetbyname.c,v 1.3 2013/07/12 14:36:22 eric Exp $ */
+/* $OpenBSD: getrrsetbyname.c,v 1.4 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -28,9 +28,9 @@ int
getrrsetbyname(const char *name, unsigned int class, unsigned int type,
unsigned int flags, struct rrsetinfo **res)
{
- struct async *as;
- struct async_res ar;
- int r, saved_errno = errno;
+ struct asr_query *as;
+ struct asr_result ar;
+ int r, saved_errno = errno;
res_init();
@@ -41,7 +41,7 @@ getrrsetbyname(const char *name, unsigned int class, unsigned int type,
return (r);
}
- asr_async_run_sync(as, &ar);
+ asr_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 338fc8d563a..3f23d7bf3cd 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.5 2013/07/12 14:36:22 eric Exp $ */
+/* $OpenBSD: getrrsetbyname_async.c,v 1.6 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -31,15 +31,15 @@
#include "asr.h"
#include "asr_private.h"
-static int getrrsetbyname_async_run(struct async *, struct async_res *);
-static void get_response(struct async_res *, const char *, int);
+static int getrrsetbyname_async_run(struct asr_query *, struct asr_result *);
+static void get_response(struct asr_result *, const char *, int);
-struct async *
+struct asr_query *
getrrsetbyname_async(const char *hostname, unsigned int rdclass,
- unsigned int rdtype, unsigned int flags, struct asr *asr)
+ unsigned int rdtype, unsigned int flags, void *asr)
{
- struct asr_ctx *ac;
- struct async *as;
+ struct asr_ctx *ac;
+ struct asr_query *as;
ac = asr_use_resolver(asr);
if ((as = asr_async_new(ac, ASR_GETRRSETBYNAME)) == NULL)
@@ -64,7 +64,7 @@ getrrsetbyname_async(const char *hostname, unsigned int rdclass,
}
static int
-getrrsetbyname_async_run(struct async *as, struct async_res *ar)
+getrrsetbyname_async_run(struct asr_query *as, struct asr_result *ar)
{
next:
switch (as->as_state) {
@@ -109,7 +109,7 @@ getrrsetbyname_async_run(struct async *as, struct async_res *ar)
case ASR_STATE_SUBQUERY:
- if ((asr_async_run(as->as.rrset.subq, ar)) == ASYNC_COND)
+ if ((asr_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.5 2013/07/12 14:36:22 eric Exp $ */
+/* $OpenBSD: getrrsetbyname_async.c,v 1.6 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2001 Jakob Schlyter. All rights reserved.
@@ -254,7 +254,7 @@ static void free_dns_response(struct dns_response *);
static int count_dns_rr(struct dns_rr *, u_int16_t, u_int16_t);
static void
-get_response(struct async_res *ar, const char *pkt, int pktlen)
+get_response(struct asr_result *ar, const char *pkt, int pktlen)
{
struct rrsetinfo *rrset = NULL;
struct dns_response *response = NULL;
diff --git a/lib/libc/asr/res_query.c b/lib/libc/asr/res_query.c
index 72401af31b5..2c6b198e464 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.6 2013/11/12 06:09:50 deraadt Exp $ */
+/* $OpenBSD: res_query.c,v 1.7 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -28,8 +28,8 @@
int
res_query(const char *name, int class, int type, u_char *ans, int anslen)
{
- struct async *as;
- struct async_res ar;
+ struct asr_query *as;
+ struct asr_result ar;
size_t len;
res_init();
@@ -49,7 +49,7 @@ res_query(const char *name, int class, int type, u_char *ans, int anslen)
return (-1); /* errno set */
}
- asr_async_run_sync(as, &ar);
+ asr_run_sync(as, &ar);
if (ar.ar_errno)
errno = ar.ar_errno;
@@ -70,8 +70,8 @@ res_query(const char *name, int class, int type, u_char *ans, int anslen)
int
res_search(const char *name, int class, int type, u_char *ans, int anslen)
{
- struct async *as;
- struct async_res ar;
+ struct asr_query *as;
+ struct asr_result ar;
size_t len;
res_init();
@@ -91,7 +91,7 @@ res_search(const char *name, int class, int type, u_char *ans, int anslen)
return (-1); /* errno set */
}
- asr_async_run_sync(as, &ar);
+ asr_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 c053d0ae9b4..f08557db527 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.11 2014/02/24 20:23:27 eric Exp $ */
+/* $OpenBSD: res_search_async.c,v 1.12 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -28,19 +28,19 @@
#include "asr.h"
#include "asr_private.h"
-static int res_search_async_run(struct async *, struct async_res *);
+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 async *, 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
* h_errno is NETDB_SUCCESS.
*/
-struct async *
-res_search_async(const char *name, int class, int type, struct asr *asr)
+struct asr_query *
+res_search_async(const char *name, int class, int type, void *asr)
{
- struct asr_ctx *ac;
- struct async *as;
+ struct asr_ctx *ac;
+ struct asr_query *as;
DPRINT("asr: res_search_async(\"%s\", %i, %i)\n", name, class, type);
@@ -51,11 +51,11 @@ res_search_async(const char *name, int class, int type, struct asr *asr)
return (as);
}
-struct async *
+struct asr_query *
res_search_async_ctx(const char *name, int class, int type, struct asr_ctx *ac)
{
- struct async *as;
- char alias[MAXDNAME];
+ struct asr_query *as;
+ char alias[MAXDNAME];
DPRINT("asr: res_search_async_ctx(\"%s\", %i, %i)\n", name, class,
type);
@@ -82,7 +82,7 @@ res_search_async_ctx(const char *name, int class, int type, struct asr_ctx *ac)
#define HERRNO_UNSET -2
static int
-res_search_async_run(struct async *as, struct async_res *ar)
+res_search_async_run(struct asr_query *as, struct asr_result *ar)
{
int r;
char fqdn[MAXDNAME];
@@ -134,7 +134,7 @@ res_search_async_run(struct async *as, struct async_res *ar)
case ASR_STATE_SUBQUERY:
- if ((r = asr_async_run(as->as.search.subq, ar)) == ASYNC_COND)
+ if ((r = asr_run(as->as.search.subq, ar)) == ASYNC_COND)
return (ASYNC_COND);
as->as.search.subq = NULL;
@@ -239,7 +239,7 @@ enum {
* error generating the next name, or the resulting name length.
*/
int
-iter_domain(struct async *as, const char *name, char * buf, size_t len)
+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.c b/lib/libc/asr/res_send.c
index 7c6152e258c..b00510c4943 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.6 2013/11/12 06:09:50 deraadt Exp $ */
+/* $OpenBSD: res_send.c,v 1.7 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -28,9 +28,9 @@
int
res_send(const u_char *buf, int buflen, u_char *ans, int anslen)
{
- struct async *as;
- struct async_res ar;
- size_t len;
+ struct asr_query *as;
+ struct asr_result ar;
+ size_t len;
res_init();
@@ -43,7 +43,7 @@ res_send(const u_char *buf, int buflen, u_char *ans, int anslen)
if (as == NULL)
return (-1); /* errno set */
- asr_async_run_sync(as, &ar);
+ asr_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 ddbae94bc03..a9d4f696b11 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.20 2014/03/14 11:07:33 eric Exp $ */
+/* $OpenBSD: res_send_async.c,v 1.21 2014/03/25 19:48:11 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -34,25 +34,25 @@
#define OP_QUERY (0)
-static int res_send_async_run(struct async *, struct async_res *);
+static int res_send_async_run(struct asr_query *, struct asr_result *);
static int sockaddr_connect(const struct sockaddr *, int);
-static int udp_send(struct async *);
-static int udp_recv(struct async *);
-static int tcp_write(struct async *);
-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);
-static int iter_ns(struct async *);
+static int udp_send(struct asr_query *);
+static int udp_recv(struct asr_query *);
+static int tcp_write(struct asr_query *);
+static int tcp_read(struct asr_query *);
+static int validate_packet(struct asr_query *);
+static int setup_query(struct asr_query *, const char *, const char *, int, int);
+static int ensure_ibuf(struct asr_query *, size_t);
+static int iter_ns(struct asr_query *);
#define AS_NS_SA(p) ((p)->as_ctx->ac_ns[(p)->as.dns.nsidx - 1])
-struct async *
-res_send_async(const unsigned char *buf, int buflen, struct asr *asr)
+struct asr_query *
+res_send_async(const unsigned char *buf, int buflen, void *asr)
{
struct asr_ctx *ac;
- struct async *as;
+ struct asr_query *as;
struct asr_unpack p;
struct asr_dns_header h;
struct asr_dns_query q;
@@ -97,14 +97,13 @@ res_send_async(const unsigned char *buf, int buflen, struct asr *asr)
/*
* Unlike res_query(), this version will actually return the packet
* if it has received a valid one (errno == 0) even if h_errno is
- * not NETDB_SUCCESS. So the packet *must* be freed if necessary
- * (ans == NULL).
+ * not NETDB_SUCCESS. So the packet *must* be freed if necessary.
*/
-struct async *
-res_query_async(const char *name, int class, int type, struct asr *asr)
+struct asr_query *
+res_query_async(const char *name, int class, int type, void *asr)
{
- struct asr_ctx *ac;
- struct async *as;
+ struct asr_ctx *ac;
+ struct asr_query *as;
DPRINT("asr: res_query_async(\"%s\", %i, %i)\n", name, class, type);
@@ -115,10 +114,10 @@ res_query_async(const char *name, int class, int type, struct asr *asr)
return (as);
}
-struct async *
+struct asr_query *
res_query_async_ctx(const char *name, int class, int type, struct asr_ctx *a_ctx)
{
- struct async *as;
+ struct asr_query *as;
DPRINT("asr: res_query_async_ctx(\"%s\", %i, %i)\n", name, class, type);
@@ -142,7 +141,7 @@ res_query_async_ctx(const char *name, int class, int type, struct asr_ctx *a_ctx
}
static int
-res_send_async_run(struct async *as, struct async_res *ar)
+res_send_async_run(struct asr_query *as, struct asr_result *ar)
{
next:
switch (as->as_state) {
@@ -180,7 +179,7 @@ res_send_async_run(struct async *as, struct async_res *ar)
break;
}
async_set_state(as, ASR_STATE_UDP_RECV);
- ar->ar_cond = ASYNC_READ;
+ ar->ar_cond = ASR_WANT_READ;
ar->ar_fd = as->as_fd;
ar->ar_timeout = as->as_timeout;
return (ASYNC_COND);
@@ -215,12 +214,12 @@ res_send_async_run(struct async *as, struct async_res *ar)
break;
case 0:
async_set_state(as, ASR_STATE_TCP_READ);
- ar->ar_cond = ASYNC_READ;
+ ar->ar_cond = ASR_WANT_READ;
ar->ar_fd = as->as_fd;
ar->ar_timeout = as->as_timeout;
return (ASYNC_COND);
case 1:
- ar->ar_cond = ASYNC_WRITE;
+ ar->ar_cond = ASR_WANT_WRITE;
ar->ar_fd = as->as_fd;
ar->ar_timeout = as->as_timeout;
return (ASYNC_COND);
@@ -241,7 +240,7 @@ res_send_async_run(struct async *as, struct async_res *ar)
async_set_state(as, ASR_STATE_PACKET);
break;
case 1:
- ar->ar_cond = ASYNC_READ;
+ ar->ar_cond = ASR_WANT_READ;
ar->ar_fd = as->as_fd;
ar->ar_timeout = as->as_timeout;
return (ASYNC_COND);
@@ -250,7 +249,7 @@ res_send_async_run(struct async *as, struct async_res *ar)
case ASR_STATE_PACKET:
- memmove(&ar->ar_sa.sa, AS_NS_SA(as), AS_NS_SA(as)->sa_len);
+ memmove(&ar->ar_ns, AS_NS_SA(as), AS_NS_SA(as)->sa_len);
ar->ar_datalen = as->as.dns.ibuflen;
ar->ar_data = as->as.dns.ibuf;
as->as.dns.ibuf = NULL;
@@ -343,7 +342,7 @@ sockaddr_connect(const struct sockaddr *sa, int socktype)
* Return 0 on success, set errno and return -1 on error.
*/
static int
-setup_query(struct async *as, const char *name, const char *dom,
+setup_query(struct asr_query *as, const char *name, const char *dom,
int class, int type)
{
struct asr_pack p;
@@ -416,7 +415,7 @@ setup_query(struct async *as, const char *name, const char *dom,
* Return 0 on success, or -1 on error (errno set).
*/
static int
-udp_send(struct async *as)
+udp_send(struct asr_query *as)
{
ssize_t n;
int save_errno;
@@ -449,7 +448,7 @@ udp_send(struct async *as)
* Return 0 if a full packet could be read, or -1 on error (errno set).
*/
static int
-udp_recv(struct async *as)
+udp_recv(struct asr_query *as)
{
ssize_t n;
int save_errno;
@@ -487,7 +486,7 @@ udp_recv(struct async *as)
* socket or it is not connected yet, or -1 on error (errno set).
*/
static int
-tcp_write(struct async *as)
+tcp_write(struct asr_query *as)
{
struct msghdr msg;
struct iovec iov[2];
@@ -562,7 +561,7 @@ close:
* socket must be read again, or -1 on error (errno set).
*/
static int
-tcp_read(struct async *as)
+tcp_read(struct asr_query *as)
{
ssize_t n;
size_t offset, len;
@@ -641,7 +640,7 @@ close:
* extend it if necessary. Return 0 on success, or set errno and return -1.
*/
static int
-ensure_ibuf(struct async *as, size_t n)
+ensure_ibuf(struct asr_query *as, size_t n)
{
char *t;
@@ -670,7 +669,7 @@ ensure_ibuf(struct async *as, size_t n)
* Return 0 on success, or set errno and return -1.
*/
static int
-validate_packet(struct async *as)
+validate_packet(struct asr_query *as)
{
struct asr_unpack p;
struct asr_dns_header h;
@@ -741,7 +740,7 @@ validate_packet(struct async *as)
* success, or -1 if all nameservers were used.
*/
static int
-iter_ns(struct async *as)
+iter_ns(struct asr_query *as)
{
for (;;) {
if (as->as.dns.nsloop >= as->as_ctx->ac_nsretries)