Option to turn off EDNS globally?
Adam Tkac
atkac at redhat.com
Thu Sep 20 08:12:25 UTC 2007
Hi all,
Recently I've got report that syslog is flooded with messages like "Too many timeouts resolving $DOMAIN (in $DOMAIN?): disabling EDNS". Of course those messages will be easily supressed with "edns-disabled" logging option but this not suppress EDNS queries. I've created patch which will completely disable EDNS (patch adds edns option). Would it be possible include it in main source or this is step back?
Adam
-------------- next part --------------
diff -up bind-9.5.0a6/lib/dns/view.c.edns bind-9.5.0a6/lib/dns/view.c
--- bind-9.5.0a6/lib/dns/view.c.edns 2007-06-19 01:47:42.000000000 +0200
+++ bind-9.5.0a6/lib/dns/view.c 2007-09-19 17:46:10.000000000 +0200
@@ -179,6 +179,7 @@ dns_view_create(isc_mem_t *mctx, dns_rda
view->flush = ISC_FALSE;
view->dlv = NULL;
view->maxudp = 0;
+ view->edns = ISC_TRUE;
dns_fixedname_init(&view->dlv_fixed);
result = dns_order_create(view->mctx, &view->order);
diff -up bind-9.5.0a6/lib/dns/resolver.c.edns bind-9.5.0a6/lib/dns/resolver.c
--- bind-9.5.0a6/lib/dns/resolver.c.edns 2007-09-19 17:46:10.000000000 +0200
+++ bind-9.5.0a6/lib/dns/resolver.c 2007-09-19 17:47:19.000000000 +0200
@@ -1484,10 +1484,12 @@ resquery_send(resquery_t *query) {
* The ADB does not know about servers with "edns no". Check this,
* and then inform the ADB for future use.
*/
- if ((query->addrinfo->flags & DNS_FETCHOPT_NOEDNS0) == 0 &&
- peer != NULL &&
- dns_peer_getsupportedns(peer, &useedns) == ISC_R_SUCCESS &&
- !useedns)
+ if (((query->addrinfo->flags & DNS_FETCHOPT_NOEDNS0) == 0 ||
+ (query->options & DNS_FETCHOPT_NOEDNS0) == 0) &&
+ (!(res->view->edns) ||
+ (peer != NULL &&
+ dns_peer_getsupportedns(peer, &useedns) == ISC_R_SUCCESS &&
+ !useedns)))
{
query->options |= DNS_FETCHOPT_NOEDNS0;
dns_adb_changeflags(fctx->adb,
diff -up bind-9.5.0a6/lib/dns/include/dns/view.h.edns bind-9.5.0a6/lib/dns/include/dns/view.h
--- bind-9.5.0a6/lib/dns/include/dns/view.h.edns 2007-06-19 01:47:42.000000000 +0200
+++ bind-9.5.0a6/lib/dns/include/dns/view.h 2007-09-19 17:46:10.000000000 +0200
@@ -137,6 +137,7 @@ struct dns_view {
dns_name_t * dlv;
dns_fixedname_t dlv_fixed;
isc_uint16_t maxudp;
+ isc_boolean_t edns;
/*
* Configurable data for server use only,
diff -up bind-9.5.0a6/lib/isccfg/namedconf.c.edns bind-9.5.0a6/lib/isccfg/namedconf.c
--- bind-9.5.0a6/lib/isccfg/namedconf.c.edns 2007-06-19 01:47:50.000000000 +0200
+++ bind-9.5.0a6/lib/isccfg/namedconf.c 2007-09-19 17:46:10.000000000 +0200
@@ -618,6 +618,7 @@ options_clauses[] = {
{ "deallocate-on-exit", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },
{ "directory", &cfg_type_qstring, CFG_CLAUSEFLAG_CALLBACK },
{ "dump-file", &cfg_type_qstring, 0 },
+ { "edns", &cfg_type_boolean, 0 },
{ "fake-iquery", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },
{ "files", &cfg_type_size, 0 },
{ "has-old-clients", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },
diff -up bind-9.5.0a6/doc/misc/options.edns bind-9.5.0a6/doc/misc/options
--- bind-9.5.0a6/doc/misc/options.edns 2007-03-29 17:19:20.000000000 +0200
+++ bind-9.5.0a6/doc/misc/options 2007-09-19 17:46:10.000000000 +0200
@@ -11,6 +11,7 @@ options {
deallocate-on-exit <boolean>; // obsolete
directory <quoted_string>;
dump-file <quoted_string>;
+ edns <boolean>;
fake-iquery <boolean>; // obsolete
files <size>;
has-old-clients <boolean>; // obsolete
diff -up bind-9.5.0a6/bin/named/config.c.edns bind-9.5.0a6/bin/named/config.c
--- bind-9.5.0a6/bin/named/config.c.edns 2007-06-19 01:47:18.000000000 +0200
+++ bind-9.5.0a6/bin/named/config.c 2007-09-19 17:46:10.000000000 +0200
@@ -137,6 +137,7 @@ options {\n\
acache-enable no;\n\
acache-cleaning-interval 60;\n\
max-acache-size 0;\n\
+ edns yes;\n\
dnssec-enable yes;\n\
dnssec-validation no; /* Make yes for 9.5. */ \n\
dnssec-accept-expired no;\n\
diff -up bind-9.5.0a6/bin/named/server.c.edns bind-9.5.0a6/bin/named/server.c
--- bind-9.5.0a6/bin/named/server.c.edns 2007-09-19 17:46:10.000000000 +0200
+++ bind-9.5.0a6/bin/named/server.c 2007-09-19 17:46:10.000000000 +0200
@@ -1624,7 +1624,12 @@ configure_view(dns_view_t *view, const c
dns_resolver_setclientsperquery(view->resolver,
cfg_obj_asuint32(obj),
max_clients_per_query);
-
+
+ obj = NULL;
+ result = ns_config_get(maps, "edns", &obj);
+ INSIST(result == ISC_R_SUCCESS);
+ view->edns = cfg_obj_asboolean(obj);
+
obj = NULL;
result = ns_config_get(maps, "dnssec-enable", &obj);
INSIST(result == ISC_R_SUCCESS);
diff -up bind-9.5.0a6/bin/named/named.conf.5.edns bind-9.5.0a6/bin/named/named.conf.5
--- bind-9.5.0a6/bin/named/named.conf.5.edns 2007-06-20 04:27:32.000000000 +0200
+++ bind-9.5.0a6/bin/named/named.conf.5 2007-09-19 17:46:10.000000000 +0200
@@ -160,6 +160,7 @@ options {
datasize \fIsize\fR;
directory \fIquoted_string\fR;
dump\-file \fIquoted_string\fR;
+ edns \fIboolean\fR;
files \fIsize\fR;
heartbeat\-interval \fIinteger\fR;
host\-statistics \fIboolean\fR; // not implemented
More information about the bind-workers
mailing list