aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/examples/sample-plugin/sample/sample.h2
-rw-r--r--src/examples/srv6-sample-localsid/srv6_localsid_sample.h2
-rw-r--r--src/plugins/dpdk/device/dpdk.h2
-rwxr-xr-xsrc/plugins/dpdk/device/init.c1
-rw-r--r--src/plugins/dpdk/ipsec/ipsec.c2
-rw-r--r--src/plugins/dpdk/ipsec/ipsec.h2
-rw-r--r--src/plugins/gtpu/gtpu.h2
-rw-r--r--src/plugins/ioam/ip6/ioam_cache.c2
-rw-r--r--src/plugins/ioam/ip6/ioam_cache.h2
-rw-r--r--src/plugins/ixge/ixge.h4
-rw-r--r--src/plugins/sixrd/sixrd.c2
-rw-r--r--src/plugins/sixrd/sixrd.h2
-rw-r--r--src/vat/plugin.h2
-rw-r--r--src/vlib/lex.h2
-rw-r--r--src/vnet/cdp/cdp_node.h2
-rw-r--r--src/vnet/classify/flow_classify.c2
-rw-r--r--src/vnet/classify/flow_classify.h2
-rw-r--r--src/vnet/classify/policer_classify.c2
-rw-r--r--src/vnet/classify/policer_classify.h2
-rw-r--r--src/vnet/cop/cop.h2
-rw-r--r--src/vnet/devices/af_packet/af_packet.c2
-rw-r--r--src/vnet/devices/af_packet/af_packet.h2
-rw-r--r--src/vnet/devices/netmap/netmap.c2
-rw-r--r--src/vnet/devices/netmap/netmap.h2
-rw-r--r--src/vnet/devices/ssvm/ssvm_eth.h2
-rw-r--r--src/vnet/dhcp/client.h2
-rw-r--r--src/vnet/ethernet/ethernet.h2
-rw-r--r--src/vnet/geneve/geneve.h2
-rw-r--r--src/vnet/gre/gre.h2
-rw-r--r--src/vnet/ip/ip4_source_and_port_range_check.c2
-rw-r--r--src/vnet/ip/ip_source_and_port_range_check.h2
-rwxr-xr-xsrc/vnet/ip/ping.c2
-rw-r--r--src/vnet/ip/ping.h2
-rw-r--r--src/vnet/ipsec-gre/ipsec_gre.h2
-rw-r--r--src/vnet/ipsec/esp.h2
-rw-r--r--src/vnet/ipsec/esp_encrypt.c1
-rw-r--r--src/vnet/ipsec/ikev2.c2
-rw-r--r--src/vnet/ipsec/ikev2_priv.h2
-rw-r--r--src/vnet/ipsec/ipsec.c2
-rw-r--r--src/vnet/ipsec/ipsec.h2
-rw-r--r--src/vnet/l2/l2_learn.c2
-rw-r--r--src/vnet/l2/l2_learn.h2
-rw-r--r--src/vnet/l2/l2_output.h2
-rw-r--r--src/vnet/l2tp/l2tp.h2
-rw-r--r--src/vnet/lawful-intercept/lawful_intercept.c2
-rw-r--r--src/vnet/lawful-intercept/lawful_intercept.h2
-rw-r--r--src/vnet/lisp-gpe/lisp_gpe.h2
-rw-r--r--src/vnet/map/map.c2
-rw-r--r--src/vnet/map/map.h2
-rw-r--r--src/vnet/misc.c1
-rw-r--r--src/vnet/policer/policer.c2
-rw-r--r--src/vnet/policer/policer.h2
-rw-r--r--src/vnet/snap/snap.h2
-rw-r--r--src/vnet/span/span.c2
-rw-r--r--src/vnet/span/span.h2
-rw-r--r--src/vnet/srp/node.c2
-rw-r--r--src/vnet/srp/srp.h2
-rw-r--r--src/vnet/tcp/builtin_client.c2
-rw-r--r--src/vnet/tcp/builtin_client.h2
-rw-r--r--src/vnet/tcp/builtin_proxy.h2
-rw-r--r--src/vnet/vnet.h4
-rw-r--r--src/vnet/vxlan-gpe/vxlan_gpe.h2
-rw-r--r--src/vnet/vxlan/vxlan.h2
-rw-r--r--src/vpp/api/plugin.h2
-rw-r--r--src/vpp/stats/stats.h2
65 files changed, 85 insertions, 46 deletions
diff --git a/src/examples/sample-plugin/sample/sample.h b/src/examples/sample-plugin/sample/sample.h
index c9778f74298..a5dd5bf9803 100644
--- a/src/examples/sample-plugin/sample/sample.h
+++ b/src/examples/sample-plugin/sample/sample.h
@@ -31,7 +31,7 @@ typedef struct {
vnet_main_t * vnet_main;
} sample_main_t;
-sample_main_t sample_main;
+extern sample_main_t sample_main;
extern vlib_node_registration_t sample_node;
diff --git a/src/examples/srv6-sample-localsid/srv6_localsid_sample.h b/src/examples/srv6-sample-localsid/srv6_localsid_sample.h
index ef74ea3e5a6..16494497ccc 100644
--- a/src/examples/srv6-sample-localsid/srv6_localsid_sample.h
+++ b/src/examples/srv6-sample-localsid/srv6_localsid_sample.h
@@ -48,7 +48,7 @@ typedef struct {
u32 fib_table; /* Stupid index used as an example.. */
} srv6_localsid_sample_per_sid_memory_t ;
-srv6_localsid_sample_main_t srv6_localsid_sample_main;
+extern srv6_localsid_sample_main_t srv6_localsid_sample_main;
format_function_t format_srv6_localsid_sample;
unformat_function_t unformat_srv6_localsid_sample;
diff --git a/src/plugins/dpdk/device/dpdk.h b/src/plugins/dpdk/device/dpdk.h
index 9762c7137f5..a0c57ea21b3 100644
--- a/src/plugins/dpdk/device/dpdk.h
+++ b/src/plugins/dpdk/device/dpdk.h
@@ -332,7 +332,7 @@ typedef struct
} dpdk_config_main_t;
-dpdk_config_main_t dpdk_config_main;
+extern dpdk_config_main_t dpdk_config_main;
typedef struct
{
diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c
index e94d2fa8588..9e7bb75d6f3 100755
--- a/src/plugins/dpdk/device/init.c
+++ b/src/plugins/dpdk/device/init.c
@@ -37,6 +37,7 @@
#include <dpdk/device/dpdk_priv.h>
dpdk_main_t dpdk_main;
+dpdk_config_main_t dpdk_config_main;
#define LINK_STATE_ELOGS 0
diff --git a/src/plugins/dpdk/ipsec/ipsec.c b/src/plugins/dpdk/ipsec/ipsec.c
index 4bae8c1b0f4..6aa5fae8b26 100644
--- a/src/plugins/dpdk/ipsec/ipsec.c
+++ b/src/plugins/dpdk/ipsec/ipsec.c
@@ -21,6 +21,8 @@
#include <dpdk/device/dpdk.h>
#include <dpdk/ipsec/ipsec.h>
+dpdk_crypto_main_t dpdk_crypto_main;
+
#define EMPTY_STRUCT {0}
static void
diff --git a/src/plugins/dpdk/ipsec/ipsec.h b/src/plugins/dpdk/ipsec/ipsec.h
index 98e5ad53acb..22890628ec6 100644
--- a/src/plugins/dpdk/ipsec/ipsec.h
+++ b/src/plugins/dpdk/ipsec/ipsec.h
@@ -144,7 +144,7 @@ typedef struct
u8 enabled;
} dpdk_crypto_main_t;
-dpdk_crypto_main_t dpdk_crypto_main;
+extern dpdk_crypto_main_t dpdk_crypto_main;
static const u8 pad_data[] =
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0 };
diff --git a/src/plugins/gtpu/gtpu.h b/src/plugins/gtpu/gtpu.h
index 744d21d4266..b1e677d4f29 100644
--- a/src/plugins/gtpu/gtpu.h
+++ b/src/plugins/gtpu/gtpu.h
@@ -228,7 +228,7 @@ typedef struct
vnet_main_t *vnet_main;
} gtpu_main_t;
-gtpu_main_t gtpu_main;
+extern gtpu_main_t gtpu_main;
extern vlib_node_registration_t gtpu4_input_node;
extern vlib_node_registration_t gtpu6_input_node;
diff --git a/src/plugins/ioam/ip6/ioam_cache.c b/src/plugins/ioam/ip6/ioam_cache.c
index 4e147da34dc..627f8b65d13 100644
--- a/src/plugins/ioam/ip6/ioam_cache.c
+++ b/src/plugins/ioam/ip6/ioam_cache.c
@@ -55,6 +55,8 @@
#define REPLY_MSG_ID_BASE cm->msg_id_base
#include <vlibapi/api_helper_macros.h>
+ioam_cache_main_t ioam_cache_main;
+
/* List of message types that this plugin understands */
#define foreach_ioam_cache_plugin_api_msg \
_(IOAM_CACHE_IP6_ENABLE_DISABLE, ioam_cache_ip6_enable_disable)
diff --git a/src/plugins/ioam/ip6/ioam_cache.h b/src/plugins/ioam/ip6/ioam_cache.h
index 25a8fb65729..338ed9828ee 100644
--- a/src/plugins/ioam/ip6/ioam_cache.h
+++ b/src/plugins/ioam/ip6/ioam_cache.h
@@ -203,7 +203,7 @@ typedef struct
u32 cleanup_process_node_index;
} ioam_cache_main_t;
-ioam_cache_main_t ioam_cache_main;
+extern ioam_cache_main_t ioam_cache_main;
extern vlib_node_registration_t ioam_cache_node;
extern vlib_node_registration_t ioam_cache_ts_node;
diff --git a/src/plugins/ixge/ixge.h b/src/plugins/ixge/ixge.h
index 42c1bfa5c9b..a87af1ab04b 100644
--- a/src/plugins/ixge/ixge.h
+++ b/src/plugins/ixge/ixge.h
@@ -1270,8 +1270,8 @@ typedef struct
vlib_physmem_region_index_t physmem_region;
} ixge_main_t;
-ixge_main_t ixge_main;
-vnet_device_class_t ixge_device_class;
+extern ixge_main_t ixge_main;
+extern vnet_device_class_t ixge_device_class;
typedef enum
{
diff --git a/src/plugins/sixrd/sixrd.c b/src/plugins/sixrd/sixrd.c
index 983875257e3..ee198f21004 100644
--- a/src/plugins/sixrd/sixrd.c
+++ b/src/plugins/sixrd/sixrd.c
@@ -32,6 +32,8 @@
* ea_bits_len = 0
*/
+sixrd_main_t sixrd_main;
+
int
sixrd_create_domain (ip6_address_t *ip6_prefix,
u8 ip6_prefix_len,
diff --git a/src/plugins/sixrd/sixrd.h b/src/plugins/sixrd/sixrd.h
index 56714c9e3bd..f911461b1cd 100644
--- a/src/plugins/sixrd/sixrd.h
+++ b/src/plugins/sixrd/sixrd.h
@@ -79,7 +79,7 @@ typedef struct {
u32 sixrd_domain_index;
} sixrd_trace_t;
-sixrd_main_t sixrd_main;
+extern sixrd_main_t sixrd_main;
/*
* sixrd_get_addr
diff --git a/src/vat/plugin.h b/src/vat/plugin.h
index 559ec52f128..c69186287aa 100644
--- a/src/vat/plugin.h
+++ b/src/vat/plugin.h
@@ -45,7 +45,7 @@ typedef struct
} plugin_main_t;
-plugin_main_t vat_plugin_main;
+extern plugin_main_t vat_plugin_main;
int vat_plugin_init (vat_main_t * vam);
int vat_load_new_plugins (plugin_main_t * pm);
diff --git a/src/vlib/lex.h b/src/vlib/lex.h
index 4ae58f468c1..18289eef5ca 100644
--- a/src/vlib/lex.h
+++ b/src/vlib/lex.h
@@ -114,7 +114,7 @@ typedef struct
u8 *token_buffer;
} vlib_lex_main_t;
-vlib_lex_main_t vlib_lex_main;
+extern vlib_lex_main_t vlib_lex_main;
always_inline void
vlib_lex_cleanup_token (vlib_lex_token_t * t)
diff --git a/src/vnet/cdp/cdp_node.h b/src/vnet/cdp/cdp_node.h
index 7028ddcaf9c..21086c02527 100644
--- a/src/vnet/cdp/cdp_node.h
+++ b/src/vnet/cdp/cdp_node.h
@@ -95,7 +95,7 @@ typedef struct
vnet_main_t *vnet_main;
} cdp_main_t;
-cdp_main_t cdp_main;
+extern cdp_main_t cdp_main;
/* Packet counters */
#define foreach_cdp_error \
diff --git a/src/vnet/classify/flow_classify.c b/src/vnet/classify/flow_classify.c
index 0a624204e34..6c067f55759 100644
--- a/src/vnet/classify/flow_classify.c
+++ b/src/vnet/classify/flow_classify.c
@@ -14,6 +14,8 @@
*/
#include <vnet/classify/flow_classify.h>
+flow_classify_main_t flow_classify_main;
+
static void
vnet_flow_classify_feature_enable (vlib_main_t * vnm,
flow_classify_main_t * fcm,
diff --git a/src/vnet/classify/flow_classify.h b/src/vnet/classify/flow_classify.h
index 3ae04cd7b21..14430df392f 100644
--- a/src/vnet/classify/flow_classify.h
+++ b/src/vnet/classify/flow_classify.h
@@ -42,7 +42,7 @@ typedef struct {
vnet_config_main_t * vnet_config_main [FLOW_CLASSIFY_N_TABLES];
} flow_classify_main_t;
-flow_classify_main_t flow_classify_main;
+extern flow_classify_main_t flow_classify_main;
int vnet_set_flow_classify_intfc (vlib_main_t * vm, u32 sw_if_index,
u32 ip4_table_index, u32 ip6_table_index,
diff --git a/src/vnet/classify/policer_classify.c b/src/vnet/classify/policer_classify.c
index 569234fba3b..2a4fa62c023 100644
--- a/src/vnet/classify/policer_classify.c
+++ b/src/vnet/classify/policer_classify.c
@@ -14,6 +14,8 @@
*/
#include <vnet/classify/policer_classify.h>
+policer_classify_main_t policer_classify_main;
+
static void
vnet_policer_classify_feature_enable (vlib_main_t * vnm,
policer_classify_main_t * pcm,
diff --git a/src/vnet/classify/policer_classify.h b/src/vnet/classify/policer_classify.h
index 3065644438d..6ab424fbf9c 100644
--- a/src/vnet/classify/policer_classify.h
+++ b/src/vnet/classify/policer_classify.h
@@ -46,7 +46,7 @@ typedef struct {
vnet_config_main_t * vnet_config_main [POLICER_CLASSIFY_N_TABLES];
} policer_classify_main_t;
-policer_classify_main_t policer_classify_main;
+extern policer_classify_main_t policer_classify_main;
int vnet_set_policer_classify_intfc (vlib_main_t * vm, u32 sw_if_index,
u32 ip4_table_index, u32 ip6_table_index,
diff --git a/src/vnet/cop/cop.h b/src/vnet/cop/cop.h
index eb5f1dfd78e..ee848ce872e 100644
--- a/src/vnet/cop/cop.h
+++ b/src/vnet/cop/cop.h
@@ -70,7 +70,7 @@ typedef struct {
vnet_main_t * vnet_main;
} cop_main_t;
-cop_main_t cop_main;
+extern cop_main_t cop_main;
extern vlib_node_registration_t cop_input_node;
diff --git a/src/vnet/devices/af_packet/af_packet.c b/src/vnet/devices/af_packet/af_packet.c
index e7bbdfd86ae..d0a241e2a2e 100644
--- a/src/vnet/devices/af_packet/af_packet.c
+++ b/src/vnet/devices/af_packet/af_packet.c
@@ -32,6 +32,8 @@
#include <vnet/devices/af_packet/af_packet.h>
+af_packet_main_t af_packet_main;
+
#define AF_PACKET_DEBUG_SOCKET 0
#define AF_PACKET_TX_FRAMES_PER_BLOCK 1024
diff --git a/src/vnet/devices/af_packet/af_packet.h b/src/vnet/devices/af_packet/af_packet.h
index 66e2dea5169..b095e7ffcd1 100644
--- a/src/vnet/devices/af_packet/af_packet.h
+++ b/src/vnet/devices/af_packet/af_packet.h
@@ -56,7 +56,7 @@ typedef struct
mhash_t if_index_by_host_if_name;
} af_packet_main_t;
-af_packet_main_t af_packet_main;
+extern af_packet_main_t af_packet_main;
extern vnet_device_class_t af_packet_device_class;
extern vlib_node_registration_t af_packet_input_node;
diff --git a/src/vnet/devices/netmap/netmap.c b/src/vnet/devices/netmap/netmap.c
index fc49ed629b8..25a3af73451 100644
--- a/src/vnet/devices/netmap/netmap.c
+++ b/src/vnet/devices/netmap/netmap.c
@@ -27,6 +27,8 @@
#include <vnet/ethernet/ethernet.h>
#include <vnet/devices/netmap/netmap.h>
+netmap_main_t netmap_main;
+
static u32
netmap_eth_flag_change (vnet_main_t * vnm, vnet_hw_interface_t * hi,
u32 flags)
diff --git a/src/vnet/devices/netmap/netmap.h b/src/vnet/devices/netmap/netmap.h
index 047318909c9..29f855fda8e 100644
--- a/src/vnet/devices/netmap/netmap.h
+++ b/src/vnet/devices/netmap/netmap.h
@@ -98,7 +98,7 @@ typedef struct
u32 input_cpu_count;
} netmap_main_t;
-netmap_main_t netmap_main;
+extern netmap_main_t netmap_main;
extern vnet_device_class_t netmap_device_class;
extern vlib_node_registration_t netmap_input_node;
diff --git a/src/vnet/devices/ssvm/ssvm_eth.h b/src/vnet/devices/ssvm/ssvm_eth.h
index f877df3cd33..7f9aaad3e82 100644
--- a/src/vnet/devices/ssvm/ssvm_eth.h
+++ b/src/vnet/devices/ssvm/ssvm_eth.h
@@ -82,7 +82,7 @@ typedef struct
elog_main_t *elog_main;
} ssvm_eth_main_t;
-ssvm_eth_main_t ssvm_eth_main;
+extern ssvm_eth_main_t ssvm_eth_main;
typedef enum
{
diff --git a/src/vnet/dhcp/client.h b/src/vnet/dhcp/client.h
index 509d5d4cc15..68c3d7ba98e 100644
--- a/src/vnet/dhcp/client.h
+++ b/src/vnet/dhcp/client.h
@@ -100,7 +100,7 @@ typedef struct {
void * event_callback;
} dhcp_client_add_del_args_t;
-dhcp_client_main_t dhcp_client_main;
+extern dhcp_client_main_t dhcp_client_main;
#define EVENT_DHCP_CLIENT_WAKEUP 1
diff --git a/src/vnet/ethernet/ethernet.h b/src/vnet/ethernet/ethernet.h
index a6846b13ffc..2a3383a9eaa 100644
--- a/src/vnet/ethernet/ethernet.h
+++ b/src/vnet/ethernet/ethernet.h
@@ -271,7 +271,7 @@ typedef struct
uword *bm_loopback_instances;
} ethernet_main_t;
-ethernet_main_t ethernet_main;
+extern ethernet_main_t ethernet_main;
always_inline ethernet_type_info_t *
ethernet_get_type_info (ethernet_main_t * em, ethernet_type_t type)
diff --git a/src/vnet/geneve/geneve.h b/src/vnet/geneve/geneve.h
index 2976043ed0f..cce57c8873b 100644
--- a/src/vnet/geneve/geneve.h
+++ b/src/vnet/geneve/geneve.h
@@ -175,7 +175,7 @@ typedef struct
vnet_main_t *vnet_main;
} geneve_main_t;
-geneve_main_t geneve_main;
+extern geneve_main_t geneve_main;
extern vlib_node_registration_t geneve4_input_node;
extern vlib_node_registration_t geneve6_input_node;
diff --git a/src/vnet/gre/gre.h b/src/vnet/gre/gre.h
index ad3e025a0ff..9c12eb4bc13 100644
--- a/src/vnet/gre/gre.h
+++ b/src/vnet/gre/gre.h
@@ -195,7 +195,7 @@ gre_get_protocol_info (gre_main_t * em, gre_protocol_t protocol)
return p ? vec_elt_at_index (em->protocol_infos, p[0]) : 0;
}
-gre_main_t gre_main;
+extern gre_main_t gre_main;
/* Register given node index to take input for given gre type. */
void
diff --git a/src/vnet/ip/ip4_source_and_port_range_check.c b/src/vnet/ip/ip4_source_and_port_range_check.c
index 4829079bddd..d1f18dd6b26 100644
--- a/src/vnet/ip/ip4_source_and_port_range_check.c
+++ b/src/vnet/ip/ip4_source_and_port_range_check.c
@@ -18,6 +18,8 @@
#include <vnet/fib/fib_table.h>
#include <vnet/fib/ip4_fib.h>
+source_range_check_main_t source_range_check_main;
+
/**
* @file
* @brief IPv4 Source and Port Range Checking.
diff --git a/src/vnet/ip/ip_source_and_port_range_check.h b/src/vnet/ip/ip_source_and_port_range_check.h
index fefe5ff1fd9..b04fe613d1c 100644
--- a/src/vnet/ip/ip_source_and_port_range_check.h
+++ b/src/vnet/ip/ip_source_and_port_range_check.h
@@ -24,7 +24,7 @@ typedef struct
vnet_main_t *vnet_main;
} source_range_check_main_t;
-source_range_check_main_t source_range_check_main;
+extern source_range_check_main_t source_range_check_main;
typedef enum
{
diff --git a/src/vnet/ip/ping.c b/src/vnet/ip/ping.c
index 0fa537f6281..f438ce96060 100755
--- a/src/vnet/ip/ping.c
+++ b/src/vnet/ip/ping.c
@@ -20,6 +20,8 @@
#include <vnet/fib/fib_entry.h>
#include <vlib/vlib.h>
+ping_main_t ping_main;
+
/**
* @file
* @brief IPv4 and IPv6 ICMP Ping.
diff --git a/src/vnet/ip/ping.h b/src/vnet/ip/ping.h
index b1b71f685fe..3f7488fbeac 100644
--- a/src/vnet/ip/ping.h
+++ b/src/vnet/ip/ping.h
@@ -56,7 +56,7 @@ typedef struct ping_main_t
ping_run_t *ping_run_by_icmp_id;
} ping_main_t;
-ping_main_t ping_main;
+extern ping_main_t ping_main;
#define PING_DEFAULT_DATA_LEN 60
#define PING_DEFAULT_INTERVAL 1.0
diff --git a/src/vnet/ipsec-gre/ipsec_gre.h b/src/vnet/ipsec-gre/ipsec_gre.h
index a2ca64b6f74..5d56b4e1e1f 100644
--- a/src/vnet/ipsec-gre/ipsec_gre.h
+++ b/src/vnet/ipsec-gre/ipsec_gre.h
@@ -78,7 +78,7 @@ typedef struct
vnet_main_t *vnet_main; /**< convenience */
} ipsec_gre_main_t;
-ipsec_gre_main_t ipsec_gre_main;
+extern ipsec_gre_main_t ipsec_gre_main;
extern vlib_node_registration_t ipsec_gre_input_node;
extern vnet_device_class_t ipsec_gre_device_class;
diff --git a/src/vnet/ipsec/esp.h b/src/vnet/ipsec/esp.h
index 98db70179bd..bc67f9d0783 100644
--- a/src/vnet/ipsec/esp.h
+++ b/src/vnet/ipsec/esp.h
@@ -80,7 +80,7 @@ typedef struct
esp_main_per_thread_data_t *per_thread_data;
} esp_main_t;
-esp_main_t esp_main;
+extern esp_main_t esp_main;
#define ESP_WINDOW_SIZE (64)
#define ESP_SEQ_MAX (4294967295UL)
diff --git a/src/vnet/ipsec/esp_encrypt.c b/src/vnet/ipsec/esp_encrypt.c
index b2bc4e0b448..b6ee25808b6 100644
--- a/src/vnet/ipsec/esp_encrypt.c
+++ b/src/vnet/ipsec/esp_encrypt.c
@@ -22,6 +22,7 @@
#include <vnet/ipsec/ipsec.h>
#include <vnet/ipsec/esp.h>
+esp_main_t esp_main;
#define foreach_esp_encrypt_next \
_(DROP, "error-drop") \
diff --git a/src/vnet/ipsec/ikev2.c b/src/vnet/ipsec/ikev2.c
index a3dc7b872c5..49bae17f730 100644
--- a/src/vnet/ipsec/ikev2.c
+++ b/src/vnet/ipsec/ikev2.c
@@ -24,6 +24,8 @@
#include <vnet/ipsec/ikev2_priv.h>
#include <openssl/sha.h>
+ikev2_main_t ikev2_main;
+
static int ikev2_delete_tunnel_interface (vnet_main_t * vnm,
ikev2_sa_t * sa,
ikev2_child_sa_t * child);
diff --git a/src/vnet/ipsec/ikev2_priv.h b/src/vnet/ipsec/ikev2_priv.h
index 5a3dc5202f4..b396965a0bb 100644
--- a/src/vnet/ipsec/ikev2_priv.h
+++ b/src/vnet/ipsec/ikev2_priv.h
@@ -292,7 +292,7 @@ typedef struct
} ikev2_main_t;
-ikev2_main_t ikev2_main;
+extern ikev2_main_t ikev2_main;
void ikev2_sa_free_proposal_vector (ikev2_sa_proposal_t ** v);
ikev2_sa_transform_t *ikev2_sa_get_td_for_type (ikev2_sa_proposal_t * p,
diff --git a/src/vnet/ipsec/ipsec.c b/src/vnet/ipsec/ipsec.c
index 828bfe81e43..2adcfd0b9bd 100644
--- a/src/vnet/ipsec/ipsec.c
+++ b/src/vnet/ipsec/ipsec.c
@@ -24,6 +24,8 @@
#include <vnet/ipsec/ikev2.h>
#include <vnet/ipsec/esp.h>
+ipsec_main_t ipsec_main;
+
u32
ipsec_get_sa_index_by_sa_id (u32 sa_id)
{
diff --git a/src/vnet/ipsec/ipsec.h b/src/vnet/ipsec/ipsec.h
index f11bc56cb9a..222025dbee8 100644
--- a/src/vnet/ipsec/ipsec.h
+++ b/src/vnet/ipsec/ipsec.h
@@ -286,7 +286,7 @@ typedef struct
ipsec_main_callbacks_t cb;
} ipsec_main_t;
-ipsec_main_t ipsec_main;
+extern ipsec_main_t ipsec_main;
extern vlib_node_registration_t esp_encrypt_node;
extern vlib_node_registration_t esp_decrypt_node;
diff --git a/src/vnet/l2/l2_learn.c b/src/vnet/l2/l2_learn.c
index fddab82426c..6ece1a3c7f2 100644
--- a/src/vnet/l2/l2_learn.c
+++ b/src/vnet/l2/l2_learn.c
@@ -29,6 +29,8 @@
#include <vppinfra/error.h>
#include <vppinfra/hash.h>
+l2learn_main_t l2learn_main;
+
/**
* @file
* @brief Ethernet Bridge Learning.
diff --git a/src/vnet/l2/l2_learn.h b/src/vnet/l2/l2_learn.h
index 3aaf48e2544..c1071450852 100644
--- a/src/vnet/l2/l2_learn.h
+++ b/src/vnet/l2/l2_learn.h
@@ -48,7 +48,7 @@ typedef struct
#define L2LEARN_DEFAULT_LIMIT (L2FIB_NUM_BUCKETS * 64)
-l2learn_main_t l2learn_main;
+extern l2learn_main_t l2learn_main;
extern vlib_node_registration_t l2fib_mac_age_scanner_process_node;
diff --git a/src/vnet/l2/l2_output.h b/src/vnet/l2/l2_output.h
index 1a73fdf9790..3b6e480d1dc 100644
--- a/src/vnet/l2/l2_output.h
+++ b/src/vnet/l2/l2_output.h
@@ -75,7 +75,7 @@ typedef struct
vnet_main_t *vnet_main;
} l2output_main_t;
-l2output_main_t l2output_main;
+extern l2output_main_t l2output_main;
extern vlib_node_registration_t l2output_node;
diff --git a/src/vnet/l2tp/l2tp.h b/src/vnet/l2tp/l2tp.h
index e7d2892cbdf..a91f00c282a 100644
--- a/src/vnet/l2tp/l2tp.h
+++ b/src/vnet/l2tp/l2tp.h
@@ -91,7 +91,7 @@ typedef struct
ip6_address_t client_address;
} l2t_trace_t;
-l2t_main_t l2t_main;
+extern l2t_main_t l2t_main;
extern vlib_node_registration_t l2t_encap_node;
extern vlib_node_registration_t l2t_decap_node;
extern vlib_node_registration_t l2t_decap_local_node;
diff --git a/src/vnet/lawful-intercept/lawful_intercept.c b/src/vnet/lawful-intercept/lawful_intercept.c
index ef07a339201..e48e1cf4bd1 100644
--- a/src/vnet/lawful-intercept/lawful_intercept.c
+++ b/src/vnet/lawful-intercept/lawful_intercept.c
@@ -15,6 +15,8 @@
#include <vnet/lawful-intercept/lawful_intercept.h>
+li_main_t li_main;
+
static clib_error_t *
set_li_command_fn (vlib_main_t * vm,
unformat_input_t * input,
diff --git a/src/vnet/lawful-intercept/lawful_intercept.h b/src/vnet/lawful-intercept/lawful_intercept.h
index 89e699f51a0..bcb18afece2 100644
--- a/src/vnet/lawful-intercept/lawful_intercept.h
+++ b/src/vnet/lawful-intercept/lawful_intercept.h
@@ -33,7 +33,7 @@ typedef struct {
vnet_main_t * vnet_main;
} li_main_t;
-li_main_t li_main;
+extern li_main_t li_main;
typedef CLIB_PACKED(struct {
ip4_header_t ip4;
diff --git a/src/vnet/lisp-gpe/lisp_gpe.h b/src/vnet/lisp-gpe/lisp_gpe.h
index 5eafdd55ffc..fe51ed06eb1 100644
--- a/src/vnet/lisp-gpe/lisp_gpe.h
+++ b/src/vnet/lisp-gpe/lisp_gpe.h
@@ -177,7 +177,7 @@ typedef struct lisp_gpe_main
} lisp_gpe_main_t;
/** LISP-GPE global state*/
-lisp_gpe_main_t lisp_gpe_main;
+extern lisp_gpe_main_t lisp_gpe_main;
always_inline lisp_gpe_main_t *
vnet_lisp_gpe_get_main ()
diff --git a/src/vnet/map/map.c b/src/vnet/map/map.c
index 862f7cf5612..6d18a069459 100644
--- a/src/vnet/map/map.c
+++ b/src/vnet/map/map.c
@@ -23,6 +23,8 @@
#include "map.h"
+map_main_t map_main;
+
/*
* This code supports the following MAP modes:
*
diff --git a/src/vnet/map/map.h b/src/vnet/map/map.h
index 208a58efc42..b9b3353dd2e 100644
--- a/src/vnet/map/map.h
+++ b/src/vnet/map/map.h
@@ -329,7 +329,7 @@ typedef struct {
u16 port;
} map_trace_t;
-map_main_t map_main;
+extern map_main_t map_main;
extern vlib_node_registration_t ip4_map_node;
extern vlib_node_registration_t ip6_map_node;
diff --git a/src/vnet/misc.c b/src/vnet/misc.c
index 9cfe83940f1..ff85e3dedfe 100644
--- a/src/vnet/misc.c
+++ b/src/vnet/misc.c
@@ -41,6 +41,7 @@
#include <vnet/ip/ip.h>
vnet_main_t vnet_main;
+vnet_main_t **vnet_mains;
vnet_main_t *
vnet_get_main (void)
diff --git a/src/vnet/policer/policer.c b/src/vnet/policer/policer.c
index 5a7b7711661..37380034fd2 100644
--- a/src/vnet/policer/policer.c
+++ b/src/vnet/policer/policer.c
@@ -16,6 +16,8 @@
#include <vnet/policer/policer.h>
#include <vnet/classify/vnet_classify.h>
+vnet_policer_main_t vnet_policer_main;
+
clib_error_t *
policer_add_del (vlib_main_t * vm,
u8 * name,
diff --git a/src/vnet/policer/policer.h b/src/vnet/policer/policer.h
index 8e2d7c79b7c..b7c1d616cef 100644
--- a/src/vnet/policer/policer.h
+++ b/src/vnet/policer/policer.h
@@ -44,7 +44,7 @@ typedef struct
vnet_main_t *vnet_main;
} vnet_policer_main_t;
-vnet_policer_main_t vnet_policer_main;
+extern vnet_policer_main_t vnet_policer_main;
typedef enum
{
diff --git a/src/vnet/snap/snap.h b/src/vnet/snap/snap.h
index 7cd453e7a97..08c3a8b9c18 100644
--- a/src/vnet/snap/snap.h
+++ b/src/vnet/snap/snap.h
@@ -165,7 +165,7 @@ snap_get_protocol_info (snap_main_t * sm, snap_header_t * h)
return p ? vec_elt_at_index (sm->protocols, p[0]) : 0;
}
-snap_main_t snap_main;
+extern snap_main_t snap_main;
/* Register given node index to take input for given snap type. */
void
diff --git a/src/vnet/span/span.c b/src/vnet/span/span.c
index 2fd9cd87dfb..b7292cf1e80 100644
--- a/src/vnet/span/span.c
+++ b/src/vnet/span/span.c
@@ -21,6 +21,8 @@
#include <vnet/span/span.h>
+span_main_t span_main;
+
typedef enum
{
SPAN_DISABLE = 0,
diff --git a/src/vnet/span/span.h b/src/vnet/span/span.h
index 10de8272ab0..ebdb4980c77 100644
--- a/src/vnet/span/span.h
+++ b/src/vnet/span/span.h
@@ -55,7 +55,7 @@ typedef struct
vnet_main_t *vnet_main;
} span_main_t;
-span_main_t span_main;
+extern span_main_t span_main;
typedef struct
{
diff --git a/src/vnet/srp/node.c b/src/vnet/srp/node.c
index 897be254624..9123c4c7735 100644
--- a/src/vnet/srp/node.c
+++ b/src/vnet/srp/node.c
@@ -41,6 +41,8 @@
#include <vnet/ip/ip_packet.h> /* for ip_csum_fold */
#include <vnet/srp/srp.h>
+srp_main_t srp_main;
+
typedef struct {
u8 packet_data[32];
} srp_input_trace_t;
diff --git a/src/vnet/srp/srp.h b/src/vnet/srp/srp.h
index 5288ebe4759..8f59e064c8b 100644
--- a/src/vnet/srp/srp.h
+++ b/src/vnet/srp/srp.h
@@ -169,7 +169,7 @@ srp_ips_link_change (u32 sw_if_index, u32 link_is_up)
void srp_interface_get_interface_config (u32 hw_if_index, srp_interface_config_t * c);
void srp_interface_set_interface_config (u32 hw_if_index, srp_interface_config_t * c);
-srp_main_t srp_main;
+extern srp_main_t srp_main;
always_inline srp_interface_t *
srp_get_interface_from_vnet_hw_interface (u32 hw_if_index)
diff --git a/src/vnet/tcp/builtin_client.c b/src/vnet/tcp/builtin_client.c
index 4258fc43010..76c5c123ab9 100644
--- a/src/vnet/tcp/builtin_client.c
+++ b/src/vnet/tcp/builtin_client.c
@@ -23,6 +23,8 @@
#include <vlibmemory/api.h>
#include <vpp/app/version.h>
+tclient_main_t tclient_main;
+
#define TCP_BUILTIN_CLIENT_DBG (0)
static void
diff --git a/src/vnet/tcp/builtin_client.h b/src/vnet/tcp/builtin_client.h
index 06d239efe14..400c55c8685 100644
--- a/src/vnet/tcp/builtin_client.h
+++ b/src/vnet/tcp/builtin_client.h
@@ -106,7 +106,7 @@ typedef struct
ethernet_main_t *ethernet_main;
} tclient_main_t;
-tclient_main_t tclient_main;
+extern tclient_main_t tclient_main;
vlib_node_registration_t tclient_node;
diff --git a/src/vnet/tcp/builtin_proxy.h b/src/vnet/tcp/builtin_proxy.h
index cf707a150cf..c8cde5f70e6 100644
--- a/src/vnet/tcp/builtin_proxy.h
+++ b/src/vnet/tcp/builtin_proxy.h
@@ -87,7 +87,7 @@ typedef struct
ethernet_main_t *ethernet_main;
} builtin_proxy_main_t;
-builtin_proxy_main_t builtin_proxy_main;
+extern builtin_proxy_main_t builtin_proxy_main;
#endif /* __included_builtin_proxy_h__ */
diff --git a/src/vnet/vnet.h b/src/vnet/vnet.h
index 8405f61b3c3..153fdcca785 100644
--- a/src/vnet/vnet.h
+++ b/src/vnet/vnet.h
@@ -78,8 +78,8 @@ typedef struct vnet_main_t
vlib_main_t *vlib_main;
} vnet_main_t;
-vnet_main_t vnet_main;
-vnet_main_t **vnet_mains;
+extern vnet_main_t vnet_main;
+extern vnet_main_t **vnet_mains;
#include <vnet/interface_funcs.h>
#include <vnet/global_funcs.h>
diff --git a/src/vnet/vxlan-gpe/vxlan_gpe.h b/src/vnet/vxlan-gpe/vxlan_gpe.h
index c348b5d5aaa..053bcbe629a 100644
--- a/src/vnet/vxlan-gpe/vxlan_gpe.h
+++ b/src/vnet/vxlan-gpe/vxlan_gpe.h
@@ -209,7 +209,7 @@ typedef struct {
uword decap_next_node_list[VXLAN_GPE_PROTOCOL_MAX];
} vxlan_gpe_main_t;
-vxlan_gpe_main_t vxlan_gpe_main;
+extern vxlan_gpe_main_t vxlan_gpe_main;
extern vlib_node_registration_t vxlan_gpe_encap_node;
extern vlib_node_registration_t vxlan4_gpe_input_node;
diff --git a/src/vnet/vxlan/vxlan.h b/src/vnet/vxlan/vxlan.h
index dca1cd1285d..f428ee54d78 100644
--- a/src/vnet/vxlan/vxlan.h
+++ b/src/vnet/vxlan/vxlan.h
@@ -158,7 +158,7 @@ typedef struct {
vnet_main_t * vnet_main;
} vxlan_main_t;
-vxlan_main_t vxlan_main;
+extern vxlan_main_t vxlan_main;
extern vlib_node_registration_t vxlan4_input_node;
extern vlib_node_registration_t vxlan6_input_node;
diff --git a/src/vpp/api/plugin.h b/src/vpp/api/plugin.h
index 559ec52f128..c69186287aa 100644
--- a/src/vpp/api/plugin.h
+++ b/src/vpp/api/plugin.h
@@ -45,7 +45,7 @@ typedef struct
} plugin_main_t;
-plugin_main_t vat_plugin_main;
+extern plugin_main_t vat_plugin_main;
int vat_plugin_init (vat_main_t * vam);
int vat_load_new_plugins (plugin_main_t * pm);
diff --git a/src/vpp/stats/stats.h b/src/vpp/stats/stats.h
index 042bcb65801..452e3052a10 100644
--- a/src/vpp/stats/stats.h
+++ b/src/vpp/stats/stats.h
@@ -184,7 +184,7 @@ typedef struct
api_main_t *api_main;
} stats_main_t;
-stats_main_t stats_main;
+extern stats_main_t stats_main;
void dslock (stats_main_t * sm, int release_hint, int tag);
void dsunlock (stats_main_t * sm);