X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvat%2Fvat.h;h=bcaddfe01267db2351c0e67e64d24424c335136a;hb=7a3a8664bbc9e295d6382949d2d0bcd1998a05f1;hp=233a1c418206b46dcb7aeca79c41e4103626550c;hpb=229a6b7a3ca821a848653099b1ff83c7926a265f;p=vpp.git diff --git a/src/vat/vat.h b/src/vat/vat.h index 233a1c41820..bcaddfe0126 100644 --- a/src/vat/vat.h +++ b/src/vat/vat.h @@ -15,13 +15,19 @@ #ifndef __included_vat_h__ #define __included_vat_h__ +#define _GNU_SOURCE #include #include +#include +#include +#include #include #include #include +#include #include #include +#include #include #include #include @@ -42,17 +48,27 @@ typedef struct */ u32 sub_id; - /* 0 = dot1q, 1=dot1ad */ - u8 sub_dot1ad; - /* Number of tags 0-2 */ u8 sub_number_of_tags; u16 sub_outer_vlan_id; u16 sub_inner_vlan_id; - u8 sub_exact_match; - u8 sub_default; - u8 sub_outer_vlan_id_any; - u8 sub_inner_vlan_id_any; + + union + { + u16 raw_flags; + struct + { + u16 no_tags:1; + u16 one_tag:1; + u16 two_tags:1; + /* 0 = dot1q, 1=dot1ad */ + u16 sub_dot1ad:1; + u16 sub_exact_match:1; + u16 sub_default:1; + u16 sub_outer_vlan_id_any:1; + u16 sub_inner_vlan_id_any:1; + }; + }; /* vlan tag rewrite */ u32 vtr_op; @@ -114,7 +130,7 @@ typedef struct typedef struct { /* vpe input queue */ - unix_shared_memory_queue_t *vl_input_queue; + svm_queue_t *vl_input_queue; /* interface name table */ uword *sw_if_index_by_interface_name; @@ -124,7 +140,7 @@ typedef struct /* Graph node table */ uword *graph_node_index_by_name; - vlib_node_t **graph_nodes; + vlib_node_t ***graph_nodes; /* ip tables */ ip_details_t *ip_details_by_sw_if_index[2]; @@ -147,7 +163,6 @@ typedef struct /* Errors by number */ uword *error_string_by_error_number; - /* Main thread can spin (w/ timeout) here if needed */ u32 async_mode; u32 async_errors; @@ -155,10 +170,11 @@ typedef struct volatile i32 retval; volatile u32 sw_if_index; volatile u8 *shmem_result; - volatile u8 *cmd_reply; + u8 *cmd_reply; /* our client index */ u32 my_client_index; + int client_index_invalid; /* Time is of the essence... */ clib_time_t clib_time; @@ -204,6 +220,14 @@ typedef struct ip4_nbr_counter_t **ip4_nbr_counters; ip6_nbr_counter_t **ip6_nbr_counters; + ssvm_private_t stat_segment; + clib_spinlock_t *stat_segment_lockp; + + socket_client_main_t *socket_client_main; + u8 *socket_name; + + elog_main_t elog_main; + /* Convenience */ vlib_main_t *vlib_main; } vat_main_t; @@ -219,8 +243,8 @@ void do_one_file (vat_main_t * vam); int exec (vat_main_t * vam); /* Plugin API library functions */ -char *vat_plugin_path; -char *vat_plugin_name_filter; +extern char *vat_plugin_path; +extern char *vat_plugin_name_filter; void vat_plugin_api_reference (void); uword unformat_sw_if_index (unformat_input_t * input, va_list * args); uword unformat_ip4_address (unformat_input_t * input, va_list * args); @@ -233,6 +257,8 @@ u8 *format_ip6_address (u8 * s, va_list * args); u8 *format_ip46_address (u8 * s, va_list * args); u8 *format_ethernet_address (u8 * s, va_list * args); +int vat_socket_connect (vat_main_t * vam); + #if VPP_API_TEST_BUILTIN #define print api_cli_output void api_cli_output (void *, const char *fmt, ...);