| From 56f8f399a20275a4a73ebc4450bd8eeba7ee1656 Mon Sep 17 00:00:00 2001 |
| From: Tobias Klauser <tklauser@distanz.ch> |
| Date: Wed, 19 Aug 2020 13:13:54 +0200 |
| Subject: [PATCH] mausezahn: move variable definitions from mz.h to mausezahn.c |
| |
| Move variable definitions to avoid "multiple definition of symbol" |
| linker errors with gcc-10. |
| |
| Fixes #216 |
| |
| Signed-off-by: Tobias Klauser <tklauser@distanz.ch> |
| [Retrieved from: |
| https://github.com/netsniff-ng/netsniff-ng/commit/56f8f399a20275a4a73ebc4450bd8eeba7ee1656] |
| Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| --- |
| staging/mausezahn.c | 46 ++++++++++++++++++++++++++++++++++++++++ |
| staging/mz.h | 51 +++++++++++++++++++++++++-------------------- |
| 2 files changed, 74 insertions(+), 23 deletions(-) |
| |
| diff --git a/staging/mausezahn.c b/staging/mausezahn.c |
| index 19d2937a..cae57a1b 100644 |
| --- a/staging/mausezahn.c |
| +++ b/staging/mausezahn.c |
| @@ -32,8 +32,54 @@ |
| #include "die.h" |
| #include "dev.h" |
| |
| +enum operating_modes mode; |
| + |
| +int ipv6_mode; |
| +int quiet; // don't even print 'important standard short messages' |
| +int verbose; // report character |
| +int simulate; // if 1 then don't really send frames |
| + |
| +char path[256]; |
| +char filename[256]; |
| +FILE *fp, *fp2; // global multipurpose file pointer |
| + |
| +long double total_d; |
| +clock_t mz_start, mz_stop; |
| + |
| +int mz_rand; |
| +int bwidth; |
| + |
| +int32_t |
| + jitter[TIME_COUNT_MAX]; |
| + |
| +int |
| + rtp_log, |
| + time0_flag, // If set then time0 has valid data |
| + sqnr0_flag; |
| + |
| +u_int8_t |
| + mz_ssrc[4]; // holds RTP stream identifier for rcv_rtp() |
| + |
| +u_int16_t |
| + sqnr_cur, |
| + sqnr_last, |
| + sqnr_next; |
| + |
| +u_int32_t |
| + gind, // a global index to run through deltaRX, deltaTX, and jitter |
| + gind_max; // the amount of entries used in the (ugly oversized) arrays; per default set to TIME_COUNT |
| + |
| +struct tx_struct tx; // NOTE: tx elements are considered as default values for MOPS |
| + |
| +struct device_struct device_list[MZ_MAX_DEVICES]; |
| + |
| +int device_list_entries; |
| + |
| int verbose_level = 0; |
| |
| +char mz_default_config_path[256]; |
| +char mz_default_log_path[256]; |
| + |
| static const char *short_options = "46hqvVSxra:A:b:B:c:d:E:f:F:l:p:P:R:t:T:M:Q:X:"; |
| |
| static void signal_handler(int number) |
| diff --git a/staging/mz.h b/staging/mz.h |
| index 42e64cfc..33e74e60 100644 |
| --- a/staging/mz.h |
| +++ b/staging/mz.h |
| @@ -108,8 +108,8 @@ static inline void verbose_l2(const char *format, ...) |
| #define IPADDRSIZE 46 |
| |
| |
| -char mz_default_config_path[256]; |
| -char mz_default_log_path[256]; |
| +extern char mz_default_config_path[256]; |
| +extern char mz_default_log_path[256]; |
| |
| |
| struct arp_table_struct { |
| @@ -159,9 +159,11 @@ struct device_struct |
| struct pcap *p_arp; // pcap handle |
| struct arp_table_struct *arp_table; // dedicated ARP table |
| int ps; // packet socket |
| -} device_list[MZ_MAX_DEVICES]; |
| +}; |
| + |
| +extern struct device_struct device_list[MZ_MAX_DEVICES]; |
| |
| -int device_list_entries; |
| +extern int device_list_entries; |
| |
| |
| #pragma pack(1) |
| @@ -270,46 +272,47 @@ enum operating_modes |
| SYSLOG, |
| LLDP, |
| IGMP |
| -} mode; |
| +}; |
| |
| +extern enum operating_modes mode; |
| |
| -int ipv6_mode; |
| -int quiet; // don't even print 'important standard short messages' |
| -int verbose; // report character |
| -int simulate; // if 1 then don't really send frames |
| +extern int ipv6_mode; |
| +extern int quiet; // don't even print 'important standard short messages' |
| +extern int verbose; // report character |
| +extern int simulate; // if 1 then don't really send frames |
| |
| -char path[256]; |
| -char filename[256]; |
| -FILE *fp, *fp2; // global multipurpose file pointer |
| +extern char path[256]; |
| +extern char filename[256]; |
| +extern FILE *fp, *fp2; // global multipurpose file pointer |
| |
| -long double total_d; |
| -clock_t mz_start, mz_stop; |
| +extern long double total_d; |
| +extern clock_t mz_start, mz_stop; |
| |
| -int mz_rand; |
| -int bwidth; |
| +extern int mz_rand; |
| +extern int bwidth; |
| |
| struct mz_timestamp { |
| u_int32_t sec; |
| u_int32_t nsec; |
| }; |
| |
| -int32_t |
| - jitter[TIME_COUNT_MAX]; |
| +extern int32_t |
| + jitter[TIME_COUNT_MAX]; |
| |
| -int |
| +extern int |
| rtp_log, |
| time0_flag, // If set then time0 has valid data |
| sqnr0_flag; |
| |
| -u_int8_t |
| +extern u_int8_t |
| mz_ssrc[4]; // holds RTP stream identifier for rcv_rtp() |
| |
| -u_int16_t |
| +extern u_int16_t |
| sqnr_cur, |
| sqnr_last, |
| sqnr_next; |
| |
| -u_int32_t |
| +extern u_int32_t |
| gind, // a global index to run through deltaRX, deltaTX, and jitter |
| gind_max; // the amount of entries used in the (ugly oversized) arrays; per default set to TIME_COUNT |
| |
| @@ -476,7 +479,9 @@ struct tx_struct |
| rtp_sqnr, |
| rtp_stmp; |
| |
| -} tx; // NOTE: tx elements are considered as default values for MOPS |
| +}; |
| + |
| +extern struct tx_struct tx; // NOTE: tx elements are considered as default values for MOPS |
| |
| // ************************************ |
| // |