X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/adns/blobdiff_plain/70ad7a2a18f5371981c377d0c1938e7b0a970655..e4b834c406f2aa95f7417fbd7ade69e7690e6ab1:/src/query.c diff --git a/src/query.c b/src/query.c index b9e6d4d..7eb322d 100644 --- a/src/query.c +++ b/src/query.c @@ -195,7 +195,7 @@ static int save_owner(adns_query qu, const char *owner, int ol) { int adns_submit(adns_state ads, const char *owner, adns_rrtype type, - adns_queryflags flags, + int flags, void *context, adns_query *query_r) { int r, ol, ndots; @@ -225,6 +225,7 @@ int adns_submit(adns_state ads, if (ol>=1 && owner[ol-1]=='.' && (ol<2 || owner[ol-2]!='\\')) { flags &= ~adns_qf_search; + qu->flags= flags; ol--; } @@ -258,10 +259,31 @@ int adns_submit(adns_state ads, return r; } +int adns_submit_reverse(adns_state ads, + const struct sockaddr *addr, + adns_rrtype type, + int flags, + void *context, + adns_query *query_r) { + const unsigned char *iaddr; + char buf[30]; + + if (type != adns_r_ptr && type != adns_r_ptr_raw) return EINVAL; + flags &= ~adns_qf_search; + + if (addr->sa_family != AF_INET) return ENOSYS; + iaddr= (const unsigned char*) &(((const struct sockaddr_in*)addr) -> sin_addr); + + sprintf(buf, "%d.%d.%d.%d.in-addr.arpa", + iaddr[3], iaddr[2], iaddr[1], iaddr[0]); + + return adns_submit(ads,buf,type,flags,context,query_r); +} + int adns_synchronous(adns_state ads, const char *owner, adns_rrtype type, - adns_queryflags flags, + int flags, adns_answer **answer_r) { adns_query qu; int r;