diff --git a/plugins/check_dig.c b/plugins/check_dig.c
index ae02a6edd2a870120f61ec530cf661a38a14c4a9..e348a352bec09323eeef97c134f70f43e21e1871 100644 (file)
--- a/plugins/check_dig.c
+++ b/plugins/check_dig.c
const char *email = "nagiosplug-devel@lists.sourceforge.net";
enum {
+ UNDEFINED = 0,
DEFAULT_PORT = 53
};
char *dns_server = NULL;
int verbose = FALSE;
int server_port = DEFAULT_PORT;
-int warning_interval = -1;
-int critical_interval = -1;
+double warning_interval = UNDEFINED;
+double critical_interval = UNDEFINED;
struct timeval tv;
int
if (output == NULL || strlen (output) == 0)
asprintf (&output, _(" Probably a non-existent host/domain"));
- if (elapsed_time > critical_interval)
- die (STATE_CRITICAL,
- _("DNS OK - %.3f seconds response time (%s)|time=%ldus\n"),
- elapsed_time, output, microsec);
+ if (critical_interval > UNDEFINED && elapsed_time > critical_interval)
+ result = STATE_CRITICAL;
- else if (result == STATE_CRITICAL)
- printf (_("DNS CRITICAL - %s|time=%ldus\n"), output, microsec);
+ else if (warning_interval > UNDEFINED && elapsed_time > warning_interval)
+ result = STATE_WARNING;
- else if (elapsed_time > warning_interval)
- die (STATE_WARNING,
- _("DNS OK - %.3f seconds response time (%s)|time=%ldus\n"),
- elapsed_time, output, microsec);
-
- else if (result == STATE_WARNING)
- printf (_("DNS WARNING - %s|time=%ldus\n"), output, microsec);
-
- else if (result == STATE_OK)
- printf (_("DNS OK - %.3f seconds response time (%s)|time=%ldus\n"),
- elapsed_time, output, microsec);
-
- else
- printf (_("DNS problem - %s|time=%ldus\n"), output, microsec);
+ asprintf (&output, _("%.3f seconds response time (%s)"), elapsed_time, output);
+ printf ("DNS %s - %s|%s\n",
+ state_text (result), output,
+ perfdata("time", microsec, "us",
+ (warning_interval>UNDEFINED?TRUE:FALSE),
+ (int)(1e6*warning_interval),
+ (critical_interval>UNDEFINED?TRUE:FALSE),
+ (int)(1e6*critical_interval),
+ TRUE, 0, FALSE, 0));
return result;
}
int option = 0;
static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
- {"query_address", required_argument, 0, 'e'},
+ {"query_address", required_argument, 0, 'l'},
+ {"warning", required_argument, 0, 'w'},
+ {"critical", required_argument, 0, 'c'},
+ {"timeout", required_argument, 0, 't'},
{"verbose", no_argument, 0, 'v'},
{"version", no_argument, 0, 'V'},
{"help", no_argument, 0, 'h'},
return ERROR;
while (1) {
- c = getopt_long (argc, argv, "hVvt:l:H:", longopts, &option);
+ c = getopt_long (argc, argv, "hVvt:l:H:w:c:", longopts, &option);
if (c == -1 || c == EOF)
break;
usage2 (_("Invalid host name"), optarg);
}
break;
- case 'p':
+ case 'p': /* server port */
if (is_intpos (optarg)) {
server_port = atoi (optarg);
}
else {
- usage2 (_("Server port must be a nonnegative integer\n"), optarg);
+ usage2 (_("Server port must be a nonnegative integer"), optarg);
}
break;
- case 'l': /* username */
+ case 'l': /* address to lookup */
query_address = optarg;
break;
- case 'w': /* timeout */
- if (is_intnonneg (optarg)) {
- warning_interval = atoi (optarg);
+ case 'w': /* warning */
+ if (is_nonnegative (optarg)) {
+ warning_interval = strtod (optarg, NULL);
}
else {
- usage2 (_("Warning interval must be a nonnegative integer\n"), optarg);
+ usage2 (_("Warning interval must be a nonnegative integer"), optarg);
}
break;
- case 'c': /* timeout */
- if (is_intnonneg (optarg)) {
- critical_interval = atoi (optarg);
+ case 'c': /* critical */
+ if (is_nonnegative (optarg)) {
+ critical_interval = strtod (optarg, NULL);
}
else {
- usage2 (_("Critical interval must be a nonnegative integer\n"), optarg);
+ usage2 (_("Critical interval must be a nonnegative integer"), optarg);
}
break;
case 't': /* timeout */
timeout_interval = atoi (optarg);
}
else {
- usage2 (_("Time interval must be a nonnegative integer\n"), optarg);
+ usage2 (_("Time interval must be a nonnegative integer"), optarg);
}
break;
case 'v': /* verbose */