double latency_total_square;
} ping_context_t;
-static double opt_interval = 1.0;
-static int opt_addrfamily = PING_DEF_AF;
-static int opt_count = -1;
+static double opt_interval = 1.0;
+static int opt_addrfamily = PING_DEF_AF;
+static char *opt_srcaddr = NULL;
+static int opt_count = -1;
void sigint_handler (int signal)
{
while (1)
{
- optchar = getopt (argc, argv, "46c:hi:");
+ optchar = getopt (argc, argv, "46c:hi:I:");
if (optchar == -1)
break;
opt_interval = new_interval;
}
break;
+ case 'I':
+ {
+ if (opt_srcaddr != NULL)
+ free (opt_srcaddr);
+ opt_srcaddr = strdup (optarg);
+ }
+ break;
case 'h':
default:
if (opt_addrfamily != PING_DEF_AF)
ping_setopt (ping, PING_OPT_AF, (void *) &opt_addrfamily);
+ if (opt_srcaddr != NULL)
+ {
+ if (ping_setopt (ping, PING_OPT_SOURCE, (void *) opt_srcaddr) != 0)
+ {
+ fprintf (stderr, "Setting source address failed: %s\n",
+ ping_get_error (ping));
+ }
+ }
+
for (i = optind; i < argc; i++)
{
if (ping_host_add (ping, argv[i]) < 0)