summaryrefslogtreecommitdiffstats
path: root/plugins-root/check_icmp.c
diff options
context:
space:
mode:
authorLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2025-05-18 18:46:30 +0200
committerLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2025-05-18 18:46:30 +0200
commitd92bbaef8386e77c00ecdeab9fc722fa4b9106b0 (patch)
treed088503ba895da98cbf8558fa1b95951984ed59b /plugins-root/check_icmp.c
parentb5de682309589ddb230e04beaaa54d74f2fe70d5 (diff)
downloadmonitoring-plugins-d92bbaef8386e77c00ecdeab9fc722fa4b9106b0.tar.gz
Some more fixes
Diffstat (limited to 'plugins-root/check_icmp.c')
-rw-r--r--plugins-root/check_icmp.c53
1 files changed, 26 insertions, 27 deletions
diff --git a/plugins-root/check_icmp.c b/plugins-root/check_icmp.c
index d4e55b0d..43eae276 100644
--- a/plugins-root/check_icmp.c
+++ b/plugins-root/check_icmp.c
@@ -147,8 +147,8 @@ static void set_source_ip(char *arg, int icmp_sock, sa_family_t addr_family);
147 147
148/* Receiving data */ 148/* Receiving data */
149static int wait_for_reply(check_icmp_socket_set sockset, time_t time_interval, 149static int wait_for_reply(check_icmp_socket_set sockset, time_t time_interval,
150 unsigned short icmp_pkt_size, unsigned int *pkt_interval, 150 unsigned short icmp_pkt_size, time_t *pkt_interval,
151 unsigned int *target_interval, uint16_t sender_id, ping_target **table, 151 time_t *target_interval, uint16_t sender_id, ping_target **table,
152 unsigned short packets, unsigned short number_of_targets, 152 unsigned short packets, unsigned short number_of_targets,
153 check_icmp_state *program_state); 153 check_icmp_state *program_state);
154 154
@@ -160,12 +160,12 @@ static recvfrom_wto_wrapper recvfrom_wto(check_icmp_socket_set sockset, void *bu
160 struct sockaddr *saddr, time_t *timeout, 160 struct sockaddr *saddr, time_t *timeout,
161 struct timeval *received_timestamp); 161 struct timeval *received_timestamp);
162static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr, 162static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr,
163 unsigned int *pkt_interval, unsigned int *target_interval, 163 time_t *pkt_interval, time_t *target_interval, uint16_t sender_id,
164 uint16_t sender_id, ping_target **table, unsigned short packets, 164 ping_target **table, unsigned short packets,
165 unsigned short number_of_targets, check_icmp_state *program_state); 165 unsigned short number_of_targets, check_icmp_state *program_state);
166 166
167/* Sending data */ 167/* Sending data */
168static int send_icmp_ping(check_icmp_socket_set socket, ping_target *host, 168static int send_icmp_ping(check_icmp_socket_set sockset, ping_target *host,
169 unsigned short icmp_pkt_size, uint16_t sender_id, 169 unsigned short icmp_pkt_size, uint16_t sender_id,
170 check_icmp_state *program_state); 170 check_icmp_state *program_state);
171 171
@@ -194,12 +194,11 @@ static parse_threshold2_helper_wrapper parse_threshold2_helper(char *threshold_s
194 threshold_mode mode); 194 threshold_mode mode);
195 195
196/* main test function */ 196/* main test function */
197static void run_checks(unsigned short icmp_pkt_size, unsigned int *pkt_interval, 197static void run_checks(unsigned short icmp_pkt_size, time_t *pkt_interval, time_t *target_interval,
198 unsigned int *target_interval, uint16_t sender_id, 198 uint16_t sender_id, check_icmp_execution_mode mode,
199 check_icmp_execution_mode mode, unsigned int max_completion_time, 199 unsigned int max_completion_time, struct timeval prog_start,
200 struct timeval prog_start, ping_target **table, unsigned short packets, 200 ping_target **table, unsigned short packets, check_icmp_socket_set sockset,
201 check_icmp_socket_set sockset, unsigned short number_of_targets, 201 unsigned short number_of_targets, check_icmp_state *program_state);
202 check_icmp_state *program_state);
203mp_subcheck evaluate_target(ping_target target, check_icmp_mode_switches modes, 202mp_subcheck evaluate_target(ping_target target, check_icmp_mode_switches modes,
204 check_icmp_threshold warn, check_icmp_threshold crit); 203 check_icmp_threshold warn, check_icmp_threshold crit);
205 204
@@ -683,7 +682,7 @@ static const char *get_icmp_error_msg(unsigned char icmp_type, unsigned char icm
683} 682}
684 683
685static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr, 684static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr,
686 unsigned int *pkt_interval, unsigned int *target_interval, 685 time_t *pkt_interval, time_t *target_interval,
687 const uint16_t sender_id, ping_target **table, unsigned short packets, 686 const uint16_t sender_id, ping_target **table, unsigned short packets,
688 const unsigned short number_of_targets, 687 const unsigned short number_of_targets,
689 check_icmp_state *program_state) { 688 check_icmp_state *program_state) {
@@ -899,7 +898,7 @@ int main(int argc, char **argv) {
899 struct timeval prog_start; 898 struct timeval prog_start;
900 gettimeofday(&prog_start, NULL); 899 gettimeofday(&prog_start, NULL);
901 900
902 unsigned int max_completion_time = 901 time_t max_completion_time =
903 ((config.number_of_targets * config.number_of_packets * config.pkt_interval) + 902 ((config.number_of_targets * config.number_of_packets * config.pkt_interval) +
904 (config.number_of_targets * config.target_interval)) + 903 (config.number_of_targets * config.target_interval)) +
905 (config.number_of_targets * config.number_of_packets * config.crit.rta) + config.crit.rta; 904 (config.number_of_targets * config.number_of_packets * config.crit.rta) + config.crit.rta;
@@ -916,15 +915,15 @@ int main(int argc, char **argv) {
916 915
917 if (debug) { 916 if (debug) {
918 if (max_completion_time > (timeout * 1000000)) { 917 if (max_completion_time > (timeout * 1000000)) {
919 printf("max_completion_time: %u timeout: %u\n", max_completion_time, timeout); 918 printf("max_completion_time: %ld timeout: %u\n", max_completion_time, timeout);
920 printf("Timeout must be at least %u\n", (max_completion_time / 1000000) + 1); 919 printf("Timeout must be at least %ld\n", (max_completion_time / 1000000) + 1);
921 } 920 }
922 } 921 }
923 922
924 if (debug) { 923 if (debug) {
925 printf("crit = {%u, %u%%}, warn = {%u, %u%%}\n", config.crit.rta, config.crit.pl, 924 printf("crit = {%u, %u%%}, warn = {%u, %u%%}\n", config.crit.rta, config.crit.pl,
926 config.warn.rta, config.warn.pl); 925 config.warn.rta, config.warn.pl);
927 printf("pkt_interval: %u target_interval: %u\n", config.pkt_interval, 926 printf("pkt_interval: %ld target_interval: %ld\n", config.pkt_interval,
928 config.target_interval); 927 config.target_interval);
929 printf("icmp_pkt_size: %u timeout: %u\n", config.icmp_pkt_size, timeout); 928 printf("icmp_pkt_size: %u timeout: %u\n", config.icmp_pkt_size, timeout);
930 } 929 }
@@ -949,8 +948,8 @@ int main(int argc, char **argv) {
949 target_index++; 948 target_index++;
950 } 949 }
951 950
952 unsigned int pkt_interval = config.pkt_interval; 951 time_t pkt_interval = config.pkt_interval;
953 unsigned int target_interval = config.target_interval; 952 time_t target_interval = config.target_interval;
954 953
955 check_icmp_state program_state = check_icmp_state_init(); 954 check_icmp_state program_state = check_icmp_state_init();
956 955
@@ -975,12 +974,12 @@ int main(int argc, char **argv) {
975 mp_exit(overall); 974 mp_exit(overall);
976} 975}
977 976
978static void run_checks(unsigned short icmp_pkt_size, unsigned int *pkt_interval, 977static void run_checks(unsigned short icmp_pkt_size, time_t *pkt_interval, time_t *target_interval,
979 unsigned int *target_interval, const uint16_t sender_id, 978 const uint16_t sender_id, const check_icmp_execution_mode mode,
980 const check_icmp_execution_mode mode, const unsigned int max_completion_time, 979 const unsigned int max_completion_time, const struct timeval prog_start,
981 const struct timeval prog_start, ping_target **table, 980 ping_target **table, const unsigned short packets,
982 const unsigned short packets, const check_icmp_socket_set sockset, 981 const check_icmp_socket_set sockset, const unsigned short number_of_targets,
983 const unsigned short number_of_targets, check_icmp_state *program_state) { 982 check_icmp_state *program_state) {
984 /* this loop might actually violate the pkt_interval or target_interval 983 /* this loop might actually violate the pkt_interval or target_interval
985 * settings, but only if there aren't any packets on the wire which 984 * settings, but only if there aren't any packets on the wire which
986 * indicates that the target can handle an increased packet rate */ 985 * indicates that the target can handle an increased packet rate */
@@ -1065,8 +1064,8 @@ static void run_checks(unsigned short icmp_pkt_size, unsigned int *pkt_interval,
1065 * icmp echo reply : the rest 1064 * icmp echo reply : the rest
1066 */ 1065 */
1067static int wait_for_reply(check_icmp_socket_set sockset, const time_t time_interval, 1066static int wait_for_reply(check_icmp_socket_set sockset, const time_t time_interval,
1068 unsigned short icmp_pkt_size, unsigned int *pkt_interval, 1067 unsigned short icmp_pkt_size, time_t *pkt_interval,
1069 unsigned int *target_interval, uint16_t sender_id, ping_target **table, 1068 time_t *target_interval, uint16_t sender_id, ping_target **table,
1070 const unsigned short packets, const unsigned short number_of_targets, 1069 const unsigned short packets, const unsigned short number_of_targets,
1071 check_icmp_state *program_state) { 1070 check_icmp_state *program_state) {
1072 union icmp_packet packet; 1071 union icmp_packet packet;
@@ -1568,7 +1567,7 @@ static time_t get_timevaldiff_to_now(struct timeval earlier) {
1568} 1567}
1569 1568
1570static add_target_ip_wrapper add_target_ip(struct sockaddr_storage address) { 1569static add_target_ip_wrapper add_target_ip(struct sockaddr_storage address) {
1571 assert((address.ss_family == AF_INET) || (address.ss_family == AF_INET6)); 1570 assert((address.ss_family == AF_INET) || (address.ss_family == AF_INET6));
1572 1571
1573 if (debug) { 1572 if (debug) {
1574 char straddr[INET6_ADDRSTRLEN]; 1573 char straddr[INET6_ADDRSTRLEN];