diff options
Diffstat (limited to 'plugins/check_dig.c')
-rw-r--r-- | plugins/check_dig.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/plugins/check_dig.c b/plugins/check_dig.c index 7575995d..5638017c 100644 --- a/plugins/check_dig.c +++ b/plugins/check_dig.c @@ -48,6 +48,8 @@ void print_usage (void); #define UNDEFINED 0 #define DEFAULT_PORT 53 +#define DEFAULT_TRIES 3 +#define DEFAULT_TIMEOUT 10 char *query_address = NULL; char *record_type = "A"; @@ -57,6 +59,7 @@ char *dig_args = ""; char *query_transport = ""; int verbose = FALSE; int server_port = DEFAULT_PORT; +int number_tries = DEFAULT_TRIES; double warning_interval = UNDEFINED; double critical_interval = UNDEFINED; struct timeval tv; @@ -72,6 +75,7 @@ main (int argc, char **argv) long microsec; double elapsed_time; int result = STATE_UNKNOWN; + timeout_interval = DEFAULT_TIMEOUT; setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); @@ -87,9 +91,12 @@ main (int argc, char **argv) if (process_arguments (argc, argv) == ERROR) usage_va(_("Could not parse arguments")); + /* dig applies the timeout to each try, so we need to work around this */ + int timeout_interval_dig = ceil((double) timeout_interval / (double) number_tries); + /* get the command to run */ - xasprintf (&command_line, "%s %s @%s -p %d %s -t %s %s", - PATH_TO_DIG, query_transport, dns_server, server_port, query_address, record_type, dig_args); + xasprintf (&command_line, "%s @%s -p %d %s -t %s %s %s +tries=%d +time=%d", + PATH_TO_DIG, dns_server, server_port, query_address, record_type, dig_args, query_transport, number_tries, timeout_interval_dig); alarm (timeout_interval); gettimeofday (&tv, NULL); |