Skip to content

Commit

Permalink
Merge pull request #72 from derobert/develop
Browse files Browse the repository at this point in the history
Add a mode to use random bytes instead of NULLs.
  • Loading branch information
schweikert committed May 25, 2015
2 parents d01d280 + 333a16b commit 0706f68
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
1 change: 1 addition & 0 deletions ci/test-2-help.pl
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
-q quiet (don't show per-target/per-ping results)
-Q n same as -q, but show summary every n seconds
-r n number of retries (default 3)
-R random packet data (to foil link data compression)
-s print final stats
-S addr set source address
-t n individual target initial timeout (in millisec) (default 500)
Expand Down
5 changes: 5 additions & 0 deletions doc/fping.pod
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,11 @@ Like B<-q>, but show summary results every n seconds.
Retry limit (default 3). This is the number of times an attempt at pinging
a target will be made, not including the first try.

=item B<-R>

Instead of using all-zeros as the packet data, generate random bytes.
Use to defeat, e.g., link data compression.

=item B<-s>

Print cumulative statistics upon exit.
Expand Down
16 changes: 14 additions & 2 deletions src/fping.c
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@ int elapsed_flag, version_flag, count_flag, loop_flag;
int per_recv_flag, report_all_rtts_flag, name_flag, addr_flag, backoff_flag;
int multif_flag;
int timestamp_flag = 0;
int random_data_flag = 0;
#if defined( DEBUG ) || defined( _DEBUG )
int randomly_lose_flag, sent_times_flag, trace_flag, print_per_system_flag;
int lose_factor;
Expand Down Expand Up @@ -380,7 +381,7 @@ int main( int argc, char **argv )

/* get command line options */

while( ( c = getopt( argc, argv, "gedhlmnqusaAvDz:t:H:i:p:f:r:c:b:C:Q:B:S:I:T:O:" ) ) != EOF )
while( ( c = getopt( argc, argv, "gedhlmnqusaAvDRz:t:H:i:p:f:r:c:b:C:Q:B:S:I:T:O:" ) ) != EOF )
{
switch( c )
{
Expand Down Expand Up @@ -476,6 +477,10 @@ int main( int argc, char **argv )
timestamp_flag = 1;
break;

case 'R':
random_data_flag = 1;
break;

case 'l':
loop_flag = 1;
backoff_flag = 0;
Expand Down Expand Up @@ -1403,7 +1408,13 @@ int send_ping( int s, HOST_ENTRY *h )
if( !buffer )
crash_and_burn( "can't malloc ping packet" );

memset( buffer, 0, ping_pkt_size * sizeof( char ) );
if (random_data_flag) {
for (n = 0; n < ping_pkt_size; ++n) {
buffer[n] = random() & 0xFF;
}
} else {
memset( buffer, 0, ping_pkt_size * sizeof( char ) );
}
icp = ( FPING_ICMPHDR* )buffer;

gettimeofday( &h->last_send_time, &tz );
Expand Down Expand Up @@ -2620,6 +2631,7 @@ void usage(int is_error)
fprintf(out, " -q quiet (don't show per-target/per-ping results)\n" );
fprintf(out, " -Q n same as -q, but show summary every n seconds\n" );
fprintf(out, " -r n number of retries (default %d)\n", DEFAULT_RETRY );
fprintf(out, " -R random packet data (to foil link data compression)\n" );
fprintf(out, " -s print final stats\n" );
fprintf(out, " -S addr set source address\n" );
fprintf(out, " -t n individual target initial timeout (in millisec) (default %d)\n", timeout / 100 );
Expand Down

0 comments on commit 0706f68

Please sign in to comment.