asr
struct asr *asr;
struct asr **priv;
asr = *priv;
_asr_ctx_unref(asr->a_ctx);
free(asr);
struct asr **priv = arg;
struct asr *asr;
asr = *priv;
_asr_ctx_unref(asr->a_ctx);
free(asr);
struct asr *asr;
struct asr **priv;
asr = *priv;
if (asr != NULL) {
asr_check_reload(asr);
asr_ctx_ref(asr->a_ctx);
return (asr->a_ctx);
asr_check_reload(struct asr *asr)
if (pid != asr->a_pid) {
asr->a_pid = pid;
asr->a_rtime = 0;
if ((ts.tv_sec - asr->a_rtime) < RELOAD_DELAY && asr->a_rtime != 0)
asr->a_rtime = ts.tv_sec;
asr->a_mtime == st.st_mtime ||
asr->a_mtime = st.st_mtime;
static void asr_check_reload(struct asr *);
if (asr->a_ctx)
_asr_ctx_unref(asr->a_ctx);
asr->a_ctx = ac;
static struct asr *_asr = NULL;
struct asr *asr;
if ((asr = calloc(1, sizeof(*asr))) == NULL)
asr_check_reload(asr);
if (asr->a_ctx == NULL) {
if ((asr->a_ctx = asr_ctx_create()) == NULL)
if (asr_ctx_from_string(asr->a_ctx, DEFAULT_CONF) == -1)
asr_ctx_envopts(asr->a_ctx);
_asr_dump_config(_asr_debug, asr);
return (asr);
if (asr) {
if (asr->a_ctx)
asr_ctx_free(asr->a_ctx);
free(asr);
_asr_dump_config(FILE *f, struct asr *a)
void _asr_dump_config(FILE *, struct asr *);
const struct addrinfo *hints, void *asr)
ac = _asr_use_resolver(asr);
gethostbyaddr_async(const void *addr, socklen_t len, int af, void *asr)
ac = _asr_use_resolver(asr);
gethostbyname_async(const char *name, void *asr)
return gethostbyname2_async(name, AF_INET, asr);
gethostbyname2_async(const char *name, int af, void *asr)
ac = _asr_use_resolver(asr);
size_t hostlen, char *serv, size_t servlen, int flags, void *asr)
ac = _asr_use_resolver(asr);
getnetbyname_async(const char *name, void *asr)
if ((as = gethostbyname_async(name, asr)) != NULL)
getnetbyaddr_async(in_addr_t net, int family, void *asr)
as = gethostbyaddr_async(&in, sizeof(in), family, asr);
unsigned int rdtype, unsigned int flags, void *asr)
ac = _asr_use_resolver(asr);
res_search_async(const char *name, int class, int type, void *asr)
ac = _asr_use_resolver(asr);
res_query_async(const char *name, int class, int type, void *asr)
ac = _asr_use_resolver(asr);
res_send_async(const unsigned char *buf, int buflen, void *asr)
ac = _asr_use_resolver(asr);
ASRange *asr = NULL;
if ((asr = ASRange_new()) == NULL)
ASN1_INTEGER_free(asr->min);
asr->min = min;
ASN1_INTEGER_free(asr->max);
asr->max = max;
aor->u.range = asr;
asr = NULL;
ASRange_free(asr);
FUNC_SPR(280, asr)