*/
/*
* This file is part of adns, which is
- * Copyright (C) 1997-2000,2003,2006,2014-2016 Ian Jackson
+ * Copyright (C) 1997-2000,2003,2006,2014-2016,2020 Ian Jackson
* Copyright (C) 2014 Mark Wooding
* Copyright (C) 1999-2000,2003,2006 Tony Finch
* Copyright (C) 1991 Massachusetts Institute of Technology
return adns_s_ok;
}
-static adns_status cs_txt(vbuf *vb, const void *datap) {
+static adns_status cs_txt(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_intstr *const *rrp= datap;
const adns_rr_intstr *current;
adns_status st;
* _hinfo (cs)
*/
-static adns_status cs_hinfo(vbuf *vb, const void *datap) {
+static adns_status cs_hinfo(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_intstrpair *rrp= datap;
adns_status st;
return adns_s_ok;
}
-static adns_status cs_inaddr(vbuf *vb, const void *datap) {
+static adns_status cs_inaddr(vbuf *vb, adns_rrtype rrt, const void *datap) {
return csp_genaddr(vb, AF_INET,datap);
}
return dip_genaddr(ads,AF_INET6,datap_a,datap_b);
}
-static adns_status cs_in6addr(vbuf *vb, const void *datap) {
+static adns_status cs_in6addr(vbuf *vb, adns_rrtype rrt, const void *datap) {
return csp_genaddr(vb,AF_INET6,datap);
}
return adns_s_ok;
}
-static adns_status cs_addr(vbuf *vb, const void *datap) {
+static adns_status cs_addr(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_addr *rrp= datap;
return csp_addr(vb,rrp);
return adns_s_ok;
}
-static adns_status cs_domain(vbuf *vb, const void *datap) {
+static adns_status cs_domain(vbuf *vb, adns_rrtype rrt, const void *datap) {
const char *const *domainp= datap;
return csp_domain(vb,*domainp);
}
mfp_hostaddr(qu,rrp);
}
-static adns_status csp_hostaddr(vbuf *vb, const adns_rr_hostaddr *rrp) {
+static adns_status csp_hostaddr(vbuf *vb, adns_rrtype rrt,
+ const adns_rr_hostaddr *rrp) {
const char *errstr;
adns_status st;
char buf[20];
int i;
+ size_t addrsz= gsz_addr(0, rrt);
st= csp_domain(vb,rrp->host); if (st) return st;
CSP_ADDSTR(" (");
for (i=0; i<rrp->naddrs; i++) {
CSP_ADDSTR(" ");
- st= csp_addr(vb,&rrp->addrs[i]);
+ st= csp_addr(vb, (const void*)((const char*)rrp->addrs + addrsz*i));
}
CSP_ADDSTR(" )");
} else {
return adns_s_ok;
}
-static adns_status cs_hostaddr(vbuf *vb, const void *datap) {
+static adns_status cs_hostaddr(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_hostaddr *rrp= datap;
- return csp_hostaddr(vb,rrp);
+ return csp_hostaddr(vb,rrt,rrp);
}
/*
return adns_s_ok;
}
-static adns_status cs_inthostaddr(vbuf *vb, const void *datap) {
+static adns_status cs_inthostaddr(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_inthostaddr *rrp= datap;
adns_status st;
st = csp_intofinthost(vb,rrp->i); if (st) return st;
- return csp_hostaddr(vb,&rrp->ha);
+ return csp_hostaddr(vb,rrt,&rrp->ha);
}
/*
* _inthost (cs)
*/
-static adns_status cs_inthost(vbuf *vb, const void *datap) {
+static adns_status cs_inthost(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_intstr *rrp= datap;
adns_status st;
return adns_s_ok;
}
-static adns_status cs_rp(vbuf *vb, const void *datap) {
+static adns_status cs_rp(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_strpair *rrp= datap;
adns_status st;
adns__makefinal_str(qu,&rrp->rname);
}
-static adns_status cs_soa(vbuf *vb, const void *datap) {
+static adns_status cs_soa(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_soa *rrp= datap;
char buf[20];
int i;
return adns_s_ok;
}
-static adns_status cs_srvraw(vbuf *vb, const void *datap) {
+static adns_status cs_srvraw(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_srvraw *rrp= datap;
adns_status st;
return csp_domain(vb,rrp->host);
}
-static adns_status cs_srvha(vbuf *vb, const void *datap) {
+static adns_status cs_srvha(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_srvha *rrp= datap;
adns_status st;
st= csp_srv_begin(vb,(const void*)datap); if (st) return st;
- return csp_hostaddr(vb,&rrp->ha);
+ return csp_hostaddr(vb,rrt,&rrp->ha);
}
static void postsort_srv(adns_state ads, void *array, int nrrs,int rrsz,
return adns_s_ok;
}
-static adns_status cs_opaque(vbuf *vb, const void *datap) {
+static adns_status cs_opaque(vbuf *vb, adns_rrtype rrt, const void *datap) {
const adns_rr_byteblock *rrp= datap;
char buf[10];
int l;