|
@@ -0,0 +1,184 @@
|
|
|
|
+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
|
|
|
|
+
|
|
|
|
+ // ************************************
|
|
|
|
+ //
|