Skip to content
Snippets Groups Projects
Commit 97f1eb4d authored by Dan Egnor's avatar Dan Egnor
Browse files

Add reverse lookup capability, patch from /ceder

parent 272d7379
No related branches found
No related tags found
No related merge requests found
...@@ -70,13 +70,41 @@ void oop_adns_delete(oop_adapter_adns *a) { ...@@ -70,13 +70,41 @@ void oop_adns_delete(oop_adapter_adns *a) {
} }
oop_adns_query *oop_adns_submit( oop_adns_query *oop_adns_submit(
oop_adapter_adns *a, oop_adapter_adns *a,int *errcode,
const char *owner,adns_rrtype type,adns_queryflags flags, const char *owner,adns_rrtype type,adns_queryflags flags,
oop_adns_call *call,void *data) oop_adns_call *call,void *data)
{ {
oop_adns_query *q = oop_malloc(sizeof(*q)); oop_adns_query *q = oop_malloc(sizeof(*q));
int err;
if (NULL == q) return NULL; if (NULL == q) return NULL;
if (adns_submit(a->state,owner,type,flags,q,&q->query)) {
err = adns_submit(a->state,owner,type,flags,q,&q->query);
if (errcode) *errcode = err;
if (err) {
oop_free(q);
return NULL;
}
q->a = a;
q->call = call;
q->data = data;
++q->a->count;
set_select(a);
return q;
}
oop_adns_query *oop_adns_submit_reverse(
oop_adapter_adns *a,int *errcode,
const struct sockaddr *addr,adns_rrtype type,adns_queryflags flags,
oop_adns_call *call,void *data)
{
oop_adns_query *q = oop_malloc(sizeof(*q));
int err;
if (NULL == q) return NULL;
err = adns_submit_reverse(a->state,addr,type,flags,q,&q->query)));
if (errcode) *errcode = err;
if (err) {
oop_free(q); oop_free(q);
return NULL; return NULL;
} }
......
...@@ -26,10 +26,15 @@ void oop_adns_delete(oop_adapter_adns *); ...@@ -26,10 +26,15 @@ void oop_adns_delete(oop_adapter_adns *);
The returned pointer is valid until the callback occurs or the The returned pointer is valid until the callback occurs or the
query is cancelled (see below). */ query is cancelled (see below). */
oop_adns_query *oop_adns_submit( oop_adns_query *oop_adns_submit(
oop_adapter_adns *, oop_adapter_adns *,int *errcode,
const char *owner,adns_rrtype type,adns_queryflags flags, const char *owner,adns_rrtype type,adns_queryflags flags,
oop_adns_call *,void *); oop_adns_call *,void *);
oop_adns_query *oop_adns_submit_reverse(
oop_adapter_adns *,int *errcode,
const struct sockaddr *addr,adns_rrtype type,adns_queryflags flags,
oop_adns_call *,void *);
/* Cancel a running query. */ /* Cancel a running query. */
void oop_adns_cancel(oop_adns_query *); void oop_adns_cancel(oop_adns_query *);
......
...@@ -251,7 +251,7 @@ static void *on_lookup(oop_adapter_adns *adns,adns_answer *reply,void *data) { ...@@ -251,7 +251,7 @@ static void *on_lookup(oop_adapter_adns *adns,adns_answer *reply,void *data) {
static void get_name(int i,const char *name) { static void get_name(int i,const char *name) {
q[i] = oop_adns_submit( q[i] = oop_adns_submit(
adns,name,adns_r_a,adns_qf_owner, adns,NULL,name,adns_r_a,adns_qf_owner,
on_lookup,&q[i]); on_lookup,&q[i]);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment