--- fping-2.4b2/fping.c.orig-specify_interface 2007-01-23 21:38:16.000000000 -0200 +++ fping-2.4b2/fping.c 2007-01-23 21:37:47.000000000 -0200 @@ -103,6 +103,7 @@ /* Linux has bizarre ip.h and ip_icmp.h */ #if defined( __linux__ ) #include "linux.h" +#include #else #include #include @@ -490,7 +491,7 @@ /* get command line options */ - while( ( c = getopt( argc, argv, "gedhlmnqusaAvz:t:i:p:f:r:c:b:C:Q:B:" ) ) != EOF ) + while( ( c = getopt( argc, argv, "gedhlmnqusaAvz:t:i:p:f:r:c:b:C:Q:B:I:" ) ) != EOF ) { switch( c ) { @@ -638,6 +639,16 @@ generate_flag = 1; break; + case 'I': + { + struct ifreq ifr; + strncpy(ifr.ifr_name, optarg, IFNAMSIZ-1); + + if (setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr))) + errno_crash_and_burn( "setsockopt(SO_BINDTODEVICE)" ); + break; + } + default: usage(); break; @@ -2752,6 +2763,7 @@ fprintf( stderr, " -r n number of retries (default %d)\n", retry ); fprintf( stderr, " -s print final stats\n" ); fprintf( stderr, " -t n individual target initial timeout (in millisec) (default %d)\n", timeout / 100 ); + fprintf(stderr," -I intface selects network interface (e.g, \"eth0\")\n"); fprintf( stderr, " -u show targets that are unreachable\n" ); fprintf( stderr, " -v show version\n" ); fprintf( stderr, " targets list of targets to check (if no -f specified)\n" ); --- fping-2.4b2/fping.8.orig-specify_interface 2007-01-23 21:44:47.000000000 -0200 +++ fping-2.4b2/fping.8 2007-01-23 21:57:25.000000000 -0200 @@ -138,6 +138,8 @@ multiplied by the backoff factor. .IP \fB-u\fR 5 Show targets that are unreachable. +.IP \fB-I\fIinterface\fR 5 +Specify interface to use (for example, eth0) .IP \fB-v\fR 5 Print .B fping