diff options
Diffstat (limited to 'plugins')
| -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); | |||
| 48 | 48 | ||
| 49 | #define UNDEFINED 0 | 49 | #define UNDEFINED 0 |
| 50 | #define DEFAULT_PORT 53 | 50 | #define DEFAULT_PORT 53 |
| 51 | #define DEFAULT_TRIES 3 | ||
| 52 | #define DEFAULT_TIMEOUT 10 | ||
| 51 | 53 | ||
| 52 | char *query_address = NULL; | 54 | char *query_address = NULL; |
| 53 | char *record_type = "A"; | 55 | char *record_type = "A"; |
| @@ -57,6 +59,7 @@ char *dig_args = ""; | |||
| 57 | char *query_transport = ""; | 59 | char *query_transport = ""; |
| 58 | int verbose = FALSE; | 60 | int verbose = FALSE; |
| 59 | int server_port = DEFAULT_PORT; | 61 | int server_port = DEFAULT_PORT; |
| 62 | int number_tries = DEFAULT_TRIES; | ||
| 60 | double warning_interval = UNDEFINED; | 63 | double warning_interval = UNDEFINED; |
| 61 | double critical_interval = UNDEFINED; | 64 | double critical_interval = UNDEFINED; |
| 62 | struct timeval tv; | 65 | struct timeval tv; |
| @@ -72,6 +75,7 @@ main (int argc, char **argv) | |||
| 72 | long microsec; | 75 | long microsec; |
| 73 | double elapsed_time; | 76 | double elapsed_time; |
| 74 | int result = STATE_UNKNOWN; | 77 | int result = STATE_UNKNOWN; |
| 78 | timeout_interval = DEFAULT_TIMEOUT; | ||
| 75 | 79 | ||
| 76 | setlocale (LC_ALL, ""); | 80 | setlocale (LC_ALL, ""); |
| 77 | bindtextdomain (PACKAGE, LOCALEDIR); | 81 | bindtextdomain (PACKAGE, LOCALEDIR); |
| @@ -87,9 +91,12 @@ main (int argc, char **argv) | |||
| 87 | if (process_arguments (argc, argv) == ERROR) | 91 | if (process_arguments (argc, argv) == ERROR) |
| 88 | usage_va(_("Could not parse arguments")); | 92 | usage_va(_("Could not parse arguments")); |
| 89 | 93 | ||
| 94 | /* dig applies the timeout to each try, so we need to work around this */ | ||
| 95 | int timeout_interval_dig = ceil((double) timeout_interval / (double) number_tries); | ||
| 96 | |||
| 90 | /* get the command to run */ | 97 | /* get the command to run */ |
| 91 | xasprintf (&command_line, "%s %s @%s -p %d %s -t %s %s", | 98 | xasprintf (&command_line, "%s @%s -p %d %s -t %s %s %s +tries=%d +time=%d", |
| 92 | PATH_TO_DIG, query_transport, dns_server, server_port, query_address, record_type, dig_args); | 99 | PATH_TO_DIG, dns_server, server_port, query_address, record_type, dig_args, query_transport, number_tries, timeout_interval_dig); |
| 93 | 100 | ||
| 94 | alarm (timeout_interval); | 101 | alarm (timeout_interval); |
| 95 | gettimeofday (&tv, NULL); | 102 | gettimeofday (&tv, NULL); |
