summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2025-06-23 10:52:56 +0200
committerLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2025-06-23 10:52:56 +0200
commitb08bafc45cea008abb46e0891c55e7745e117aae (patch)
treeef30e1d350b2796e44d8e31aa5beeece17b6d73b
parent27d30c3df0904ef4c81ad5adc50fa451777693a9 (diff)
downloadmonitoring-plugins-b08bafc45cea008abb46e0891c55e7745e117aae.tar.gz
check_icmp: remove paket_interval, was never used anyway
-rw-r--r--plugins-root/check_icmp.c88
-rw-r--r--plugins-root/check_icmp.d/check_icmp_helpers.c1
-rw-r--r--plugins-root/check_icmp.d/config.h1
3 files changed, 37 insertions, 53 deletions
diff --git a/plugins-root/check_icmp.c b/plugins-root/check_icmp.c
index d181af56..524e1fb9 100644
--- a/plugins-root/check_icmp.c
+++ b/plugins-root/check_icmp.c
@@ -151,10 +151,9 @@ static void set_source_ip(char *arg, int icmp_sock, sa_family_t addr_family);
151 151
152/* Receiving data */ 152/* Receiving data */
153static int wait_for_reply(check_icmp_socket_set sockset, time_t time_interval, 153static int wait_for_reply(check_icmp_socket_set sockset, time_t time_interval,
154 unsigned short icmp_pkt_size, time_t *pkt_interval, 154 unsigned short icmp_pkt_size, time_t *target_interval, uint16_t sender_id,
155 time_t *target_interval, uint16_t sender_id, ping_target **table, 155 ping_target **table, unsigned short packets,
156 unsigned short packets, unsigned short number_of_targets, 156 unsigned short number_of_targets, check_icmp_state *program_state);
157 check_icmp_state *program_state);
158 157
159typedef struct { 158typedef struct {
160 sa_family_t recv_proto; 159 sa_family_t recv_proto;
@@ -164,9 +163,9 @@ static recvfrom_wto_wrapper recvfrom_wto(check_icmp_socket_set sockset, void *bu
164 struct sockaddr *saddr, time_t *timeout, 163 struct sockaddr *saddr, time_t *timeout,
165 struct timeval *received_timestamp); 164 struct timeval *received_timestamp);
166static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr, 165static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr,
167 time_t *pkt_interval, time_t *target_interval, uint16_t sender_id, 166 time_t *target_interval, uint16_t sender_id, ping_target **table,
168 ping_target **table, unsigned short packets, 167 unsigned short packets, unsigned short number_of_targets,
169 unsigned short number_of_targets, check_icmp_state *program_state); 168 check_icmp_state *program_state);
170 169
171/* Sending data */ 170/* Sending data */
172static int send_icmp_ping(check_icmp_socket_set sockset, ping_target *host, 171static int send_icmp_ping(check_icmp_socket_set sockset, ping_target *host,
@@ -198,11 +197,11 @@ static parse_threshold2_helper_wrapper parse_threshold2_helper(char *threshold_s
198 threshold_mode mode); 197 threshold_mode mode);
199 198
200/* main test function */ 199/* main test function */
201static void run_checks(unsigned short icmp_pkt_size, time_t *pkt_interval, time_t *target_interval, 200static void run_checks(unsigned short icmp_pkt_size, time_t *target_interval, uint16_t sender_id,
202 uint16_t sender_id, check_icmp_execution_mode mode, 201 check_icmp_execution_mode mode, time_t max_completion_time,
203 time_t max_completion_time, struct timeval prog_start, ping_target **table, 202 struct timeval prog_start, ping_target **table, unsigned short packets,
204 unsigned short packets, check_icmp_socket_set sockset, 203 check_icmp_socket_set sockset, unsigned short number_of_targets,
205 unsigned short number_of_targets, check_icmp_state *program_state); 204 check_icmp_state *program_state);
206mp_subcheck evaluate_target(ping_target target, check_icmp_mode_switches modes, 205mp_subcheck evaluate_target(ping_target target, check_icmp_mode_switches modes,
207 check_icmp_threshold warn, check_icmp_threshold crit); 206 check_icmp_threshold warn, check_icmp_threshold crit);
208 207
@@ -297,14 +296,12 @@ check_icmp_config_wrapper process_arguments(int argc, char **argv) {
297 result.config.mode = MODE_ICMP; 296 result.config.mode = MODE_ICMP;
298 } else if (!strcmp(progname, "check_host")) { 297 } else if (!strcmp(progname, "check_host")) {
299 result.config.mode = MODE_HOSTCHECK; 298 result.config.mode = MODE_HOSTCHECK;
300 result.config.pkt_interval = 1000000;
301 result.config.number_of_packets = 5; 299 result.config.number_of_packets = 5;
302 result.config.crit.rta = result.config.warn.rta = 1000000; 300 result.config.crit.rta = result.config.warn.rta = 1000000;
303 result.config.crit.pl = result.config.warn.pl = 100; 301 result.config.crit.pl = result.config.warn.pl = 100;
304 } else if (!strcmp(progname, "check_rta_multi")) { 302 } else if (!strcmp(progname, "check_rta_multi")) {
305 result.config.mode = MODE_ALL; 303 result.config.mode = MODE_ALL;
306 result.config.target_interval = 0; 304 result.config.target_interval = 0;
307 result.config.pkt_interval = 50000;
308 result.config.number_of_packets = 5; 305 result.config.number_of_packets = 5;
309 } 306 }
310 /* support "--help" and "--version" */ 307 /* support "--help" and "--version" */
@@ -418,13 +415,7 @@ check_icmp_config_wrapper process_arguments(int argc, char **argv) {
418 } 415 }
419 } break; 416 } break;
420 case 'i': { 417 case 'i': {
421 get_timevar_wrapper parsed_time = get_timevar(optarg); 418 // packet_interval was unused and is now removed
422
423 if (parsed_time.error_code == OK) {
424 result.config.pkt_interval = parsed_time.time_range;
425 } else {
426 crash("failed to parse packet interval");
427 }
428 } break; 419 } break;
429 case 'I': { 420 case 'I': {
430 get_timevar_wrapper parsed_time = get_timevar(optarg); 421 get_timevar_wrapper parsed_time = get_timevar(optarg);
@@ -738,8 +729,8 @@ static const char *get_icmp_error_msg(unsigned char icmp_type, unsigned char icm
738} 729}
739 730
740static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr, 731static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr,
741 time_t *pkt_interval, time_t *target_interval, 732 time_t *target_interval, const uint16_t sender_id,
742 const uint16_t sender_id, ping_target **table, unsigned short packets, 733 ping_target **table, unsigned short packets,
743 const unsigned short number_of_targets, 734 const unsigned short number_of_targets,
744 check_icmp_state *program_state) { 735 check_icmp_state *program_state) {
745 struct icmp icmp_packet; 736 struct icmp icmp_packet;
@@ -799,7 +790,6 @@ static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *ad
799 /* source quench means we're sending too fast, so increase the 790 /* source quench means we're sending too fast, so increase the
800 * interval and mark this packet lost */ 791 * interval and mark this packet lost */
801 if (icmp_packet.icmp_type == ICMP_SOURCEQUENCH) { 792 if (icmp_packet.icmp_type == ICMP_SOURCEQUENCH) {
802 *pkt_interval = (unsigned int)((double)*pkt_interval * PACKET_BACKOFF_FACTOR);
803 *target_interval = (unsigned int)((double)*target_interval * TARGET_BACKOFF_FACTOR); 793 *target_interval = (unsigned int)((double)*target_interval * TARGET_BACKOFF_FACTOR);
804 } else { 794 } else {
805 program_state->targets_down++; 795 program_state->targets_down++;
@@ -931,18 +921,17 @@ int main(int argc, char **argv) {
931 gettimeofday(&prog_start, NULL); 921 gettimeofday(&prog_start, NULL);
932 922
933 time_t max_completion_time = 923 time_t max_completion_time =
934 ((config.pkt_interval * config.number_of_targets * config.number_of_packets) + 924 (config.target_interval * config.number_of_targets) +
935 (config.target_interval * config.number_of_targets)) +
936 (config.crit.rta * config.number_of_targets * config.number_of_packets) + config.crit.rta; 925 (config.crit.rta * config.number_of_targets * config.number_of_packets) + config.crit.rta;
937 926
938 if (debug) { 927 if (debug) {
939 printf("packets: %u, targets: %u\n" 928 printf("packets: %u, targets: %u\n"
940 "target_interval: %0.3f, pkt_interval %0.3f\n" 929 "target_interval: %0.3f\n"
941 "crit.rta: %0.3f\n" 930 "crit.rta: %0.3f\n"
942 "max_completion_time: %0.3f\n", 931 "max_completion_time: %0.3f\n",
943 config.number_of_packets, config.number_of_targets, 932 config.number_of_packets, config.number_of_targets,
944 (float)config.target_interval / 1000, (float)config.pkt_interval / 1000, 933 (float)config.target_interval / 1000, (float)config.crit.rta / 1000,
945 (float)config.crit.rta / 1000, (float)max_completion_time / 1000); 934 (float)max_completion_time / 1000);
946 } 935 }
947 936
948 if (debug) { 937 if (debug) {
@@ -955,8 +944,7 @@ int main(int argc, char **argv) {
955 if (debug) { 944 if (debug) {
956 printf("crit = {%ld, %u%%}, warn = {%ld, %u%%}\n", config.crit.rta, config.crit.pl, 945 printf("crit = {%ld, %u%%}, warn = {%ld, %u%%}\n", config.crit.rta, config.crit.pl,
957 config.warn.rta, config.warn.pl); 946 config.warn.rta, config.warn.pl);
958 printf("pkt_interval: %ld target_interval: %ld\n", config.pkt_interval, 947 printf("target_interval: %ld\n", config.target_interval);
959 config.target_interval);
960 printf("icmp_pkt_size: %u timeout: %u\n", config.icmp_pkt_size, timeout); 948 printf("icmp_pkt_size: %u timeout: %u\n", config.icmp_pkt_size, timeout);
961 } 949 }
962 950
@@ -980,14 +968,13 @@ int main(int argc, char **argv) {
980 target_index++; 968 target_index++;
981 } 969 }
982 970
983 time_t pkt_interval = config.pkt_interval;
984 time_t target_interval = config.target_interval; 971 time_t target_interval = config.target_interval;
985 972
986 check_icmp_state program_state = check_icmp_state_init(); 973 check_icmp_state program_state = check_icmp_state_init();
987 974
988 run_checks(config.icmp_data_size, &pkt_interval, &target_interval, config.sender_id, 975 run_checks(config.icmp_data_size, &target_interval, config.sender_id, config.mode,
989 config.mode, max_completion_time, prog_start, table, config.number_of_packets, 976 max_completion_time, prog_start, table, config.number_of_packets, sockset,
990 sockset, config.number_of_targets, &program_state); 977 config.number_of_targets, &program_state);
991 978
992 errno = 0; 979 errno = 0;
993 980
@@ -1006,7 +993,7 @@ int main(int argc, char **argv) {
1006 mp_exit(overall); 993 mp_exit(overall);
1007} 994}
1008 995
1009static void run_checks(unsigned short icmp_pkt_size, time_t *pkt_interval, time_t *target_interval, 996static void run_checks(unsigned short icmp_pkt_size, time_t *target_interval,
1010 const uint16_t sender_id, const check_icmp_execution_mode mode, 997 const uint16_t sender_id, const check_icmp_execution_mode mode,
1011 const time_t max_completion_time, const struct timeval prog_start, 998 const time_t max_completion_time, const struct timeval prog_start,
1012 ping_target **table, const unsigned short packets, 999 ping_target **table, const unsigned short packets,
@@ -1039,17 +1026,15 @@ static void run_checks(unsigned short icmp_pkt_size, time_t *pkt_interval, time_
1039 if (targets_alive(number_of_targets, program_state->targets_down) || 1026 if (targets_alive(number_of_targets, program_state->targets_down) ||
1040 get_timevaldiff(prog_start, prog_start) < max_completion_time || 1027 get_timevaldiff(prog_start, prog_start) < max_completion_time ||
1041 !(mode == MODE_HOSTCHECK && program_state->targets_down)) { 1028 !(mode == MODE_HOSTCHECK && program_state->targets_down)) {
1042 wait_for_reply(sockset, *target_interval, icmp_pkt_size, pkt_interval, 1029 wait_for_reply(sockset, *target_interval, icmp_pkt_size, target_interval, sender_id,
1043 target_interval, sender_id, table, packets, number_of_targets, 1030 table, packets, number_of_targets, program_state);
1044 program_state);
1045 } 1031 }
1046 } 1032 }
1047 if (targets_alive(number_of_targets, program_state->targets_down) || 1033 if (targets_alive(number_of_targets, program_state->targets_down) ||
1048 get_timevaldiff_to_now(prog_start) < max_completion_time || 1034 get_timevaldiff_to_now(prog_start) < max_completion_time ||
1049 !(mode == MODE_HOSTCHECK && program_state->targets_down)) { 1035 !(mode == MODE_HOSTCHECK && program_state->targets_down)) {
1050 wait_for_reply(sockset, *pkt_interval * number_of_targets, icmp_pkt_size, pkt_interval, 1036 wait_for_reply(sockset, number_of_targets, icmp_pkt_size, target_interval, sender_id,
1051 target_interval, sender_id, table, packets, number_of_targets, 1037 table, packets, number_of_targets, program_state);
1052 program_state);
1053 } 1038 }
1054 } 1039 }
1055 1040
@@ -1079,8 +1064,8 @@ static void run_checks(unsigned short icmp_pkt_size, time_t *pkt_interval, time_
1079 if (targets_alive(number_of_targets, program_state->targets_down) || 1064 if (targets_alive(number_of_targets, program_state->targets_down) ||
1080 get_timevaldiff_to_now(prog_start) < max_completion_time || 1065 get_timevaldiff_to_now(prog_start) < max_completion_time ||
1081 !(mode == MODE_HOSTCHECK && program_state->targets_down)) { 1066 !(mode == MODE_HOSTCHECK && program_state->targets_down)) {
1082 wait_for_reply(sockset, final_wait, icmp_pkt_size, pkt_interval, target_interval, 1067 wait_for_reply(sockset, final_wait, icmp_pkt_size, target_interval, sender_id, table,
1083 sender_id, table, packets, number_of_targets, program_state); 1068 packets, number_of_targets, program_state);
1084 } 1069 }
1085 } 1070 }
1086} 1071}
@@ -1096,10 +1081,9 @@ static void run_checks(unsigned short icmp_pkt_size, time_t *pkt_interval, time_
1096 * icmp echo reply : the rest 1081 * icmp echo reply : the rest
1097 */ 1082 */
1098static int wait_for_reply(check_icmp_socket_set sockset, const time_t time_interval, 1083static int wait_for_reply(check_icmp_socket_set sockset, const time_t time_interval,
1099 unsigned short icmp_pkt_size, time_t *pkt_interval, 1084 unsigned short icmp_pkt_size, time_t *target_interval, uint16_t sender_id,
1100 time_t *target_interval, uint16_t sender_id, ping_target **table, 1085 ping_target **table, const unsigned short packets,
1101 const unsigned short packets, const unsigned short number_of_targets, 1086 const unsigned short number_of_targets, check_icmp_state *program_state) {
1102 check_icmp_state *program_state) {
1103 union icmp_packet packet; 1087 union icmp_packet packet;
1104 if (!(packet.buf = malloc(icmp_pkt_size))) { 1088 if (!(packet.buf = malloc(icmp_pkt_size))) {
1105 crash("send_icmp_ping(): failed to malloc %d bytes for send buffer", icmp_pkt_size); 1089 crash("send_icmp_ping(): failed to malloc %d bytes for send buffer", icmp_pkt_size);
@@ -1185,8 +1169,8 @@ static int wait_for_reply(check_icmp_socket_set sockset, const time_t time_inter
1185 printf("not a proper ICMP_ECHOREPLY\n"); 1169 printf("not a proper ICMP_ECHOREPLY\n");
1186 } 1170 }
1187 1171
1188 handle_random_icmp(buf + hlen, &resp_addr, pkt_interval, target_interval, sender_id, 1172 handle_random_icmp(buf + hlen, &resp_addr, target_interval, sender_id, table, packets,
1189 table, packets, number_of_targets, program_state); 1173 number_of_targets, program_state);
1190 1174
1191 continue; 1175 continue;
1192 } 1176 }
@@ -2111,8 +2095,10 @@ void print_help(void) {
2111 printf(" %s", _("number of packets to send (default ")); 2095 printf(" %s", _("number of packets to send (default "));
2112 printf("%u)\n", DEFAULT_NUMBER_OF_PACKETS); 2096 printf("%u)\n", DEFAULT_NUMBER_OF_PACKETS);
2113 printf(" %s\n", "-i"); 2097 printf(" %s\n", "-i");
2114 printf(" %s", _("max packet interval (default ")); 2098 printf(" %s", _("[DEPRECATED] packet interval (default "));
2115 printf("%0.3fms)\n", (float)DEFAULT_PKT_INTERVAL / 1000); 2099 printf("%0.3fms)\n", (float)DEFAULT_PKT_INTERVAL / 1000);
2100 printf(" %s", _("This option was never actually used and is just mentioned here for "
2101 "historical purposes"));
2116 printf(" %s\n", "-I"); 2102 printf(" %s\n", "-I");
2117 printf(" %s%0.3fms)\n The time interval to wait in between one target and the next", 2103 printf(" %s%0.3fms)\n The time interval to wait in between one target and the next",
2118 _("max target interval (default "), (float)DEFAULT_TARGET_INTERVAL / 1000); 2104 _("max target interval (default "), (float)DEFAULT_TARGET_INTERVAL / 1000);
diff --git a/plugins-root/check_icmp.d/check_icmp_helpers.c b/plugins-root/check_icmp.d/check_icmp_helpers.c
index 9acc96fd..0be0f2dc 100644
--- a/plugins-root/check_icmp.d/check_icmp_helpers.c
+++ b/plugins-root/check_icmp.d/check_icmp_helpers.c
@@ -35,7 +35,6 @@ check_icmp_config check_icmp_config_init() {
35 .ttl = DEFAULT_TTL, 35 .ttl = DEFAULT_TTL,
36 .icmp_data_size = DEFAULT_PING_DATA_SIZE, 36 .icmp_data_size = DEFAULT_PING_DATA_SIZE,
37 .icmp_pkt_size = DEFAULT_PING_DATA_SIZE + ICMP_MINLEN, 37 .icmp_pkt_size = DEFAULT_PING_DATA_SIZE + ICMP_MINLEN,
38 .pkt_interval = DEFAULT_PKT_INTERVAL,
39 .target_interval = 0, 38 .target_interval = 0,
40 .number_of_packets = DEFAULT_NUMBER_OF_PACKETS, 39 .number_of_packets = DEFAULT_NUMBER_OF_PACKETS,
41 40
diff --git a/plugins-root/check_icmp.d/config.h b/plugins-root/check_icmp.d/config.h
index 8092e343..1568d6c3 100644
--- a/plugins-root/check_icmp.d/config.h
+++ b/plugins-root/check_icmp.d/config.h
@@ -61,7 +61,6 @@ typedef struct {
61 unsigned long ttl; 61 unsigned long ttl;
62 unsigned short icmp_data_size; 62 unsigned short icmp_data_size;
63 unsigned short icmp_pkt_size; 63 unsigned short icmp_pkt_size;
64 time_t pkt_interval;
65 time_t target_interval; 64 time_t target_interval;
66 unsigned short number_of_packets; 65 unsigned short number_of_packets;
67 66