mc->doneyet= 0;
mc->fdom= fdomlist[qi];
- fprintf(stdout,"%s flags %d type %d",domain,qflags,types[ti]);
+ fprintf(stdout,"%s flags %d type %d",
+ domain,qflags,types[ti]&adns_rrt_reprmask);
r= adns_submit(ads,domain,types[ti],qflags,mc,&mc->qu);
if (r == ENOSYS) {
fprintf(stdout," not implemented\n");
typedef enum {
adns_rrt_typemask= 0x0ffff,
+ adns_rrt_reprmask= 0xffffff,
adns__qtf_deref= 0x10000,/* dereference domains; perhaps get extra data */
adns__qtf_mail822= 0x20000,/* return mailboxes in RFC822 rcpt field fmt */
adns_queryflags flags,
void *context,
adns_query *query_r) {
- if (type != adns_r_ptr && type != adns_r_ptr_raw) return EINVAL;
+ if (((type^adns_r_ptr) & adns_rrt_reprmask) &&
+ ((type^adns_r_ptr_raw) & adns_rrt_reprmask))
+ return EINVAL;
return adns_submit_reverse_any(ads,addr,"in-addr.arpa",
type,flags,context,query_r);
}
#define TYPESZ_M(member) (sizeof(*((adns_answer*)0)->rrs.member))
#define DEEP_TYPE(code,rrt,fmt,memb,parser,comparer,/*printer*/...) \
- { adns_r_##code, rrt,fmt,TYPESZ_M(memb), mf_##memb, \
+ { adns_r_##code&adns_rrt_reprmask, rrt,fmt,TYPESZ_M(memb), mf_##memb, \
GLUE(cs_, CAR(__VA_ARGS__)),pa_##parser,di_##comparer, \
adns__ckl_hostname, CDR(__VA_ARGS__) }
#define FLAT_TYPE(code,rrt,fmt,memb,parser,comparer,/*printer*/...) \
- { adns_r_##code, rrt,fmt,TYPESZ_M(memb), mf_flat, \
+ { adns_r_##code&adns_rrt_reprmask, rrt,fmt,TYPESZ_M(memb), mf_flat, \
GLUE(cs_, CAR(__VA_ARGS__)),pa_##parser,di_##comparer, \
adns__ckl_hostname, CDR(__VA_ARGS__) }
const typeinfo *begin, *end, *mid;
if (type & adns_r_unknown) return &typeinfo_unknown;
+ type &= adns_rrt_reprmask;
begin= typeinfos; end= typeinfos+(sizeof(typeinfos)/sizeof(typeinfo));