+void of_ptr(const struct optioninfo *oi, const char *arg, const char *arg2) {
+ struct query_node *qun;
+ int quflags, r;
+ adns_rr_addr a;
+
+ sockaddr_aton(arg,&a);
+ prep_query(&qun,&quflags);
+ qun->owner= xstrsave(arg);
+ r= adns_submit_reverse(ads, &a.addr.sa,
+ ov_type == adns_r_none ? adns_r_ptr : ov_type,
+ quflags,
+ qun,
+ &qun->qu);
+ if (r) sysfail("adns_submit_reverse",r);
+
+ LIST_LINK_TAIL(outstanding,qun);
+}
+
+void of_reverse(const struct optioninfo *oi, const char *arg, const char *arg2) {
+ struct query_node *qun;
+ int quflags, r;
+ adns_rr_addr a;
+
+ sockaddr_aton(arg,&a);
+ prep_query(&qun,&quflags);
+ qun->owner= xmalloc(strlen(arg) + strlen(arg2) + 2);
+ sprintf(qun->owner, "%s %s", arg,arg2);
+ r= adns_submit_reverse_any(ads, &a.addr.sa,arg2,
+ ov_type == adns_r_none ? adns_r_txt : ov_type,
+ quflags,
+ qun,
+ &qun->qu);
+ if (r) sysfail("adns_submit_reverse",r);
+
+ LIST_LINK_TAIL(outstanding,qun);
+}
+
+void query_do(const char *domain) {
+ struct query_node *qun;
+ int quflags, r;
+
+ prep_query(&qun,&quflags);
+ qun->owner= xstrsave(domain);