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;
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;
} dpdk_config_main_t;
-dpdk_config_main_t dpdk_config_main;
+extern dpdk_config_main_t dpdk_config_main;
typedef struct
{
#include <dpdk/device/dpdk_priv.h>
dpdk_main_t dpdk_main;
+dpdk_config_main_t dpdk_config_main;
#define LINK_STATE_ELOGS 0
#include <dpdk/device/dpdk.h>
#include <dpdk/ipsec/ipsec.h>
+dpdk_crypto_main_t dpdk_crypto_main;
+
#define EMPTY_STRUCT {0}
static void
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 };
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;
#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)
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;
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
{
* ea_bits_len = 0
*/
+sixrd_main_t sixrd_main;
+
int
sixrd_create_domain (ip6_address_t *ip6_prefix,
u8 ip6_prefix_len,
u32 sixrd_domain_index;
} sixrd_trace_t;
-sixrd_main_t sixrd_main;
+extern sixrd_main_t sixrd_main;
/*
* sixrd_get_addr
} 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);
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)
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 \
*/
#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,
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,
*/
#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,
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,
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;
#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
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;
#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)
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;
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
{
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
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)
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;
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
#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.
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
{
#include <vnet/fib/fib_entry.h>
#include <vlib/vlib.h>
+ping_main_t ping_main;
+
/**
* @file
* @brief IPv4 and IPv6 ICMP Ping.
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
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;
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)
#include <vnet/ipsec/ipsec.h>
#include <vnet/ipsec/esp.h>
+esp_main_t esp_main;
#define foreach_esp_encrypt_next \
_(DROP, "error-drop") \
#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);
} 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,
#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)
{
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;
#include <vppinfra/error.h>
#include <vppinfra/hash.h>
+l2learn_main_t l2learn_main;
+
/**
* @file
* @brief Ethernet Bridge Learning.
#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;
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;
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;
#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,
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;
} 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 ()
#include "map.h"
+map_main_t map_main;
+
/*
* This code supports the following MAP modes:
*
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;
#include <vnet/ip/ip.h>
vnet_main_t vnet_main;
+vnet_main_t **vnet_mains;
vnet_main_t *
vnet_get_main (void)
#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,
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
{
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
#include <vnet/span/span.h>
+span_main_t span_main;
+
typedef enum
{
SPAN_DISABLE = 0,
vnet_main_t *vnet_main;
} span_main_t;
-span_main_t span_main;
+extern span_main_t span_main;
typedef struct
{
#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;
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)
#include <vlibmemory/api.h>
#include <vpp/app/version.h>
+tclient_main_t tclient_main;
+
#define TCP_BUILTIN_CLIENT_DBG (0)
static void
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;
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__ */
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>
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;
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;
} 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);
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);