if (udpsize > 4096) {
udpsize = 4096;
}
- dns_resolver_setudpsize(view->resolver, (uint16_t)udpsize);
+ dns_view_setudpsize(view, (uint16_t)udpsize);
/*
* Set the maximum UDP response size.
* \li only one of 'name' or 'alt' to be valid.
*/
-void
-dns_resolver_setudpsize(dns_resolver_t *resolver, uint16_t udpsize);
-/*%<
- * Set the EDNS UDP buffer size advertised by the server.
- */
-
-uint16_t
-dns_resolver_getudpsize(dns_resolver_t *resolver);
-/*%<
- * Get the current EDNS UDP buffer size.
- */
-
void
dns_resolver_reset_algorithms(dns_resolver_t *resolver);
/*%<
dns_dlzdblist_t dlz_unsearched;
uint32_t fail_ttl;
dns_badcache_t *failcache;
+ unsigned int udpsize;
/*
* Configurable data for server use only,
isc_result_t
dns_view_getresolver(dns_view_t *view, dns_resolver_t **resolverp);
+/*%<
+ * Return the resolver associated with the view.
+ */
+
+void
+dns_view_setudpsize(dns_view_t *view, uint16_t udpsize);
+/*%<
+ * Set the EDNS UDP buffer size advertised by the server.
+ */
+
+uint16_t
+dns_view_getudpsize(dns_view_t *view);
+/*%<
+ * Get the current EDNS UDP buffer size.
+ */
ISC_LANG_ENDDECLS
*/
#define RECV_BUFFER_SIZE 4096 /* XXXRTH Constant. */
-/*%
- * Default EDNS0 buffer size
- */
-#define DEFAULT_EDNS_BUFSIZE 1232
-
/*%
* This defines the maximum number of timeouts we will permit before we
* disable EDNS0 on the query.
isc_task_t **tasks;
uint32_t lame_ttl;
ISC_LIST(alternate_t) alternates;
- uint16_t udpsize;
dns_rbt_t *algorithms;
dns_rbt_t *digests;
dns_rbt_t *mustbesecure;
* Set the default UDP size to what was
* configured as 'edns-buffer-size'
*/
- udpsize = res->udpsize;
+ udpsize = res->view->udpsize;
/*
* This server timed out for the first time in
.taskmgr = taskmgr,
.dispatchmgr = dispatchmgr,
.options = options,
- .udpsize = DEFAULT_EDNS_BUFSIZE,
.spillatmin = 10,
.spillat = 10,
.spillatmax = 100,
ISC_LIST_APPEND(resolver->alternates, a, link);
}
-void
-dns_resolver_setudpsize(dns_resolver_t *resolver, uint16_t udpsize) {
- REQUIRE(VALID_RESOLVER(resolver));
- resolver->udpsize = udpsize;
-}
-
-uint16_t
-dns_resolver_getudpsize(dns_resolver_t *resolver) {
- REQUIRE(VALID_RESOLVER(resolver));
- return (resolver->udpsize);
-}
-
void
dns_resolver_flushbadcache(dns_resolver_t *resolver, const dns_name_t *name) {
if (name != NULL) {
#define DNS_VIEW_DELONLYHASH 111
#define DNS_VIEW_FAILCACHESIZE 1021
+/*%
+ * Default EDNS0 buffer size
+ */
+#define DEFAULT_EDNS_BUFSIZE 1232
+
isc_result_t
dns_view_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, const char *name,
dns_view_t **viewp) {
.synthfromdnssec = true,
.trust_anchor_telemetry = true,
.root_key_sentinel = true,
+ .udpsize = DEFAULT_EDNS_BUFSIZE,
};
isc_refcount_init(&view->references, 1);
UNLOCK(&view->lock);
return (result);
}
+
+void
+dns_view_setudpsize(dns_view_t *view, uint16_t udpsize) {
+ REQUIRE(DNS_VIEW_VALID(view));
+ view->udpsize = udpsize;
+}
+
+uint16_t
+dns_view_getudpsize(dns_view_t *view) {
+ REQUIRE(DNS_VIEW_VALID(view));
+ return (view->udpsize);
+}
result = dns_peerlist_peerbyaddr(zone->view->peers, &primaryip,
&peer);
if (result == ISC_R_SUCCESS) {
- dns_resolver_t *resolver = NULL;
result = dns_peer_getsupportedns(peer, &edns);
if (result == ISC_R_SUCCESS && !edns) {
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NOEDNS);
if (dscp != -1) {
have_xfrdscp = true;
}
- result = dns_view_getresolver(zone->view, &resolver);
- if (result == ISC_R_SUCCESS) {
- udpsize = dns_resolver_getudpsize(resolver);
- dns_resolver_detach(&resolver);
- }
+ udpsize = dns_view_getudpsize(zone->view);
(void)dns_peer_getudpsize(peer, &udpsize);
(void)dns_peer_getrequestnsid(peer, &reqnsid);
(void)dns_peer_getrequestexpire(peer, &reqexpire);
result = dns_peerlist_peerbyaddr(zone->view->peers, &primaryip,
&peer);
if (result == ISC_R_SUCCESS) {
- dns_resolver_t *resolver;
result = dns_peer_getsupportedns(peer, &edns);
if (result == ISC_R_SUCCESS && !edns) {
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NOEDNS);
if (result == ISC_R_SUCCESS && dscp != -1) {
have_xfrdscp = true;
}
- result = dns_view_getresolver(zone->view, &resolver);
- if (result == ISC_R_SUCCESS) {
- udpsize = dns_resolver_getudpsize(resolver);
- dns_resolver_detach(&resolver);
- }
+ udpsize = dns_view_getudpsize(zone->view);
(void)dns_peer_getudpsize(peer, &udpsize);
(void)dns_peer_getrequestnsid(peer, &reqnsid);
}
unsigned char cookie[COOKIE_SIZE];
isc_result_t result;
dns_view_t *view = NULL;
- dns_resolver_t *resolver = NULL;
uint16_t udpsize;
dns_ednsopt_t ednsopts[DNS_EDNSOPTIONS];
int count = 0;
env = client->manager->aclenv;
view = client->view;
- resolver = (view != NULL) ? view->resolver : NULL;
- if (resolver != NULL) {
- udpsize = dns_resolver_getudpsize(resolver);
+ if (view != NULL) {
+ udpsize = dns_view_getudpsize(view);
} else {
udpsize = client->manager->sctx->udpsize;
}