X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftypes.c;h=966f57015d2416e00ec5d3efacbebf1f3a3332ff;hb=d24e2a7e320670a31d52040213c58e1be337726c;hp=cfe785075ed92b9cf3be56a562808a8ca3873ca6;hpb=a889f4bef2235d4358c39113a745551773f2450b;p=adns.git diff --git a/src/types.c b/src/types.c index cfe7850..966f570 100644 --- a/src/types.c +++ b/src/types.c @@ -63,7 +63,7 @@ * _mailbox (pap +pap_mailbox822) * _rp (pa) * _soa (pa,mf,cs) - * _srv* (qdpl,(pap),pa,mf,di,(csp),cs) + * _srv* (qdpl,(pap),pa,mf,di,(csp),cs,postsort) * _flat (mf) * * within each section: @@ -76,6 +76,7 @@ * mf_* * csp_* * cs_* + * postsort_* */ /* @@ -1003,7 +1004,7 @@ static adns_status cs_soa(vbuf *vb, const void *datap) { } /* - * _srv* (pa*2,di,cs*2,qdpl) + * _srv* (pa*2,di,cs*2,qdpl,postsort) */ static adns_status qdpl_srv(adns_state ads, @@ -1120,6 +1121,16 @@ static adns_status cs_srvha(vbuf *vb, const void *datap) { return csp_hostaddr(vb,&rrp->ha); } +static void postsort_srv(adns_state ads, void *array, int nobjs, + const struct typeinfo *typei) { + fprintf(stderr,"(postsort_srv)\n"); + /* tests: + * dig -t srv _srv._tcp.test.iwj.relativity.greenend.org.uk. + * ./adnshost_s -t srv- _sip._udp.voip.net.cam.ac.uk. + * ./adnshost_s -t srv- _jabber._tcp.jabber.org + */ +} + /* * _flat (mf) */ @@ -1137,13 +1148,13 @@ static void mf_flat(adns_query qu, void *data) { } #define DEEP_TYPE(code,rrt,fmt,memb,parser,comparer,printer) \ { adns_r_##code, rrt,fmt,TYPESZ_M(memb), mf_##memb, \ - printer,parser,comparer, adns__qdpl_normal } + printer,parser,comparer, adns__qdpl_normal,0 } #define FLAT_TYPE(code,rrt,fmt,memb,parser,comparer,printer) \ { adns_r_##code, rrt,fmt,TYPESZ_M(memb), mf_flat, \ - printer,parser,comparer, adns__qdpl_normal } -#define XTRA_TYPE(code,rrt,fmt,memb,parser,comparer,printer,qdpl) \ - { adns_r_##code, rrt,fmt,TYPESZ_M(memb), mf_##memb, \ - printer,parser,comparer,qdpl } + printer,parser,comparer, adns__qdpl_normal,0 } +#define XTRA_TYPE(code,rrt,fmt,memb,parser,comparer,printer,qdpl,postsort) \ + { adns_r_##code, rrt,fmt,TYPESZ_M(memb), mf_##memb, \ + printer,parser,comparer,qdpl,postsort } static const typeinfo typeinfos[] = { /* Must be in ascending order of rrtype ! */ @@ -1158,13 +1169,15 @@ DEEP_TYPE(hinfo, "HINFO", 0, intstrpair,pa_hinfo, 0, cs_hinfo ), DEEP_TYPE(mx_raw, "MX", "raw",intstr, pa_mx_raw, di_mx_raw,cs_inthost ), DEEP_TYPE(txt, "TXT", 0, manyistr,pa_txt, 0, cs_txt ), DEEP_TYPE(rp_raw, "RP", "raw",strpair, pa_rp, 0, cs_rp ), -XTRA_TYPE(srv_raw,"SRV", "raw",srvraw , pa_srvraw, di_srv,cs_srvraw,qdpl_srv), +XTRA_TYPE(srv_raw,"SRV", "raw",srvraw , pa_srvraw, di_srv, cs_srvraw, + qdpl_srv, postsort_srv), FLAT_TYPE(addr, "A", "addr", addr, pa_addr, di_addr, cs_addr ), DEEP_TYPE(ns, "NS", "+addr",hostaddr,pa_hostaddr,di_hostaddr,cs_hostaddr ), DEEP_TYPE(ptr, "PTR","checked",str, pa_ptr, 0, cs_domain ), DEEP_TYPE(mx, "MX", "+addr",inthostaddr,pa_mx, di_mx, cs_inthostaddr), -XTRA_TYPE(srv, "SRV","+addr",srvha, pa_srvha, di_srv,cs_srvha, qdpl_srv), +XTRA_TYPE(srv, "SRV","+addr",srvha, pa_srvha, di_srv, cs_srvha, + qdpl_srv, postsort_srv), DEEP_TYPE(soa, "SOA","822", soa, pa_soa, 0, cs_soa ), DEEP_TYPE(rp, "RP", "822", strpair, pa_rp, 0, cs_rp ),