const char* primary;
isc_sockaddr_t primary_address;
+ // Source
+ isc_sockaddr_t source_address;
+
// Zones
const char** zones;
unsigned int num_zones;
xfrtype = dns_rdatatype_axfr;
}
- isc_sockaddr_t source;
- struct in_addr any = { .s_addr = INADDR_ANY };
- isc_sockaddr_fromin(&source, &any, 0);
-
// Require at least 10 kBit/s to be transmitted over 5 minutes
dns_zone_setminxfrratein(zone, 10240, 300);
- dns_xfrin_create(zone, xfrtype, &ctx.primary_address, &source, NULL,
+ dns_xfrin_create(zone, xfrtype, &ctx.primary_address, &ctx.source_address, NULL,
DNS_TRANSPORT_NONE, NULL, ctx.tlsctx_cache, ctx.memctx, &xfrin);
// Start the transfer
}
static void run_loop(void* data) {
+ struct in_addr any = {
+ .s_addr = INADDR_ANY,
+ };
int r;
DEBUG("Event loop started\n");
// Create a zone manager
dns_zonemgr_create(ctx.memctx, ctx.netmgr, &ctx.zonemgr);
+ // Create the source address
+ isc_sockaddr_fromin(&ctx.source_address, &any, 0);
+
// Create a view
r = dns_view_create(ctx.memctx, ctx.loopmgr, ctx.dispatchmgr,
dns_rdataclass_in, "default", &ctx.view);