Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Next
- Move option parsing to a separate file fping.c and fping.h (#458, thanks @gsnw-sebast)
- Add IBM i PASE detection (#466, thanks @acerbis and @gsnw-sebast)
- ci: Update autoconf to version 2.73 (#467, thanks @gsnw-sebast)
- Options variables converted to a structure (#469, thanks @gsnw-sebast)

fping 5.5 (2025-12-31)
======================
Expand Down
63 changes: 16 additions & 47 deletions src/flags.c
Original file line number Diff line number Diff line change
@@ -1,52 +1,21 @@
#include "flags.h"
#include "options.h"

#include <stdint.h>
Options options_init(void)
{
Options o = { 0 };

/* options with values */
/* all time-related values are int64_t nanoseconds */
unsigned int opt_retry = DEFAULT_RETRY;
int64_t opt_timeout = (int64_t)DEFAULT_TIMEOUT * 1000000;
int64_t opt_seqmap_timeout = (int64_t)DEFAULT_SEQMAP_TIMEOUT * 1000000;
int64_t opt_interval = (int64_t)DEFAULT_INTERVAL * 1000000;
int64_t opt_perhost_interval = (int64_t)DEFAULT_PERHOST_INTERVAL * 1000000;
float opt_backoff = DEFAULT_BACKOFF_FACTOR;
unsigned int opt_ping_data_size = DEFAULT_PING_DATA_SIZE;
unsigned int opt_count = 1;
unsigned int opt_min_reachable = 0;
unsigned int opt_ttl = 0;
/* options with values — set non-zero defaults */
o.retry = DEFAULT_RETRY;
o.timeout = (int64_t)DEFAULT_TIMEOUT * 1000000;
o.seqmap_timeout = (int64_t)DEFAULT_SEQMAP_TIMEOUT * 1000000;
o.interval = (int64_t)DEFAULT_INTERVAL * 1000000;
o.perhost_interval = (int64_t)DEFAULT_PERHOST_INTERVAL * 1000000;
o.backoff = DEFAULT_BACKOFF_FACTOR;
o.ping_data_size = DEFAULT_PING_DATA_SIZE;
o.count = 1;

/* switches 0 = off 1 = on */
int opt_version_on = 0;
int opt_verbose_on = 0;
int opt_unreachable_on = 0;
int opt_alive_on = 0;
int opt_quiet_on = 0;
int opt_elapsed_on = 0;
int opt_stats_on = 0;
int opt_cumulative_stats_on = 0;
int opt_generate_on = 0; /* flag for IP list generation */
int opt_count_on = 0;
int opt_loop_on = 0;
int opt_print_netdata_on = 0;
int opt_print_json_on = 0;
int opt_print_tos_on = 0;
int opt_print_ttl_on = 0;
int opt_per_recv_on = 0;
int opt_report_all_rtts_on = 0;
int opt_name_on = 0;
int opt_addr_on = 0;
int opt_rdns_on = 0;
int opt_backoff_on = 0;
int opt_multif_on = 0;
int opt_timeout_on = 0;
int opt_fast_reachable_on = 0;
int opt_outage_on = 0;
int opt_random_data_on = 0;
int opt_check_source_on = 0;
int opt_size_on = 0;
int opt_oiface_on = 0;
int opt_bindiface_on = 0;
int opt_timestamp_on = 0;
int opt_timestamp_format = 0;
int opt_icmp_request_typ = 0;
return o;
}

Options opt;
99 changes: 52 additions & 47 deletions src/flags.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,53 +6,58 @@
/* sized so as to be like traditional ping */
#define DEFAULT_PING_DATA_SIZE 56

/* options with values */
/* all time-related values are int64_t nanoseconds */
extern unsigned int opt_retry;
extern int64_t opt_timeout;
extern int64_t opt_seqmap_timeout;
extern int64_t opt_interval;
extern int64_t opt_perhost_interval;
extern float opt_backoff;
extern unsigned int opt_ping_data_size;
extern unsigned int opt_count;
extern unsigned int opt_min_reachable;
extern unsigned int opt_ttl;
typedef struct {
/* options with values */
/* all time-related values are int64_t nanoseconds */
unsigned int retry;
int64_t timeout;
int64_t seqmap_timeout;
int64_t interval;
int64_t perhost_interval;
float backoff;
unsigned int ping_data_size;
unsigned int count;
unsigned int min_reachable;
unsigned int ttl;

/* switches 0 = off 1 = on */
extern int opt_print_json_on;
extern int opt_version_on;
extern int opt_verbose_on;
extern int opt_unreachable_on;
extern int opt_alive_on;
extern int opt_quiet_on;
extern int opt_elapsed_on;
extern int opt_stats_on;
extern int opt_cumulative_stats_on;
extern int opt_generate_on;
extern int opt_count_on;
extern int opt_loop_on;
extern int opt_print_netdata_on;
extern int opt_print_json_on;
extern int opt_print_tos_on;
extern int opt_print_ttl_on;
extern int opt_per_recv_on;
extern int opt_report_all_rtts_on;
extern int opt_name_on;
extern int opt_addr_on;
extern int opt_rdns_on;
extern int opt_backoff_on;
extern int opt_multif_on;
extern int opt_timeout_on;
extern int opt_fast_reachable_on;
extern int opt_outage_on;
extern int opt_random_data_on;
extern int opt_check_source_on;
extern int opt_size_on;
extern int opt_oiface_on;
extern int opt_bindiface_on;
extern int opt_timestamp_on;
extern int opt_timestamp_format;
extern int opt_icmp_request_typ;
/* switches: 0 = off, 1 = on */
int version_on;
int verbose_on;
int unreachable_on;
int alive_on;
int quiet_on;
int elapsed_on;
int stats_on;
int cumulative_stats_on;
int generate_on;
int count_on;
int loop_on;
int print_netdata_on;
int print_json_on;
int print_tos_on;
int print_ttl_on;
int per_recv_on;
int report_all_rtts_on;
int name_on;
int addr_on;
int rdns_on;
int backoff_on;
int multif_on;
int timeout_on;
int fast_reachable_on;
int outage_on;
int random_data_on;
int check_source_on;
int size_on;
int oiface_on;
int bindiface_on;
int timestamp_on;
int timestamp_format;
int icmp_request_typ;
} Options;
Comment thread
gsnw-sebast marked this conversation as resolved.

Options options_init(void);

extern Options opt;

#endif
Loading
Loading