X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/adns/blobdiff_plain/d4e363f4e7ec5ece1d36f04edc974665dd07fb82..3b375d76e45c11a4c7cbcb9fcc3ca76d7e2148a6:/src/internal.h?ds=sidebyside diff --git a/src/internal.h b/src/internal.h index 55fb2ad..eebf2a0 100644 --- a/src/internal.h +++ b/src/internal.h @@ -114,7 +114,7 @@ typedef struct { } parseinfo; typedef struct typeinfo { - adns_rrtype type; + adns_rrtype typekey; const char *rrtname; const char *fmtname; int rrsz; @@ -159,6 +159,12 @@ typedef struct typeinfo { * string. On successful return, label_r[] and *ll_io are filled in * and *p_io points to *pe or just after the label-ending `.'. */ + void (*postsort)(adns_state ads, void *array, int nrrs, + const struct typeinfo *typei); + /* Called immediately after the RRs have been sorted, and may rearrange + * them. (This is really for the benefit of SRV's bizarre weighting + * stuff.) May be 0 to mean nothing needs to be done. + */ } typeinfo; adns_status adns__qdpl_normal(adns_state ads, @@ -331,6 +337,7 @@ struct adns__state { struct in_addr base, mask; } sortlist[MAXSORTLIST]; char **searchlist; + unsigned short rand48xsubi[3]; }; /* From setup.c: */ @@ -397,7 +404,8 @@ void adns__sigpipe_unprotect(adns_state); adns_status adns__mkquery(adns_state ads, vbuf *vb, int *id_r, const char *owner, int ol, - const typeinfo *typei, adns_queryflags flags); + const typeinfo *typei, adns_rrtype type, + adns_queryflags flags); /* Assembles a query packet in vb. A new id is allocated and returned. */