diff options
author | Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> | 2025-06-23 10:52:56 +0200 |
---|---|---|
committer | Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> | 2025-06-23 10:52:56 +0200 |
commit | b08bafc45cea008abb46e0891c55e7745e117aae (patch) | |
tree | ef30e1d350b2796e44d8e31aa5beeece17b6d73b /plugins-root/check_icmp.c | |
parent | 27d30c3df0904ef4c81ad5adc50fa451777693a9 (diff) | |
download | monitoring-plugins-b08bafc45cea008abb46e0891c55e7745e117aae.tar.gz |
check_icmp: remove paket_interval, was never used anyway
Diffstat (limited to 'plugins-root/check_icmp.c')
-rw-r--r-- | plugins-root/check_icmp.c | 88 |
1 files changed, 37 insertions, 51 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 */ |
153 | static int wait_for_reply(check_icmp_socket_set sockset, time_t time_interval, | 153 | static 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 | ||
159 | typedef struct { | 158 | typedef 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); |
166 | static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr, | 165 | static 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 */ |
172 | static int send_icmp_ping(check_icmp_socket_set sockset, ping_target *host, | 171 | static 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 */ |
201 | static void run_checks(unsigned short icmp_pkt_size, time_t *pkt_interval, time_t *target_interval, | 200 | static 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); |
206 | mp_subcheck evaluate_target(ping_target target, check_icmp_mode_switches modes, | 205 | mp_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 | ||
740 | static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr, | 731 | static 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 | ||
1009 | static void run_checks(unsigned short icmp_pkt_size, time_t *pkt_interval, time_t *target_interval, | 996 | static 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 | */ |
1098 | static int wait_for_reply(check_icmp_socket_set sockset, const time_t time_interval, | 1083 | static 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); |