summaryrefslogtreecommitdiffstats
path: root/plugins-root/check_icmp.c
diff options
context:
space:
mode:
authorLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2025-05-16 09:07:35 +0200
committerLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2025-05-16 12:46:56 +0200
commit6b86583e0d3db92cc5e87af97f4d204bc0e797f3 (patch)
tree7d92772168f9e188cf8832cead64be6971da1afc /plugins-root/check_icmp.c
parent9ebde5eb09dbf4b869ffd6f501d007b9b264e1a9 (diff)
downloadmonitoring-plugins-6b86583e0d3db92cc5e87af97f4d204bc0e797f3.tar.gz
WIP - check_icmp refactor 5
Diffstat (limited to 'plugins-root/check_icmp.c')
-rw-r--r--plugins-root/check_icmp.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/plugins-root/check_icmp.c b/plugins-root/check_icmp.c
index 94f20eec..8565f32d 100644
--- a/plugins-root/check_icmp.c
+++ b/plugins-root/check_icmp.c
@@ -133,12 +133,12 @@ void print_help();
133void print_usage(void); 133void print_usage(void);
134 134
135/* Time related */ 135/* Time related */
136static unsigned int get_timevar(const char * /*str*/); 136static unsigned int get_timevar(const char *str);
137static time_t get_timevaldiff(struct timeval earlier, struct timeval later); 137static time_t get_timevaldiff(struct timeval earlier, struct timeval later);
138static time_t get_timevaldiff_to_now(struct timeval earlier); 138static time_t get_timevaldiff_to_now(struct timeval earlier);
139 139
140static in_addr_t get_ip_address(const char * /*ifname*/); 140static in_addr_t get_ip_address(const char *ifname);
141static void set_source_ip(char * /*arg*/, int icmp_sock); 141static void set_source_ip(char *arg, int icmp_sock);
142 142
143/* Receiving data */ 143/* Receiving data */
144static int wait_for_reply(int socket, time_t time_interval, unsigned short icmp_pkt_size, 144static int wait_for_reply(int socket, time_t time_interval, unsigned short icmp_pkt_size,
@@ -146,9 +146,9 @@ static int wait_for_reply(int socket, time_t time_interval, unsigned short icmp_
146 uint16_t sender_id, ping_target **table, unsigned short packets, 146 uint16_t sender_id, ping_target **table, unsigned short packets,
147 unsigned short number_of_targets, check_icmp_state *program_state); 147 unsigned short number_of_targets, check_icmp_state *program_state);
148 148
149static ssize_t recvfrom_wto(int /*sock*/, void * /*buf*/, unsigned int /*len*/, 149static ssize_t recvfrom_wto(int sock, void *buf, unsigned int len, struct sockaddr *saddr,
150 struct sockaddr * /*saddr*/, time_t *timeout, struct timeval * /*tv*/); 150 time_t *timeout, struct timeval *received_timestamp);
151static int handle_random_icmp(unsigned char * /*packet*/, struct sockaddr_storage * /*addr*/, 151static int handle_random_icmp(unsigned char *packet, struct sockaddr_storage *addr,
152 unsigned int *pkt_interval, unsigned int *target_interval, 152 unsigned int *pkt_interval, unsigned int *target_interval,
153 uint16_t sender_id, ping_target **table, unsigned short packets, 153 uint16_t sender_id, ping_target **table, unsigned short packets,
154 unsigned short number_of_targets, check_icmp_state *program_state); 154 unsigned short number_of_targets, check_icmp_state *program_state);
@@ -195,18 +195,23 @@ static void run_checks(bool order_mode, bool mos_mode, bool rta_mode, bool pl_mo
195/* Target aquisition */ 195/* Target aquisition */
196typedef struct { 196typedef struct {
197 int error_code; 197 int error_code;
198 check_icmp_target_container host;
199} add_host_wrapper;
200static add_host_wrapper add_host(char *arg, check_icmp_execution_mode mode);
201typedef struct {
202 int error_code;
198 ping_target *targets; 203 ping_target *targets;
199 unsigned int number_of_targets; 204 unsigned int number_of_targets;
200} add_target_wrapper; 205} add_target_wrapper;
201static add_target_wrapper add_target(char * /*arg*/, int mode); 206static add_target_wrapper add_target(char *arg, check_icmp_execution_mode mode);
202 207
203typedef struct { 208typedef struct {
204 int error_code; 209 int error_code;
205 ping_target *target; 210 ping_target *target;
206} add_target_ip_wrapper; 211} add_target_ip_wrapper;
207static add_target_ip_wrapper add_target_ip(char * /*arg*/, struct sockaddr_storage * /*in*/); 212static add_target_ip_wrapper add_target_ip(char *arg, struct sockaddr_storage *address);
208 213
209static void parse_address(struct sockaddr_storage * /*addr*/, char * /*address*/, socklen_t size); 214static void parse_address(struct sockaddr_storage *addr, char *address, socklen_t size);
210 215
211static unsigned short icmp_checksum(uint16_t *packet, size_t packet_size); 216static unsigned short icmp_checksum(uint16_t *packet, size_t packet_size);
212 217
@@ -218,7 +223,7 @@ static void finish(int /*sig*/, bool order_mode, bool mos_mode, bool rta_mode, b
218 ping_target *target_list); 223 ping_target *target_list);
219 224
220/* Error exit */ 225/* Error exit */
221static void crash(const char * /*fmt*/, ...); 226static void crash(const char *fmt, ...);
222 227
223/** global variables **/ 228/** global variables **/
224static int debug = 0; 229static int debug = 0;
@@ -1852,7 +1857,7 @@ static add_target_ip_wrapper add_target_ip(char *arg, struct sockaddr_storage *a
1852} 1857}
1853 1858
1854/* wrapper for add_target_ip */ 1859/* wrapper for add_target_ip */
1855static add_target_wrapper add_target(char *arg, const int mode) { 1860static add_target_wrapper add_target(char *arg, const check_icmp_execution_mode mode) {
1856 struct sockaddr_storage address_storage; 1861 struct sockaddr_storage address_storage;
1857 struct sockaddr_in *sin; 1862 struct sockaddr_in *sin;
1858 struct sockaddr_in6 *sin6; 1863 struct sockaddr_in6 *sin6;