aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/check_dns.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/plugins/check_dns.c b/plugins/check_dns.c
index 7c79893a..fd798a60 100644
--- a/plugins/check_dns.c
+++ b/plugins/check_dns.c
@@ -75,6 +75,9 @@ main (int argc, char **argv)
char *address = NULL;
char *temp_buffer = NULL;
int result = STATE_UNKNOWN;
+ double elapsed_time;
+ struct timeval tv;
+ int multi_address;
/* Set signal handling and alarm */
if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR) {
@@ -91,7 +94,7 @@ main (int argc, char **argv)
asprintf (&command_line, "%s %s %s", NSLOOKUP_COMMAND, query_address, dns_server);
alarm (timeout_interval);
- time (&start_time);
+ gettimeofday (&tv, NULL);
if (verbose)
printf ("%s\n", command_line);
@@ -180,11 +183,17 @@ main (int argc, char **argv)
asprintf(&output, "expected %s but got %s", expected_address, address);
}
- (void) time (&end_time);
+ elapsed_time = delta_time (tv);
- if (result == STATE_OK)
- printf ("DNS ok - %d seconds response time, Address(es) is/are %s\n",
- (int) (end_time - start_time), address);
+ if (result == STATE_OK) {
+ if (strchr (address, ',') == NULL)
+ multi_address = FALSE;
+ else
+ multi_address = TRUE;
+
+ printf ("DNS ok - %-7.3f seconds response time, address%s %s|time=%-7.3f\n",
+ elapsed_time, (multi_address==TRUE ? "es are" : " is"), address, elapsed_time);
+ }
else if (result == STATE_WARNING)
printf ("DNS WARNING - %s\n",
!strcmp (output, "") ? " Probably a non-existent host/domain" : output);