From 11a48b4de1e750eccbb8f96c4866d0810c0387f5 Mon Sep 17 00:00:00 2001 From: Eduard Vlad Date: Fri, 31 May 2024 17:23:33 +0200 Subject: [PATCH] add nonzero flag instead of random data for accessing it --- src/fping.c | 10 +++++----- src/fping.h | 2 +- src/socket4.c | 10 +++++++--- src/socket6.c | 7 ++++--- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/fping.c b/src/fping.c index c58e20c..acac062 100644 --- a/src/fping.c +++ b/src/fping.c @@ -357,7 +357,7 @@ int per_recv_flag, report_all_rtts_flag, name_flag, addr_flag, backoff_flag, rdn int multif_flag, timeout_flag, fast_reachable; int outage_flag = 0; int timestamp_flag = 0; -int random_data_flag = 0; +int nonzero_payload_flag = 0; int cumulative_stats_flag = 0; #if defined(DEBUG) || defined(_DEBUG) int randomly_lose_flag, trace_flag, print_per_system_flag; @@ -543,7 +543,7 @@ int main(int argc, char **argv) { "quiet", 'q', OPTPARSE_NONE }, { "squiet", 'Q', OPTPARSE_REQUIRED }, { "retry", 'r', OPTPARSE_REQUIRED }, - { "random", 'R', OPTPARSE_NONE }, + { "nonzero", 'Z', OPTPARSE_NONE }, { "stats", 's', OPTPARSE_NONE }, { "src", 'S', OPTPARSE_REQUIRED }, { "timeout", 't', OPTPARSE_REQUIRED }, @@ -734,8 +734,8 @@ int main(int argc, char **argv) timestamp_flag = 1; break; - case 'R': - random_data_flag = 1; + case 'Z': + nonzero_payload_flag = 1; break; case 'l': @@ -2981,7 +2981,7 @@ void usage(int is_error) fprintf(out, " -p, --period=MSEC interval between ping packets to one target (in ms)\n"); fprintf(out, " (in loop and count modes, default: %.0f ms)\n", perhost_interval / 1e6); fprintf(out, " -r, --retry=N number of retries (default: %d)\n", DEFAULT_RETRY); - fprintf(out, " -R, --random random packet data (to foil link data compression)\n"); + fprintf(out, " -Z, --nonzero non-zero packet data (same payload as ping 0xA ...)\n"); fprintf(out, " -S, --src=IP set source address\n"); fprintf(out, " -t, --timeout=MSEC individual target initial timeout (default: %.0f ms,\n", timeout / 1e6); fprintf(out, " except with -l/-c/-C, where it's the -p period up to 2000 ms)\n"); diff --git a/src/fping.h b/src/fping.h index c0acdfb..d4fc1cc 100644 --- a/src/fping.h +++ b/src/fping.h @@ -22,7 +22,7 @@ extern int trace_flag; void crash_and_burn( char *message ); void errno_crash_and_burn( char *message ); int in_cksum( unsigned short *p, int n ); -extern int random_data_flag; +extern int nonzero_payload_flag; /* socket.c */ int open_ping_socket_ipv4(int *socktype); diff --git a/src/socket4.c b/src/socket4.c index d7c4ae3..8feb12b 100644 --- a/src/socket4.c +++ b/src/socket4.c @@ -133,6 +133,7 @@ int socket_sendto_ping_ipv4(int s, struct sockaddr* saddr, socklen_t saddr_len, { struct icmp* icp; int n; + size_t i; icp = (struct icmp*)ping_buffer_ipv4; @@ -142,9 +143,12 @@ int socket_sendto_ping_ipv4(int s, struct sockaddr* saddr, socklen_t saddr_len, icp->icmp_seq = htons(icmp_seq_nr); icp->icmp_id = icmp_id_nr; - if (random_data_flag) { - for (n = ((char*)&icp->icmp_data - (char*)icp); n < ping_pkt_size_ipv4; ++n) { - ping_buffer_ipv4[n] = random() & 0xFF; + if (nonzero_payload_flag) { + // for (n = ((char*)&icp->icmp_data - (char*)icp); n < ping_pkt_size_ipv4; ++n) { + // ping_buffer_ipv4[n] = random() & 0xFF; + // } + for(n = (char*) &icp->icmp_data - (char*)icp, i = 0xA; n < ping_pkt_size_ipv4; ++n, i += 1) { + ping_buffer_ipv4[n] = i & 0xFF; } } diff --git a/src/socket6.c b/src/socket6.c index 84a84ea..40e5b60 100644 --- a/src/socket6.c +++ b/src/socket6.c @@ -115,6 +115,7 @@ int socket_sendto_ping_ipv6(int s, struct sockaddr* saddr, socklen_t saddr_len, { struct icmp6_hdr* icp; int n; + size_t i; icp = (struct icmp6_hdr*)ping_buffer_ipv6; icp->icmp6_type = ICMP6_ECHO_REQUEST; @@ -122,9 +123,9 @@ int socket_sendto_ping_ipv6(int s, struct sockaddr* saddr, socklen_t saddr_len, icp->icmp6_seq = htons(icmp_seq_nr); icp->icmp6_id = icmp_id_nr; - if (random_data_flag) { - for (n = sizeof(struct icmp6_hdr); n < ping_pkt_size_ipv6; ++n) { - ping_buffer_ipv6[n] = random() & 0xFF; + if (nonzero_payload_flag) { + for (n = sizeof(struct icmp6_hdr), i = 0xA; n < ping_pkt_size_ipv6; ++n, i+=1) { + ping_buffer_ipv6[n] = i & 0xFF; } }