aboutsummaryrefslogtreecommitdiff
path: root/plugins/check_ntp.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/check_ntp.c')
-rw-r--r--plugins/check_ntp.c64
1 files changed, 26 insertions, 38 deletions
diff --git a/plugins/check_ntp.c b/plugins/check_ntp.c
index abd254c8..6c7c1e7d 100644
--- a/plugins/check_ntp.c
+++ b/plugins/check_ntp.c
@@ -47,13 +47,16 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
static char *server_address=NULL;
static int verbose=0;
-static double owarn=60;
-static double ocrit=120;
+static int stratum=-1;
+static char *owarn="60";
+static char *ocrit="120";
static short do_jitter=0;
-static double jwarn=5000;
-static double jcrit=10000;
+static char *jwarn="5000";
+static char *jcrit="10000";
int process_arguments (int, char **);
+thresholds *offset_thresholds = NULL;
+thresholds *jitter_thresholds = NULL;
void print_help (void);
void print_usage (void);
@@ -686,18 +689,18 @@ int process_arguments(int argc, char **argv){
verbose++;
break;
case 'w':
- owarn = atof(optarg);
+ owarn = optarg;
break;
case 'c':
- ocrit = atof(optarg);
+ ocrit = optarg;
break;
case 'j':
do_jitter=1;
- jwarn = atof(optarg);
+ jwarn = optarg;
break;
case 'k':
do_jitter=1;
- jcrit = atof(optarg);
+ jcrit = optarg;
break;
case 'H':
if(is_host(optarg) == FALSE)
@@ -724,14 +727,6 @@ int process_arguments(int argc, char **argv){
}
}
- if (ocrit < owarn){
- usage4(_("Critical offset should be larger than warning offset"));
- }
-
- if (jcrit < jwarn){
- usage4(_("Critical jitter should be larger than warning jitter"));
- }
-
if(server_address == NULL){
usage4(_("Hostname was not supplied"));
}
@@ -742,16 +737,16 @@ int process_arguments(int argc, char **argv){
char *perfd_offset (double offset)
{
return fperfdata ("offset", offset, "s",
- TRUE, owarn,
- TRUE, ocrit,
+ TRUE, offset_thresholds->warning->end,
+ TRUE, offset_thresholds->critical->end,
FALSE, 0, FALSE, 0);
}
char *perfd_jitter (double jitter)
{
return fperfdata ("jitter", jitter, "s",
- do_jitter, jwarn,
- do_jitter, jcrit,
+ do_jitter, jitter_thresholds->warning->end,
+ do_jitter, jitter_thresholds->critical->end,
TRUE, 0, FALSE, 0);
}
@@ -760,11 +755,14 @@ int main(int argc, char *argv[]){
double offset=0, jitter=0;
char *result_line, *perfdata_line;
- result=offset_result=jitter_result=STATE_UNKNOWN;
+ result = offset_result = jitter_result= STATE_UNKNOWN;
if (process_arguments (argc, argv) == ERROR)
usage4 (_("Could not parse arguments"));
+ set_thresholds(&offset_thresholds, owarn, ocrit);
+ set_thresholds(&jitter_thresholds, jwarn, jcrit);
+
/* initialize alarm signal handling */
signal (SIGALRM, socket_timeout_alarm_handler);
@@ -772,14 +770,8 @@ int main(int argc, char *argv[]){
alarm (socket_timeout);
offset = offset_request(server_address, &offset_result);
- if(fabs(offset) > ocrit){
- result = STATE_CRITICAL;
- } else if(fabs(offset) > owarn) {
- result = STATE_WARNING;
- } else {
- result = STATE_OK;
- }
- result=max_state(result, offset_result);
+ result = get_status(fabs(offset), offset_thresholds);
+ result = max_state(result, offset_result);
/* If not told to check the jitter, we don't even send packets.
* jitter is checked using NTP control packets, which not all
@@ -788,17 +780,13 @@ int main(int argc, char *argv[]){
*/
if(do_jitter){
jitter=jitter_request(server_address, &jitter_result);
- if(jitter > jcrit){
- result = max_state(result, STATE_CRITICAL);
- } else if(jitter > jwarn) {
- result = max_state(result, STATE_WARNING);
- } else if(jitter == -1.0 && result == STATE_OK){
- /* -1 indicates that we couldn't calculate the jitter
- * Only overrides STATE_OK from the offset */
+ result = max_state(result, get_status(jitter, jitter_thresholds));
+ /* -1 indicates that we couldn't calculate the jitter
+ * Only overrides STATE_OK from the offset */
+ if(jitter == -1.0 && result == STATE_OK)
result = STATE_UNKNOWN;
- }
}
- result=max_state(result, jitter_result);
+ result = max_state(result, jitter_result);
switch (result) {
case STATE_CRITICAL :