1 /*
2     pmacct (Promiscuous mode IP Accounting package)
3     pmacct is Copyright (C) 2003-2020 by Paolo Lucente
4 */
5 
6 /*
7     This program is free software; you can redistribute it and/or modify
8     it under the terms of the GNU General Public License as published by
9     the Free Software Foundation; either version 2 of the License, or
10     (at your option) any later version.
11 
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU General Public License for more details.
16 
17     You should have received a copy of the GNU General Public License
18     along with this program; if not, write to the Free Software
19     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 */
21 
22 #include "pmacct.h"
23 #include "nfacctd.h"
24 
25 struct utpl_field *(*get_ext_db_ie_by_type)(struct template_cache_entry *, u_int32_t, u_int16_t, u_int8_t);
26 char sll_mac[2][ETH_ADDR_LEN];
27 struct host_addr mcast_groups[MAX_MCAST_GROUPS];
28 int reload_map, reload_map_exec_plugins, reload_geoipv2_file;
29 int reload_map_bgp_thread, reload_log, reload_log_bgp_thread;
30 int reload_map_bmp_thread, reload_log_bmp_thread;
31 int reload_map_rpki_thread, reload_log_rpki_thread;
32 int reload_map_telemetry_thread, reload_log_telemetry_thread;
33 int reload_map_pmacctd;
34 int print_stats;
35 int reload_log_sf_cnt;
36 int data_plugins, tee_plugins;
37 int collector_port;
38 struct timeval reload_map_tstamp;
39 struct child_ctl2 dump_writers;
40 int debug;
41 struct configuration config; /* global configuration structure */
42 struct plugins_list_entry *plugins_list; /* linked list of each plugin configuration */
43 pid_t failed_plugins[MAX_N_PLUGINS]; /* plugins failed during startup phase */
44 u_char dummy_tlhdr[16], empty_mem_area_256b[SRVBUFLEN];
45 struct pm_pcap_device device;
46 struct pm_pcap_devices devices, bkp_devices;
47 struct pm_pcap_interfaces pm_pcap_if_map, pm_bkp_pcap_if_map;
48 struct pcap_stat ps;
49 struct sigaction sighandler_action;
50 
51 int protocols_number;
52 
53 u_int32_t PdataSz, ChBufHdrSz, CharPtrSz, CounterSz, HostAddrSz;
54 u_int32_t PpayloadSz, PextrasSz, PmsgSz, PvhdrSz, PtLabelTSz;
55 u_int32_t PmLabelTSz;
56 u_int32_t NfHdrV5Sz, NfHdrV9Sz;
57 u_int32_t IpFixHdrSz;
58 u_int32_t NfDataHdrV9Sz, NfTplHdrV9Sz, NfOptTplHdrV9Sz;
59 u_int32_t NfTplFieldV9Sz;
60 u_int32_t NfDataV5Sz;
61 u_int32_t IP4HdrSz, IP4TlSz, IP6HdrSz, IP6AddrSz, IP6TlSz;
62 u_int32_t MyTLHdrSz, TCPFlagOff;
63 u_int32_t SFSampleSz, SFLAddressSz, SFrenormEntrySz;
64 u_int32_t PptrsSz, UDPHdrSz, CSSz, MyTCPHdrSz, IpFlowCmnSz;
65 u_int16_t PbgpSz, PlbgpSz, PnatSz, PmplsSz, PtunSz;
66