diff --git a/bin/tests/rdata_test.c b/bin/tests/rdata_test.c index ba40ed3282..679c4d580c 100644 --- a/bin/tests/rdata_test.c +++ b/bin/tests/rdata_test.c @@ -39,25 +39,32 @@ isc_lex_t *lex; isc_lexspecials_t specials; static void -viastruct(dns_rdata_t *rdata) { +viastruct(dns_rdata_t *rdata, isc_mem_t *mctx, + dns_rdata_t *rdata2, isc_buffer_t *b) +{ isc_result_t result; + void *sp = NULL; + isc_boolean_t need_free = ISC_FALSE; + + UNUSED(rdata2); /* XXXMPA remove when fromstruct is ready. */ + UNUSED(b); switch (rdata->type) { case dns_rdatatype_a6: { dns_rdata_in_a6_t in_a6; - result = dns_rdata_tostruct(rdata, &in_a6, NULL); + result = dns_rdata_tostruct(rdata, sp = &in_a6, NULL); break; } case dns_rdatatype_a: { switch (rdata->rdclass) { case dns_rdataclass_hs: { dns_rdata_hs_a_t hs_a; - result = dns_rdata_tostruct(rdata, &hs_a, NULL); + result = dns_rdata_tostruct(rdata, sp = &hs_a, NULL); break; } case dns_rdataclass_in: { dns_rdata_in_a_t in_a; - result = dns_rdata_tostruct(rdata, &in_a, NULL); + result = dns_rdata_tostruct(rdata, sp = &in_a, NULL); break; } default: @@ -68,12 +75,12 @@ viastruct(dns_rdata_t *rdata) { } case dns_rdatatype_aaaa: { dns_rdata_in_aaaa_t in_aaaa; - result = dns_rdata_tostruct(rdata, &in_aaaa, NULL); + result = dns_rdata_tostruct(rdata, sp = &in_aaaa, NULL); break; } case dns_rdatatype_afsdb: { dns_rdata_afsdb_t afsdb; - result = dns_rdata_tostruct(rdata, &afsdb, NULL); + result = dns_rdata_tostruct(rdata, sp = &afsdb, NULL); break; } case dns_rdatatype_any: { @@ -82,177 +89,182 @@ viastruct(dns_rdata_t *rdata) { } case dns_rdatatype_cert: { dns_rdata_cert_t cert; - result = dns_rdata_tostruct(rdata, &cert, NULL); + result = dns_rdata_tostruct(rdata, sp = &cert, NULL); break; } case dns_rdatatype_cname: { dns_rdata_cname_t cname; - result = dns_rdata_tostruct(rdata, &cname, NULL); + result = dns_rdata_tostruct(rdata, sp = &cname, NULL); break; } case dns_rdatatype_dname: { dns_rdata_dname_t dname; - result = dns_rdata_tostruct(rdata, &dname, NULL); + result = dns_rdata_tostruct(rdata, sp = &dname, NULL); break; } case dns_rdatatype_gpos: { dns_rdata_gpos_t gpos; - result = dns_rdata_tostruct(rdata, &gpos, NULL); + result = dns_rdata_tostruct(rdata, sp = &gpos, NULL); break; } case dns_rdatatype_hinfo: { dns_rdata_hinfo_t hinfo; - result = dns_rdata_tostruct(rdata, &hinfo, NULL); + result = dns_rdata_tostruct(rdata, sp = &hinfo, NULL); break; } case dns_rdatatype_isdn: { dns_rdata_isdn_t isdn; - result = dns_rdata_tostruct(rdata, &isdn, NULL); + result = dns_rdata_tostruct(rdata, sp = &isdn, NULL); break; } case dns_rdatatype_key: { dns_rdata_key_t key; - result = dns_rdata_tostruct(rdata, &key, NULL); + result = dns_rdata_tostruct(rdata, sp = &key, NULL); break; } case dns_rdatatype_kx: { dns_rdata_in_kx_t in_kx; - result = dns_rdata_tostruct(rdata, &in_kx, NULL); + result = dns_rdata_tostruct(rdata, sp = &in_kx, NULL); break; } case dns_rdatatype_loc: { dns_rdata_loc_t loc; - result = dns_rdata_tostruct(rdata, &loc, NULL); + result = dns_rdata_tostruct(rdata, sp = &loc, NULL); break; } case dns_rdatatype_mb: { dns_rdata_mb_t mb; - result = dns_rdata_tostruct(rdata, &mb, NULL); + result = dns_rdata_tostruct(rdata, sp = &mb, NULL); break; } case dns_rdatatype_md: { dns_rdata_md_t md; - result = dns_rdata_tostruct(rdata, &md, NULL); + result = dns_rdata_tostruct(rdata, sp = &md, NULL); break; } case dns_rdatatype_mf: { dns_rdata_mf_t mf; - result = dns_rdata_tostruct(rdata, &mf, NULL); + result = dns_rdata_tostruct(rdata, sp = &mf, NULL); break; } case dns_rdatatype_mg: { dns_rdata_mg_t mg; - result = dns_rdata_tostruct(rdata, &mg, NULL); + result = dns_rdata_tostruct(rdata, sp = &mg, NULL); break; } case dns_rdatatype_minfo: { dns_rdata_minfo_t minfo; - result = dns_rdata_tostruct(rdata, &minfo, NULL); + result = dns_rdata_tostruct(rdata, sp = &minfo, NULL); break; } case dns_rdatatype_mr: { dns_rdata_mr_t mr; - result = dns_rdata_tostruct(rdata, &mr, NULL); + result = dns_rdata_tostruct(rdata, sp = &mr, NULL); break; } case dns_rdatatype_mx: { dns_rdata_mx_t mx; - result = dns_rdata_tostruct(rdata, &mx, NULL); + result = dns_rdata_tostruct(rdata, sp = &mx, NULL); break; } case dns_rdatatype_naptr: { dns_rdata_in_naptr_t in_naptr; - result = dns_rdata_tostruct(rdata, &in_naptr, NULL); + result = dns_rdata_tostruct(rdata, sp = &in_naptr, NULL); break; } case dns_rdatatype_ns: { dns_rdata_ns_t ns; - result = dns_rdata_tostruct(rdata, &ns, NULL); + result = dns_rdata_tostruct(rdata, sp = &ns, NULL); break; } case dns_rdatatype_nsap: { dns_rdata_in_nsap_t in_nsap; - result = dns_rdata_tostruct(rdata, &in_nsap, NULL); + result = dns_rdata_tostruct(rdata, sp = &in_nsap, NULL); break; } case dns_rdatatype_nsap_ptr: { dns_rdata_in_nsap_ptr_t in_nsap_ptr; - result = dns_rdata_tostruct(rdata, &in_nsap_ptr, NULL); + result = dns_rdata_tostruct(rdata, sp = &in_nsap_ptr, NULL); break; } case dns_rdatatype_null: { dns_rdata_null_t null; - result = dns_rdata_tostruct(rdata, &null, NULL); + result = dns_rdata_tostruct(rdata, sp = &null, NULL); break; } case dns_rdatatype_nxt: { dns_rdata_nxt_t nxt; - result = dns_rdata_tostruct(rdata, &nxt, NULL); + result = dns_rdata_tostruct(rdata, sp = &nxt, NULL); break; } case dns_rdatatype_opt: { dns_rdata_opt_t opt; - result = dns_rdata_tostruct(rdata, &opt, NULL); + result = dns_rdata_tostruct(rdata, sp = &opt, NULL); break; } case dns_rdatatype_ptr: { dns_rdata_ptr_t ptr; - result = dns_rdata_tostruct(rdata, &ptr, NULL); + result = dns_rdata_tostruct(rdata, sp = &ptr, NULL); break; } case dns_rdatatype_px: { dns_rdata_in_px_t in_px; - result = dns_rdata_tostruct(rdata, &in_px, NULL); + result = dns_rdata_tostruct(rdata, sp = &in_px, NULL); break; } case dns_rdatatype_rp: { dns_rdata_rp_t rp; - result = dns_rdata_tostruct(rdata, &rp, NULL); + result = dns_rdata_tostruct(rdata, sp = &rp, NULL); break; } case dns_rdatatype_rt: { dns_rdata_rt_t rt; - result = dns_rdata_tostruct(rdata, &rt, NULL); + result = dns_rdata_tostruct(rdata, sp = &rt, NULL); break; } case dns_rdatatype_sig: { dns_rdata_sig_t sig; - result = dns_rdata_tostruct(rdata, &sig, NULL); + result = dns_rdata_tostruct(rdata, sp = &sig, NULL); break; } case dns_rdatatype_soa: { dns_rdata_soa_t soa; - result = dns_rdata_tostruct(rdata, &soa, NULL); + result = dns_rdata_tostruct(rdata, sp = &soa, NULL); break; } case dns_rdatatype_srv: { dns_rdata_in_srv_t in_srv; - result = dns_rdata_tostruct(rdata, &in_srv, NULL); + result = dns_rdata_tostruct(rdata, sp = &in_srv, NULL); break; } case dns_rdatatype_tkey: { dns_rdata_tkey_t tkey; - result = dns_rdata_tostruct(rdata, &tkey, NULL); + result = dns_rdata_tostruct(rdata, sp = &tkey, NULL); + break; + } + case dns_rdatatype_tsig: { + dns_rdata_any_tsig_t tsig; + result = dns_rdata_tostruct(rdata, sp = &tsig, NULL); break; } case dns_rdatatype_txt: { dns_rdata_txt_t txt; - result = dns_rdata_tostruct(rdata, &txt, NULL); + result = dns_rdata_tostruct(rdata, sp = &txt, NULL); break; } case dns_rdatatype_unspec: { dns_rdata_unspec_t unspec; - result = dns_rdata_tostruct(rdata, &unspec, NULL); + result = dns_rdata_tostruct(rdata, sp = &unspec, NULL); break; } case dns_rdatatype_wks: { dns_rdata_in_wks_t in_wks; - result = dns_rdata_tostruct(rdata, &in_wks, NULL); + result = dns_rdata_tostruct(rdata, sp = &in_wks, NULL); break; } case dns_rdatatype_x25: { dns_rdata_x25_t x25; - result = dns_rdata_tostruct(rdata, &x25, NULL); + result = dns_rdata_tostruct(rdata, sp = &x25, NULL); break; } default: @@ -263,6 +275,472 @@ viastruct(dns_rdata_t *rdata) { printf("viastruct: tostuct %d %d return %s\n", rdata->type, rdata->rdclass, dns_result_totext(result)); + else + dns_rdata_freestruct(sp); + + switch (rdata->type) { + case dns_rdatatype_a6: { + dns_rdata_in_a6_t in_a6; + result = dns_rdata_tostruct(rdata, sp = &in_a6, mctx); + break; + } + case dns_rdatatype_a: { + switch (rdata->rdclass) { + case dns_rdataclass_hs: { + dns_rdata_hs_a_t hs_a; + result = dns_rdata_tostruct(rdata, sp = &hs_a, mctx); + break; + } + case dns_rdataclass_in: { + dns_rdata_in_a_t in_a; + result = dns_rdata_tostruct(rdata, sp = &in_a, mctx); + break; + } + default: + result = ISC_R_NOTIMPLEMENTED; + break; + } + break; + } + case dns_rdatatype_aaaa: { + dns_rdata_in_aaaa_t in_aaaa; + result = dns_rdata_tostruct(rdata, sp = &in_aaaa, mctx); + break; + } + case dns_rdatatype_afsdb: { + dns_rdata_afsdb_t afsdb; + result = dns_rdata_tostruct(rdata, sp = &afsdb, mctx); + break; + } + case dns_rdatatype_any: { + result = ISC_R_NOTIMPLEMENTED; + break; + } + case dns_rdatatype_cert: { + dns_rdata_cert_t cert; + result = dns_rdata_tostruct(rdata, sp = &cert, mctx); + break; + } + case dns_rdatatype_cname: { + dns_rdata_cname_t cname; + result = dns_rdata_tostruct(rdata, sp = &cname, mctx); + break; + } + case dns_rdatatype_dname: { + dns_rdata_dname_t dname; + result = dns_rdata_tostruct(rdata, sp = &dname, mctx); + break; + } + case dns_rdatatype_gpos: { + dns_rdata_gpos_t gpos; + result = dns_rdata_tostruct(rdata, sp = &gpos, mctx); + break; + } + case dns_rdatatype_hinfo: { + dns_rdata_hinfo_t hinfo; + result = dns_rdata_tostruct(rdata, sp = &hinfo, mctx); + break; + } + case dns_rdatatype_isdn: { + dns_rdata_isdn_t isdn; + result = dns_rdata_tostruct(rdata, sp = &isdn, mctx); + break; + } + case dns_rdatatype_key: { + dns_rdata_key_t key; + result = dns_rdata_tostruct(rdata, sp = &key, mctx); + break; + } + case dns_rdatatype_kx: { + dns_rdata_in_kx_t in_kx; + result = dns_rdata_tostruct(rdata, sp = &in_kx, mctx); + break; + } + case dns_rdatatype_loc: { + dns_rdata_loc_t loc; + result = dns_rdata_tostruct(rdata, sp = &loc, mctx); + break; + } + case dns_rdatatype_mb: { + dns_rdata_mb_t mb; + result = dns_rdata_tostruct(rdata, sp = &mb, mctx); + break; + } + case dns_rdatatype_md: { + dns_rdata_md_t md; + result = dns_rdata_tostruct(rdata, sp = &md, mctx); + break; + } + case dns_rdatatype_mf: { + dns_rdata_mf_t mf; + result = dns_rdata_tostruct(rdata, sp = &mf, mctx); + break; + } + case dns_rdatatype_mg: { + dns_rdata_mg_t mg; + result = dns_rdata_tostruct(rdata, sp = &mg, mctx); + break; + } + case dns_rdatatype_minfo: { + dns_rdata_minfo_t minfo; + result = dns_rdata_tostruct(rdata, sp = &minfo, mctx); + break; + } + case dns_rdatatype_mr: { + dns_rdata_mr_t mr; + result = dns_rdata_tostruct(rdata, sp = &mr, mctx); + break; + } + case dns_rdatatype_mx: { + dns_rdata_mx_t mx; + result = dns_rdata_tostruct(rdata, sp = &mx, mctx); + break; + } + case dns_rdatatype_naptr: { + dns_rdata_in_naptr_t in_naptr; + result = dns_rdata_tostruct(rdata, sp = &in_naptr, mctx); + break; + } + case dns_rdatatype_ns: { + dns_rdata_ns_t ns; + result = dns_rdata_tostruct(rdata, sp = &ns, mctx); + break; + } + case dns_rdatatype_nsap: { + dns_rdata_in_nsap_t in_nsap; + result = dns_rdata_tostruct(rdata, sp = &in_nsap, mctx); + break; + } + case dns_rdatatype_nsap_ptr: { + dns_rdata_in_nsap_ptr_t in_nsap_ptr; + result = dns_rdata_tostruct(rdata, sp = &in_nsap_ptr, mctx); + break; + } + case dns_rdatatype_null: { + dns_rdata_null_t null; + result = dns_rdata_tostruct(rdata, sp = &null, mctx); + break; + } + case dns_rdatatype_nxt: { + dns_rdata_nxt_t nxt; + result = dns_rdata_tostruct(rdata, sp = &nxt, mctx); + break; + } + case dns_rdatatype_opt: { + dns_rdata_opt_t opt; + result = dns_rdata_tostruct(rdata, sp = &opt, mctx); + break; + } + case dns_rdatatype_ptr: { + dns_rdata_ptr_t ptr; + result = dns_rdata_tostruct(rdata, sp = &ptr, mctx); + break; + } + case dns_rdatatype_px: { + dns_rdata_in_px_t in_px; + result = dns_rdata_tostruct(rdata, sp = &in_px, mctx); + break; + } + case dns_rdatatype_rp: { + dns_rdata_rp_t rp; + result = dns_rdata_tostruct(rdata, sp = &rp, mctx); + break; + } + case dns_rdatatype_rt: { + dns_rdata_rt_t rt; + result = dns_rdata_tostruct(rdata, sp = &rt, mctx); + break; + } + case dns_rdatatype_sig: { + dns_rdata_sig_t sig; + result = dns_rdata_tostruct(rdata, sp = &sig, mctx); + break; + } + case dns_rdatatype_soa: { + dns_rdata_soa_t soa; + result = dns_rdata_tostruct(rdata, sp = &soa, mctx); + break; + } + case dns_rdatatype_srv: { + dns_rdata_in_srv_t in_srv; + result = dns_rdata_tostruct(rdata, sp = &in_srv, mctx); + break; + } + case dns_rdatatype_tkey: { + dns_rdata_tkey_t tkey; + result = dns_rdata_tostruct(rdata, sp = &tkey, mctx); + break; + } + case dns_rdatatype_tsig: { + dns_rdata_any_tsig_t tsig; + result = dns_rdata_tostruct(rdata, sp = &tsig, mctx); + break; + } + case dns_rdatatype_txt: { + dns_rdata_txt_t txt; + result = dns_rdata_tostruct(rdata, sp = &txt, mctx); + break; + } + case dns_rdatatype_unspec: { + dns_rdata_unspec_t unspec; + result = dns_rdata_tostruct(rdata, sp = &unspec, mctx); + break; + } + case dns_rdatatype_wks: { + dns_rdata_in_wks_t in_wks; + result = dns_rdata_tostruct(rdata, sp = &in_wks, mctx); + break; + } + case dns_rdatatype_x25: { + dns_rdata_x25_t x25; + result = dns_rdata_tostruct(rdata, sp = &x25, mctx); + break; + } + default: + result = ISC_R_NOTIMPLEMENTED; + break; + } + if (result != ISC_R_SUCCESS) + printf("viastruct: tostuct %d %d return %s\n", + rdata->type, rdata->rdclass, + dns_result_totext(result)); + else + need_free = ISC_TRUE; + +#if 0 +/* +dns_rdata_fromstruct(dns_rdata_t *rdata, dns_rdataclass_t rdclass, + dns_rdatatype_t type, void *source, + isc_buffer_t *target) +*/ + + switch (rdata->type) { + case dns_rdatatype_a6: { + dns_rdata_in_a6_t in_a6; + result = dns_rdata_fromstruct(rdata2, rdc, type, &in_a6, b); + break; + } + case dns_rdatatype_a: { + switch (rdata->rdclass) { + case dns_rdataclass_hs: { + dns_rdata_hs_a_t hs_a; + result = dns_rdata_fromstruct(rdata2, rdc, type, + &hs_a, b); + break; + } + case dns_rdataclass_in: { + dns_rdata_in_a_t in_a; + result = dns_rdata_fromstruct(rdata2, rdc, type, + &in_a, b); + break; + } + default: + result = ISC_R_NOTIMPLEMENTED; + break; + } + break; + } + case dns_rdatatype_aaaa: { + dns_rdata_in_aaaa_t in_aaaa; + result = dns_rdata_fromstruct(rdata2, rdc, type, &in_aaaa, b); + break; + } + case dns_rdatatype_afsdb: { + dns_rdata_afsdb_t afsdb; + result = dns_rdata_fromstruct(rdata2, rdc, type, &afsdb, b); + break; + } + case dns_rdatatype_any: { + result = ISC_R_NOTIMPLEMENTED; + break; + } + case dns_rdatatype_cert: { + dns_rdata_cert_t cert; + result = dns_rdata_fromstruct(rdata2, rdc, type, &cert, b); + break; + } + case dns_rdatatype_cname: { + dns_rdata_cname_t cname; + result = dns_rdata_fromstruct(rdata2, rdc, type, &cname, b); + break; + } + case dns_rdatatype_dname: { + dns_rdata_dname_t dname; + result = dns_rdata_fromstruct(rdata2, rdc, type, &dname, b); + break; + } + case dns_rdatatype_gpos: { + dns_rdata_gpos_t gpos; + result = dns_rdata_fromstruct(rdata2, rdc, type, &gpos, b); + break; + } + case dns_rdatatype_hinfo: { + dns_rdata_hinfo_t hinfo; + result = dns_rdata_fromstruct(rdata2, rdc, type, &hinfo, b); + break; + } + case dns_rdatatype_isdn: { + dns_rdata_isdn_t isdn; + result = dns_rdata_fromstruct(rdata2, rdc, type, &isdn, b); + break; + } + case dns_rdatatype_key: { + dns_rdata_key_t key; + result = dns_rdata_fromstruct(rdata2, rdc, type, &key, b); + break; + } + case dns_rdatatype_kx: { + dns_rdata_in_kx_t in_kx; + result = dns_rdata_fromstruct(rdata2, rdc, type, &in_kx, b); + break; + } + case dns_rdatatype_loc: { + dns_rdata_loc_t loc; + result = dns_rdata_fromstruct(rdata2, rdc, type, &loc, b); + break; + } + case dns_rdatatype_mb: { + dns_rdata_mb_t mb; + result = dns_rdata_fromstruct(rdata2, rdc, type, &mb, b); + break; + } + case dns_rdatatype_md: { + dns_rdata_md_t md; + result = dns_rdata_fromstruct(rdata2, rdc, type, &md, b); + break; + } + case dns_rdatatype_mf: { + dns_rdata_mf_t mf; + result = dns_rdata_fromstruct(rdata2, rdc, type, &mf, b); + break; + } + case dns_rdatatype_mg: { + dns_rdata_mg_t mg; + result = dns_rdata_fromstruct(rdata2, rdc, type, &mg, b); + break; + } + case dns_rdatatype_minfo: { + dns_rdata_minfo_t minfo; + result = dns_rdata_fromstruct(rdata2, rdc, type, &minfo, b); + break; + } + case dns_rdatatype_mr: { + dns_rdata_mr_t mr; + result = dns_rdata_fromstruct(rdata2, rdc, type, &mr, b); + break; + } + case dns_rdatatype_mx: { + dns_rdata_mx_t mx; + result = dns_rdata_fromstruct(rdata2, rdc, type, &mx, b); + break; + } + case dns_rdatatype_naptr: { + dns_rdata_in_naptr_t in_naptr; + result = dns_rdata_fromstruct(rdata2, rdc, type, &in_naptr, b); + break; + } + case dns_rdatatype_ns: { + dns_rdata_ns_t ns; + result = dns_rdata_fromstruct(rdata2, rdc, type, &ns, b); + break; + } + case dns_rdatatype_nsap: { + dns_rdata_in_nsap_t in_nsap; + result = dns_rdata_fromstruct(rdata2, rdc, type, &in_nsap, b); + break; + } + case dns_rdatatype_nsap_ptr: { + dns_rdata_in_nsap_ptr_t in_nsap_ptr; + result = dns_rdata_fromstruct(rdata2, rdc, type, &in_nsap_ptr, b); + break; + } + case dns_rdatatype_null: { + dns_rdata_null_t null; + result = dns_rdata_fromstruct(rdata2, rdc, type, &null, b); + break; + } + case dns_rdatatype_nxt: { + dns_rdata_nxt_t nxt; + result = dns_rdata_fromstruct(rdata2, rdc, type, &nxt, b); + break; + } + case dns_rdatatype_opt: { + dns_rdata_opt_t opt; + result = dns_rdata_fromstruct(rdata2, rdc, type, &opt, b); + break; + } + case dns_rdatatype_ptr: { + dns_rdata_ptr_t ptr; + result = dns_rdata_fromstruct(rdata2, rdc, type, &ptr, b); + break; + } + case dns_rdatatype_px: { + dns_rdata_in_px_t in_px; + result = dns_rdata_fromstruct(rdata2, rdc, type, &in_px, b); + break; + } + case dns_rdatatype_rp: { + dns_rdata_rp_t rp; + result = dns_rdata_fromstruct(rdata2, rdc, type, &rp, b); + break; + } + case dns_rdatatype_rt: { + dns_rdata_rt_t rt; + result = dns_rdata_fromstruct(rdata2, rdc, type, &rt, b); + break; + } + case dns_rdatatype_sig: { + dns_rdata_sig_t sig; + result = dns_rdata_fromstruct(rdata2, rdc, type, &sig, b); + break; + } + case dns_rdatatype_soa: { + dns_rdata_soa_t soa; + result = dns_rdata_fromstruct(rdata2, rdc, type, &soa, b); + break; + } + case dns_rdatatype_srv: { + dns_rdata_in_srv_t in_srv; + result = dns_rdata_fromstruct(rdata2, rdc, type, &in_srv, b); + break; + } + case dns_rdatatype_tkey: { + dns_rdata_tkey_t tkey; + result = dns_rdata_fromstruct(rdata2, rdc, type, &tkey, b); + break; + } + case dns_rdatatype_tsig: { + dns_rdata_any_tsig_t tsig; + result = dns_rdata_fromstruct(rdata2, rdclass, type, &tsig, b); + break; + } + case dns_rdatatype_txt: { + dns_rdata_txt_t txt; + result = dns_rdata_fromstruct(rdata2, rdc, type, &txt, b); + break; + } + case dns_rdatatype_unspec: { + dns_rdata_unspec_t unspec; + result = dns_rdata_fromstruct(rdata2, rdc, type, &unspec, b); + break; + } + case dns_rdatatype_wks: { + dns_rdata_in_wks_t in_wks; + result = dns_rdata_fromstruct(rdata2, rdc, type, &in_wks, b); + break; + } + case dns_rdatatype_x25: { + dns_rdata_x25_t x25; + result = dns_rdata_fromstruct(rdata2, rdc, type, &x25, b); + break; + } + default: + result = ISC_R_NOTIMPLEMENTED; + break; + } +#endif + if (need_free) + dns_rdata_freestruct(sp); } int @@ -513,8 +991,15 @@ main(int argc, char *argv[]) { fputs(" ", stdout); } } - if (tostruct) - viastruct(&rdata); + if (tostruct) { + isc_mem_t *mctx2 = NULL; + RUNTIME_CHECK(isc_mem_create(0, 0, &mctx2) + == ISC_R_SUCCESS); + viastruct(&rdata, mctx2, NULL, NULL); + if (!quiet && stats) + isc_mem_stats(mctx2, stdout); + isc_mem_destroy(&mctx2); + } isc_buffer_init(&tbuf, outbuf, sizeof(outbuf)); result = dns_rdata_totext(&rdata, NULL, &tbuf);