summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins-root/check_icmp.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/plugins-root/check_icmp.c b/plugins-root/check_icmp.c
index 7ee08ad9..b97a68ed 100644
--- a/plugins-root/check_icmp.c
+++ b/plugins-root/check_icmp.c
@@ -1515,6 +1515,9 @@ static void finish(int sig, check_icmp_mode_switches modes, int min_hosts_alive,
1515 targets_alive(number_of_targets, program_state->targets_down)); 1515 targets_alive(number_of_targets, program_state->targets_down));
1516 } 1516 }
1517 1517
1518 mp_subcheck sc_single_targets = mp_subcheck_init();
1519 xasprintf(&sc_single_targets.output, "Individual Hosts");
1520
1518 // loop over targets to evaluate each one 1521 // loop over targets to evaluate each one
1519 int targets_ok = 0; 1522 int targets_ok = 0;
1520 int targets_warn = 0; 1523 int targets_warn = 0;
@@ -1524,7 +1527,15 @@ static void finish(int sig, check_icmp_mode_switches modes, int min_hosts_alive,
1524 targets_ok += host_check.targets_ok; 1527 targets_ok += host_check.targets_ok;
1525 targets_warn += host_check.targets_warn; 1528 targets_warn += host_check.targets_warn;
1526 1529
1527 mp_add_subcheck_to_check(overall, host_check.sc_host); 1530 if (min_hosts_alive > -1) {
1531 mp_add_subcheck_to_subcheck(&sc_single_targets, host_check.sc_host);
1532 } else {
1533 mp_add_subcheck_to_check(overall, host_check.sc_host);
1534 }
1535 }
1536
1537 if (min_hosts_alive > -1) {
1538 mp_add_subcheck_to_check(overall, sc_single_targets);
1528 } 1539 }
1529 1540
1530 if (number_of_hosts == 1) { 1541 if (number_of_hosts == 1) {
@@ -1545,11 +1556,20 @@ static void finish(int sig, check_icmp_mode_switches modes, int min_hosts_alive,
1545 sc_min_targets_alive = mp_set_subcheck_default_state(sc_min_targets_alive, STATE_OK); 1556 sc_min_targets_alive = mp_set_subcheck_default_state(sc_min_targets_alive, STATE_OK);
1546 1557
1547 if (targets_ok >= min_hosts_alive) { 1558 if (targets_ok >= min_hosts_alive) {
1548 // TODO this should overwrite the main state
1549 sc_min_targets_alive = mp_set_subcheck_state(sc_min_targets_alive, STATE_OK); 1559 sc_min_targets_alive = mp_set_subcheck_state(sc_min_targets_alive, STATE_OK);
1560 xasprintf(&sc_min_targets_alive.output, "%u targets OK of a minimum of %u",
1561 targets_ok, min_hosts_alive);
1550 } else if ((targets_ok + targets_warn) >= min_hosts_alive) { 1562 } else if ((targets_ok + targets_warn) >= min_hosts_alive) {
1551 sc_min_targets_alive = mp_set_subcheck_state(sc_min_targets_alive, STATE_WARNING); 1563 sc_min_targets_alive = mp_set_subcheck_state(sc_min_targets_alive, STATE_WARNING);
1564 xasprintf(&sc_min_targets_alive.output, "%u targets OK or Warning of a minimum of %u",
1565 targets_ok + targets_warn, min_hosts_alive);
1566 } else {
1567 sc_min_targets_alive = mp_set_subcheck_state(sc_min_targets_alive, STATE_CRITICAL);
1568 xasprintf(&sc_min_targets_alive.output, "%u targets OK or Warning of a minimum of %u",
1569 targets_ok + targets_warn, min_hosts_alive);
1552 } 1570 }
1571
1572 mp_add_subcheck_to_check(overall, sc_min_targets_alive);
1553 } 1573 }
1554 1574
1555 /* finish with an empty line */ 1575 /* finish with an empty line */