Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
71 changes: 24 additions & 47 deletions src/flags.c
Original file line number Diff line number Diff line change
@@ -1,52 +1,29 @@
#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;
}

DebugOptions debug_options_init(void)
{
DebugOptions o = { 0 };

return o;
}
Comment thread
gsnw-sebast marked this conversation as resolved.

Options opt;
DebugOptions dbg_opt;
112 changes: 64 additions & 48 deletions src/flags.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,53 +6,69 @@
/* 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;

/* 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;
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 */
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.

typedef struct {
/* debug switches */
int trace_on;
int randomly_lose_on;
int print_per_system_on;
int lose_factor;
} DebugOptions;


Options options_init(void);
DebugOptions debug_options_init(void);

extern Options opt;
extern DebugOptions dbg_opt;

#endif
Loading
Loading