summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins-root/check_icmp.c53
-rw-r--r--plugins-root/check_icmp.d/check_icmp_helpers.c2
-rw-r--r--plugins-root/check_icmp.d/check_icmp_helpers.h4
-rw-r--r--plugins-root/check_icmp.d/config.h4
4 files changed, 31 insertions, 32 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];
diff --git a/plugins-root/check_icmp.d/check_icmp_helpers.c b/plugins-root/check_icmp.d/check_icmp_helpers.c
index 47604952..7a936cc9 100644
--- a/plugins-root/check_icmp.d/check_icmp_helpers.c
+++ b/plugins-root/check_icmp.d/check_icmp_helpers.c
@@ -43,7 +43,7 @@ check_icmp_config check_icmp_config_init() {
43 .need_v4 = false, 43 .need_v4 = false,
44 .need_v6 = false, 44 .need_v6 = false,
45 45
46 .sender_id = {}, 46 .sender_id = 0,
47 47
48 .mode = MODE_RTA, 48 .mode = MODE_RTA,
49 49
diff --git a/plugins-root/check_icmp.d/check_icmp_helpers.h b/plugins-root/check_icmp.d/check_icmp_helpers.h
index 713dd8ce..1b9372ce 100644
--- a/plugins-root/check_icmp.d/check_icmp_helpers.h
+++ b/plugins-root/check_icmp.d/check_icmp_helpers.h
@@ -9,7 +9,7 @@
9#include <netinet/icmp6.h> 9#include <netinet/icmp6.h>
10#include <arpa/inet.h> 10#include <arpa/inet.h>
11 11
12typedef struct rta_host { 12typedef struct ping_target {
13 unsigned short id; /* id in **table, and icmp pkts */ 13 unsigned short id; /* id in **table, and icmp pkts */
14 char *msg; /* icmp error message, if any */ 14 char *msg; /* icmp error message, if any */
15 15
@@ -32,7 +32,7 @@ typedef struct rta_host {
32 32
33 bool found_out_of_order_packets; 33 bool found_out_of_order_packets;
34 34
35 struct rta_host *next; 35 struct ping_target *next;
36} ping_target; 36} ping_target;
37 37
38ping_target ping_target_init(); 38ping_target ping_target_init();
diff --git a/plugins-root/check_icmp.d/config.h b/plugins-root/check_icmp.d/config.h
index 8e9c96b2..97be7fc1 100644
--- a/plugins-root/check_icmp.d/config.h
+++ b/plugins-root/check_icmp.d/config.h
@@ -60,8 +60,8 @@ typedef struct {
60 unsigned long ttl; 60 unsigned long ttl;
61 unsigned short icmp_data_size; 61 unsigned short icmp_data_size;
62 unsigned short icmp_pkt_size; 62 unsigned short icmp_pkt_size;
63 unsigned int pkt_interval; 63 time_t pkt_interval;
64 unsigned int target_interval; 64 time_t target_interval;
65 unsigned short number_of_packets; 65 unsigned short number_of_packets;
66 66
67 char *source_ip; 67 char *source_ip;