summaryrefslogtreecommitdiffstats
path: root/plugins/check_fping.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/check_fping.c')
-rw-r--r--plugins/check_fping.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/plugins/check_fping.c b/plugins/check_fping.c
index f4792f0a..1c227cdb 100644
--- a/plugins/check_fping.c
+++ b/plugins/check_fping.c
@@ -52,6 +52,8 @@ void print_help (void);
52void print_usage (void); 52void print_usage (void);
53 53
54char *server_name = NULL; 54char *server_name = NULL;
55char *sourceip = NULL;
56char *sourceif = NULL;
55int packet_size = PACKET_SIZE; 57int packet_size = PACKET_SIZE;
56int packet_count = PACKET_COUNT; 58int packet_count = PACKET_COUNT;
57int target_timeout = 0; 59int target_timeout = 0;
@@ -96,6 +98,10 @@ main (int argc, char **argv)
96 xasprintf(&option_string, "%s-t %d ", option_string, target_timeout); 98 xasprintf(&option_string, "%s-t %d ", option_string, target_timeout);
97 if (packet_interval) 99 if (packet_interval)
98 xasprintf(&option_string, "%s-p %d ", option_string, packet_interval); 100 xasprintf(&option_string, "%s-p %d ", option_string, packet_interval);
101 if (sourceip)
102 xasprintf(&option_string, "%s-S %s ", option_string, sourceip);
103 if (sourceif)
104 xasprintf(&option_string, "%s-I %s ", option_string, sourceif);
99 105
100#ifdef USE_IPV6 106#ifdef USE_IPV6
101 if (address_family == AF_INET6) 107 if (address_family == AF_INET6)
@@ -242,6 +248,8 @@ process_arguments (int argc, char **argv)
242 int option = 0; 248 int option = 0;
243 static struct option longopts[] = { 249 static struct option longopts[] = {
244 {"hostname", required_argument, 0, 'H'}, 250 {"hostname", required_argument, 0, 'H'},
251 {"sourceip", required_argument, 0, 'S'},
252 {"sourceif", required_argument, 0, 'I'},
245 {"critical", required_argument, 0, 'c'}, 253 {"critical", required_argument, 0, 'c'},
246 {"warning", required_argument, 0, 'w'}, 254 {"warning", required_argument, 0, 'w'},
247 {"bytes", required_argument, 0, 'b'}, 255 {"bytes", required_argument, 0, 'b'},
@@ -270,7 +278,7 @@ process_arguments (int argc, char **argv)
270 } 278 }
271 279
272 while (1) { 280 while (1) {
273 c = getopt_long (argc, argv, "+hVvH:c:w:b:n:T:i:46", longopts, &option); 281 c = getopt_long (argc, argv, "+hVvH:S:c:w:b:n:T:i:I:46", longopts, &option);
274 282
275 if (c == -1 || c == EOF || c == 1) 283 if (c == -1 || c == EOF || c == 1)
276 break; 284 break;
@@ -293,6 +301,14 @@ process_arguments (int argc, char **argv)
293 } 301 }
294 server_name = strscpy (server_name, optarg); 302 server_name = strscpy (server_name, optarg);
295 break; 303 break;
304 case 'S': /* sourceip */
305 if (is_host (optarg) == FALSE) {
306 usage2 (_("Invalid hostname/address"), optarg);
307 }
308 sourceip = strscpy (sourceip, optarg);
309 break;
310 case 'I': /* sourceip */
311 sourceif = strscpy (sourceif, optarg);
296 case '4': /* IPv4 only */ 312 case '4': /* IPv4 only */
297 address_family = AF_INET; 313 address_family = AF_INET;
298 break; 314 break;
@@ -437,9 +453,13 @@ print_help (void)
437 printf (" %s\n", "-n, --number=INTEGER"); 453 printf (" %s\n", "-n, --number=INTEGER");
438 printf (" %s (default: %d)\n", _("number of ICMP packets to send"),PACKET_COUNT); 454 printf (" %s (default: %d)\n", _("number of ICMP packets to send"),PACKET_COUNT);
439 printf (" %s\n", "-T, --target-timeout=INTEGER"); 455 printf (" %s\n", "-T, --target-timeout=INTEGER");
440 printf (" %s (default: fping's default for -t)\n", _("Target timeout (ms)"),PACKET_COUNT); 456 printf (" %s (default: fping's default for -t)\n", _("Target timeout (ms)"));
441 printf (" %s\n", "-i, --interval=INTEGER"); 457 printf (" %s\n", "-i, --interval=INTEGER");
442 printf (" %s (default: fping's default for -p)\n", _("Interval (ms) between sending packets"),PACKET_COUNT); 458 printf (" %s (default: fping's default for -p)\n", _("Interval (ms) between sending packets"));
459 printf (" %s\n", "-S, --sourceip=HOST");
460 printf (" %s\n", _("name or IP Address of sourceip"));
461 printf (" %s\n", "-I, --sourceif=IF");
462 printf (" %s\n", _("source interface name"));
443 printf (UT_VERBOSE); 463 printf (UT_VERBOSE);
444 printf ("\n"); 464 printf ("\n");
445 printf (" %s\n", _("THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel time (ms)")); 465 printf (" %s\n", _("THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel time (ms)"));