+ adns__consistency(ads,0,cc_entex);
+ return r;
+}
+
+static const char *default_zone = "<magic>";
+
+int adns_submit_reverse_any(adns_state ads,
+ const struct sockaddr *addr,
+ const char *zone,
+ adns_rrtype type,
+ adns_queryflags flags,
+ void *context,
+ adns_query *query_r) {
+ char *buf, *buf_free, *p;
+ char shortbuf[100];
+ const afinfo *ai;
+ int r, lreq;
+
+ flags &= ~adns_qf_search;
+
+ switch (addr->sa_family) {
+ case AF_INET:
+ ai = &adns__inet_afinfo;
+ if (zone == default_zone) zone = "in-addr.arpa";
+ break;
+ case AF_INET6:
+ ai = &adns__inet6_afinfo;
+ if (zone == default_zone) zone = "ip6.arpa";
+ break;
+ default:
+ return ENOSYS;
+ }
+
+ lreq= strlen(zone) + ai->nrevcomp*(ai->revcompwd + 1) + 1;
+ if (lreq > sizeof(shortbuf)) {
+ buf= malloc(lreq);
+ if (!buf) return errno;
+ buf_free= buf;
+ } else {
+ buf= shortbuf;
+ buf_free= 0;
+ }
+
+ p = ai->rev_mkname(addr, buf);
+ *p++ = '.';
+ strcpy(p, zone);
+
+ r= adns_submit(ads,buf,type,flags,context,query_r);
+ free(buf_free);