mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
- Expose 'statistics-inhibit-zero' as a configuration option; the
default value retains Unbound's behavior.
This commit is contained in:
parent
6b8642b662
commit
859d0f2dfe
12 changed files with 3500 additions and 3441 deletions
|
|
@ -105,8 +105,6 @@
|
||||||
|
|
||||||
/** what to put on statistics lines between var and value, ": " or "=" */
|
/** what to put on statistics lines between var and value, ": " or "=" */
|
||||||
#define SQ "="
|
#define SQ "="
|
||||||
/** if true, inhibits a lot of =0 lines from the stats output */
|
|
||||||
static const int inhibit_zero = 1;
|
|
||||||
|
|
||||||
/** subtract timers and the values do not overflow or become negative */
|
/** subtract timers and the values do not overflow or become negative */
|
||||||
static void
|
static void
|
||||||
|
|
@ -920,7 +918,7 @@ print_hist(RES* ssl, struct ub_stats_info* s)
|
||||||
|
|
||||||
/** print extended stats */
|
/** print extended stats */
|
||||||
static int
|
static int
|
||||||
print_ext(RES* ssl, struct ub_stats_info* s)
|
print_ext(RES* ssl, struct ub_stats_info* s, int inhibit_zero)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char nm[32];
|
char nm[32];
|
||||||
|
|
@ -1129,7 +1127,7 @@ do_stats(RES* ssl, struct worker* worker, int reset)
|
||||||
return;
|
return;
|
||||||
if(!print_hist(ssl, &total))
|
if(!print_hist(ssl, &total))
|
||||||
return;
|
return;
|
||||||
if(!print_ext(ssl, &total))
|
if(!print_ext(ssl, &total, daemon->cfg->stat_inhibit_zero))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
13 December 2022: George
|
||||||
|
- Expose 'statistics-inhibit-zero' as a configuration option; the
|
||||||
|
default value retains Unbound's behavior.
|
||||||
|
|
||||||
1 December 2022: Wouter
|
1 December 2022: Wouter
|
||||||
- Fix #773: When used with systemd-networkd, unbound does not start
|
- Fix #773: When used with systemd-networkd, unbound does not start
|
||||||
until systemd-networkd-wait-online.service times out.
|
until systemd-networkd-wait-online.service times out.
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,14 @@ server:
|
||||||
# statistics-cumulative: no
|
# statistics-cumulative: no
|
||||||
|
|
||||||
# enable extended statistics (query types, answer codes, status)
|
# enable extended statistics (query types, answer codes, status)
|
||||||
# printed from unbound-control. default off, because of speed.
|
# printed from unbound-control. Default off, because of speed.
|
||||||
# extended-statistics: no
|
# extended-statistics: no
|
||||||
|
|
||||||
|
# Inhibits selected extended statistics (qtype, qclass, qopcode, rcode,
|
||||||
|
# rpz-actions) from printing if their value is 0.
|
||||||
|
# Default on.
|
||||||
|
# statistics-inhibit-zero: yes
|
||||||
|
|
||||||
# number of threads to create. 1 disables threading.
|
# number of threads to create. 1 disables threading.
|
||||||
# num-threads: 1
|
# num-threads: 1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,14 @@ If enabled, extended statistics are printed from \fIunbound\-control\fR(8).
|
||||||
Default is off, because keeping track of more statistics takes time. The
|
Default is off, because keeping track of more statistics takes time. The
|
||||||
counters are listed in \fIunbound\-control\fR(8).
|
counters are listed in \fIunbound\-control\fR(8).
|
||||||
.TP
|
.TP
|
||||||
|
.B statistics\-inhibit\-zero: \fI<yes or no>
|
||||||
|
If enabled, selected extended statistics with a value of 0 are inhibited from
|
||||||
|
printing with \fIunbound\-control\fR(8).
|
||||||
|
These are query types, query classes, query opcodes, answer rcodes
|
||||||
|
(except NOERROR, FORMERR, SERVFAIL, NXDOMAIN, NOTIMPL, REFUSED) and
|
||||||
|
RPZ actions.
|
||||||
|
Default is on.
|
||||||
|
.TP
|
||||||
.B num\-threads: \fI<number>
|
.B num\-threads: \fI<number>
|
||||||
The number of threads to create to serve clients. Use 1 for no threading.
|
The number of threads to create to serve clients. Use 1 for no threading.
|
||||||
.TP
|
.TP
|
||||||
|
|
|
||||||
|
|
@ -180,8 +180,6 @@ usage(void)
|
||||||
#ifdef HAVE_SHMGET
|
#ifdef HAVE_SHMGET
|
||||||
/** what to put on statistics lines between var and value, ": " or "=" */
|
/** what to put on statistics lines between var and value, ": " or "=" */
|
||||||
#define SQ "="
|
#define SQ "="
|
||||||
/** if true, inhibits a lot of =0 lines from the stats output */
|
|
||||||
static const int inhibit_zero = 1;
|
|
||||||
/** divide sum of timers to get average */
|
/** divide sum of timers to get average */
|
||||||
static void
|
static void
|
||||||
timeval_divide(struct timeval* avg, const struct timeval* sum, long long d)
|
timeval_divide(struct timeval* avg, const struct timeval* sum, long long d)
|
||||||
|
|
@ -316,7 +314,7 @@ static void print_hist(struct ub_stats_info* s)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** print extended */
|
/** print extended */
|
||||||
static void print_extended(struct ub_stats_info* s)
|
static void print_extended(struct ub_stats_info* s, int inhibit_zero)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char nm[16];
|
char nm[16];
|
||||||
|
|
@ -439,7 +437,7 @@ static void do_stats_shm(struct config_file* cfg, struct ub_stats_info* stats,
|
||||||
if(cfg->stat_extended) {
|
if(cfg->stat_extended) {
|
||||||
print_mem(shm_stat, &stats[0]);
|
print_mem(shm_stat, &stats[0]);
|
||||||
print_hist(stats);
|
print_hist(stats);
|
||||||
print_extended(stats);
|
print_extended(stats, cfg->stat_inhibit_zero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* HAVE_SHMGET */
|
#endif /* HAVE_SHMGET */
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,7 @@ config_create(void)
|
||||||
cfg->stat_interval = 0;
|
cfg->stat_interval = 0;
|
||||||
cfg->stat_cumulative = 0;
|
cfg->stat_cumulative = 0;
|
||||||
cfg->stat_extended = 0;
|
cfg->stat_extended = 0;
|
||||||
|
cfg->stat_inhibit_zero = 1;
|
||||||
cfg->num_threads = 1;
|
cfg->num_threads = 1;
|
||||||
cfg->port = UNBOUND_DNS_PORT;
|
cfg->port = UNBOUND_DNS_PORT;
|
||||||
cfg->do_ip4 = 1;
|
cfg->do_ip4 = 1;
|
||||||
|
|
@ -516,6 +517,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
|
||||||
else S_YNO("use-syslog:", use_syslog)
|
else S_YNO("use-syslog:", use_syslog)
|
||||||
else S_STR("log-identity:", log_identity)
|
else S_STR("log-identity:", log_identity)
|
||||||
else S_YNO("extended-statistics:", stat_extended)
|
else S_YNO("extended-statistics:", stat_extended)
|
||||||
|
else S_YNO("statistics-inhibit-zero:", stat_inhibit_zero)
|
||||||
else S_YNO("statistics-cumulative:", stat_cumulative)
|
else S_YNO("statistics-cumulative:", stat_cumulative)
|
||||||
else S_YNO("shm-enable:", shm_enable)
|
else S_YNO("shm-enable:", shm_enable)
|
||||||
else S_NUMBER_OR_ZERO("shm-key:", shm_key)
|
else S_NUMBER_OR_ZERO("shm-key:", shm_key)
|
||||||
|
|
@ -996,6 +998,7 @@ config_get_option(struct config_file* cfg, const char* opt,
|
||||||
else O_DEC(opt, "statistics-interval", stat_interval)
|
else O_DEC(opt, "statistics-interval", stat_interval)
|
||||||
else O_YNO(opt, "statistics-cumulative", stat_cumulative)
|
else O_YNO(opt, "statistics-cumulative", stat_cumulative)
|
||||||
else O_YNO(opt, "extended-statistics", stat_extended)
|
else O_YNO(opt, "extended-statistics", stat_extended)
|
||||||
|
else O_YNO(opt, "statistics-inhibit-zero", stat_inhibit_zero)
|
||||||
else O_YNO(opt, "shm-enable", shm_enable)
|
else O_YNO(opt, "shm-enable", shm_enable)
|
||||||
else O_DEC(opt, "shm-key", shm_key)
|
else O_DEC(opt, "shm-key", shm_key)
|
||||||
else O_YNO(opt, "use-syslog", use_syslog)
|
else O_YNO(opt, "use-syslog", use_syslog)
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,8 @@ struct config_file {
|
||||||
int stat_cumulative;
|
int stat_cumulative;
|
||||||
/** if true, the statistics are kept in greater detail */
|
/** if true, the statistics are kept in greater detail */
|
||||||
int stat_extended;
|
int stat_extended;
|
||||||
|
/** if true, inhibits a lot of =0 lines from the extended stats output */
|
||||||
|
int stat_inhibit_zero;
|
||||||
|
|
||||||
/** number of threads to create */
|
/** number of threads to create */
|
||||||
int num_threads;
|
int num_threads;
|
||||||
|
|
|
||||||
3438
util/configlexer.c
3438
util/configlexer.c
File diff suppressed because it is too large
Load diff
|
|
@ -438,6 +438,7 @@ insecure-lan-zones{COLON} { YDVAR(1, VAR_INSECURE_LAN_ZONES) }
|
||||||
statistics-interval{COLON} { YDVAR(1, VAR_STATISTICS_INTERVAL) }
|
statistics-interval{COLON} { YDVAR(1, VAR_STATISTICS_INTERVAL) }
|
||||||
statistics-cumulative{COLON} { YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
|
statistics-cumulative{COLON} { YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
|
||||||
extended-statistics{COLON} { YDVAR(1, VAR_EXTENDED_STATISTICS) }
|
extended-statistics{COLON} { YDVAR(1, VAR_EXTENDED_STATISTICS) }
|
||||||
|
statistics-inhibit-zero{COLON} { YDVAR(1, VAR_STATISTICS_INHIBIT_ZERO) }
|
||||||
shm-enable{COLON} { YDVAR(1, VAR_SHM_ENABLE) }
|
shm-enable{COLON} { YDVAR(1, VAR_SHM_ENABLE) }
|
||||||
shm-key{COLON} { YDVAR(1, VAR_SHM_KEY) }
|
shm-key{COLON} { YDVAR(1, VAR_SHM_KEY) }
|
||||||
remote-control{COLON} { YDVAR(0, VAR_REMOTE_CONTROL) }
|
remote-control{COLON} { YDVAR(0, VAR_REMOTE_CONTROL) }
|
||||||
|
|
|
||||||
3447
util/configparser.c
3447
util/configparser.c
File diff suppressed because it is too large
Load diff
|
|
@ -384,7 +384,8 @@ extern int yydebug;
|
||||||
VAR_INTERFACE_TAG = 585, /* VAR_INTERFACE_TAG */
|
VAR_INTERFACE_TAG = 585, /* VAR_INTERFACE_TAG */
|
||||||
VAR_INTERFACE_TAG_ACTION = 586, /* VAR_INTERFACE_TAG_ACTION */
|
VAR_INTERFACE_TAG_ACTION = 586, /* VAR_INTERFACE_TAG_ACTION */
|
||||||
VAR_INTERFACE_TAG_DATA = 587, /* VAR_INTERFACE_TAG_DATA */
|
VAR_INTERFACE_TAG_DATA = 587, /* VAR_INTERFACE_TAG_DATA */
|
||||||
VAR_PROXY_PROTOCOL_PORT = 588 /* VAR_PROXY_PROTOCOL_PORT */
|
VAR_PROXY_PROTOCOL_PORT = 588, /* VAR_PROXY_PROTOCOL_PORT */
|
||||||
|
VAR_STATISTICS_INHIBIT_ZERO = 589 /* VAR_STATISTICS_INHIBIT_ZERO */
|
||||||
};
|
};
|
||||||
typedef enum yytokentype yytoken_kind_t;
|
typedef enum yytokentype yytoken_kind_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -724,6 +725,7 @@ extern int yydebug;
|
||||||
#define VAR_INTERFACE_TAG_ACTION 586
|
#define VAR_INTERFACE_TAG_ACTION 586
|
||||||
#define VAR_INTERFACE_TAG_DATA 587
|
#define VAR_INTERFACE_TAG_DATA 587
|
||||||
#define VAR_PROXY_PROTOCOL_PORT 588
|
#define VAR_PROXY_PROTOCOL_PORT 588
|
||||||
|
#define VAR_STATISTICS_INHIBIT_ZERO 589
|
||||||
|
|
||||||
/* Value type. */
|
/* Value type. */
|
||||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||||
|
|
@ -733,7 +735,7 @@ union YYSTYPE
|
||||||
|
|
||||||
char* str;
|
char* str;
|
||||||
|
|
||||||
#line 737 "util/configparser.h"
|
#line 739 "util/configparser.h"
|
||||||
|
|
||||||
};
|
};
|
||||||
typedef union YYSTYPE YYSTYPE;
|
typedef union YYSTYPE YYSTYPE;
|
||||||
|
|
|
||||||
|
|
@ -193,7 +193,7 @@ extern struct config_parser_state* cfg_parser;
|
||||||
%token VAR_RPZ_SIGNAL_NXDOMAIN_RA VAR_INTERFACE_AUTOMATIC_PORTS VAR_EDE
|
%token VAR_RPZ_SIGNAL_NXDOMAIN_RA VAR_INTERFACE_AUTOMATIC_PORTS VAR_EDE
|
||||||
%token VAR_INTERFACE_ACTION VAR_INTERFACE_VIEW VAR_INTERFACE_TAG
|
%token VAR_INTERFACE_ACTION VAR_INTERFACE_VIEW VAR_INTERFACE_TAG
|
||||||
%token VAR_INTERFACE_TAG_ACTION VAR_INTERFACE_TAG_DATA
|
%token VAR_INTERFACE_TAG_ACTION VAR_INTERFACE_TAG_DATA
|
||||||
%token VAR_PROXY_PROTOCOL_PORT
|
%token VAR_PROXY_PROTOCOL_PORT VAR_STATISTICS_INHIBIT_ZERO
|
||||||
|
|
||||||
%%
|
%%
|
||||||
toplevelvars: /* empty */ | toplevelvars toplevelvar ;
|
toplevelvars: /* empty */ | toplevelvars toplevelvar ;
|
||||||
|
|
@ -322,7 +322,7 @@ content_server: server_num_threads | server_verbosity | server_port |
|
||||||
server_zonemd_permissive_mode | server_max_reuse_tcp_queries |
|
server_zonemd_permissive_mode | server_max_reuse_tcp_queries |
|
||||||
server_tcp_reuse_timeout | server_tcp_auth_query_timeout |
|
server_tcp_reuse_timeout | server_tcp_auth_query_timeout |
|
||||||
server_interface_automatic_ports | server_ede |
|
server_interface_automatic_ports | server_ede |
|
||||||
server_proxy_protocol_port
|
server_proxy_protocol_port | server_statistics_inhibit_zero
|
||||||
;
|
;
|
||||||
stubstart: VAR_STUB_ZONE
|
stubstart: VAR_STUB_ZONE
|
||||||
{
|
{
|
||||||
|
|
@ -554,6 +554,15 @@ server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG
|
||||||
free($2);
|
free($2);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG
|
||||||
|
{
|
||||||
|
OUTYY(("P(server_statistics_inhibit_zero:%s)\n", $2));
|
||||||
|
if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
|
||||||
|
yyerror("expected yes or no.");
|
||||||
|
else cfg_parser->cfg->stat_inhibit_zero = (strcmp($2, "yes")==0);
|
||||||
|
free($2);
|
||||||
|
}
|
||||||
|
;
|
||||||
server_shm_enable: VAR_SHM_ENABLE STRING_ARG
|
server_shm_enable: VAR_SHM_ENABLE STRING_ARG
|
||||||
{
|
{
|
||||||
OUTYY(("P(server_shm_enable:%s)\n", $2));
|
OUTYY(("P(server_shm_enable:%s)\n", $2));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue