diff options
Diffstat (limited to 'plugins/check_ping.c')
-rw-r--r-- | plugins/check_ping.c | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/plugins/check_ping.c b/plugins/check_ping.c index 5eada4f4..420f148c 100644 --- a/plugins/check_ping.c +++ b/plugins/check_ping.c | |||
@@ -121,8 +121,12 @@ main (int argc, char **argv) | |||
121 | else if (pl >= wpl || rta >= wrta) | 121 | else if (pl >= wpl || rta >= wrta) |
122 | result = STATE_WARNING; | 122 | result = STATE_WARNING; |
123 | else if (pl < wpl && rta < wrta && pl >= 0 && rta >= 0) | 123 | else if (pl < wpl && rta < wrta && pl >= 0 && rta >= 0) |
124 | result = max (result, STATE_OK); | 124 | /* cannot use the max function because STATE_UNKNOWN is now 3 gt STATE_OK |
125 | 125 | result = max (result, STATE_OK); */ | |
126 | if( !( (result == STATE_WARNING) || (result == STATE_CRITICAL) ) ) { | ||
127 | result = STATE_OK; | ||
128 | } | ||
129 | |||
126 | if (display_html == TRUE) | 130 | if (display_html == TRUE) |
127 | printf ("<A HREF='%s/traceroute.cgi?%s'>", CGIURL, server_address); | 131 | printf ("<A HREF='%s/traceroute.cgi?%s'>", CGIURL, server_address); |
128 | if (pl == 100) | 132 | if (pl == 100) |
@@ -381,7 +385,12 @@ run_ping (char *command_line) | |||
381 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { | 385 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { |
382 | 386 | ||
383 | if (strstr (input_buffer, "(DUP!)")) { | 387 | if (strstr (input_buffer, "(DUP!)")) { |
384 | result = max (result, STATE_WARNING); | 388 | /* cannot use the max function since STATE_UNKNOWN is max |
389 | result = max (result, STATE_WARNING); */ | ||
390 | if( !(result == STATE_CRITICAL) ){ | ||
391 | result = STATE_WARNING; | ||
392 | } | ||
393 | |||
385 | warn_text = realloc (warn_text, strlen (WARN_DUPLICATES) + 1); | 394 | warn_text = realloc (warn_text, strlen (WARN_DUPLICATES) + 1); |
386 | if (warn_text == NULL) | 395 | if (warn_text == NULL) |
387 | terminate (STATE_UNKNOWN, "unable to realloc warn_text"); | 396 | terminate (STATE_UNKNOWN, "unable to realloc warn_text"); |
@@ -445,6 +454,9 @@ run_ping (char *command_line) | |||
445 | else if (strstr (input_buffer, "Destination Host Unreachable")) | 454 | else if (strstr (input_buffer, "Destination Host Unreachable")) |
446 | terminate (STATE_CRITICAL, "PING CRITICAL - Host Unreachable (%s)", | 455 | terminate (STATE_CRITICAL, "PING CRITICAL - Host Unreachable (%s)", |
447 | server_address); | 456 | server_address); |
457 | else if (strstr (input_buffer, "unknown host" ) ) | ||
458 | terminate (STATE_CRITICAL, "PING CRITICAL - Host not found (%s)", | ||
459 | server_address); | ||
448 | 460 | ||
449 | warn_text = | 461 | warn_text = |
450 | realloc (warn_text, strlen (warn_text) + strlen (input_buffer) + 2); | 462 | realloc (warn_text, strlen (warn_text) + strlen (input_buffer) + 2); |
@@ -456,9 +468,15 @@ run_ping (char *command_line) | |||
456 | sprintf (warn_text, "%s %s", warn_text, input_buffer); | 468 | sprintf (warn_text, "%s %s", warn_text, input_buffer); |
457 | 469 | ||
458 | if (strstr (input_buffer, "DUPLICATES FOUND")) | 470 | if (strstr (input_buffer, "DUPLICATES FOUND")) |
459 | result = max (result, STATE_WARNING); | 471 | /* cannot use the max function since STATE_UNKNOWN is max |
472 | result = max (result, STATE_WARNING); */ | ||
473 | if( !(result == STATE_CRITICAL) ){ | ||
474 | result = STATE_WARNING; | ||
475 | } | ||
460 | else | 476 | else |
461 | result = max (result, STATE_CRITICAL); | 477 | /* cannot use the max function since STATE_UNKNOWN is max |
478 | result = max (result, STATE_CRITICAL); */ | ||
479 | result = STATE_CRITICAL ; | ||
462 | } | 480 | } |
463 | (void) fclose (child_stderr); | 481 | (void) fclose (child_stderr); |
464 | 482 | ||
@@ -469,7 +487,7 @@ run_ping (char *command_line) | |||
469 | 487 | ||
470 | return result; | 488 | return result; |
471 | } | 489 | } |
472 | 490 | ||
473 | 491 | ||
474 | void | 492 | void |
475 | print_usage (void) | 493 | print_usage (void) |