X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvat%2Fvat.h;h=d380abeaf12e65ae22b79439668e5437a403e6e6;hb=e63325e3ca03c847963863446345e6c80a2c0cfd;hp=64be2f7f97f3c5f00e70e8f89495f8b1fac893f8;hpb=7cd468a3d7dee7d6c92f69a0bb7061ae208ec727;p=vpp.git diff --git a/src/vat/vat.h b/src/vat/vat.h index 64be2f7f97f..d380abeaf12 100644 --- a/src/vat/vat.h +++ b/src/vat/vat.h @@ -15,13 +15,18 @@ #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 @@ -42,17 +47,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; @@ -95,10 +110,26 @@ typedef struct u64 bytes; } ip6_fib_counter_t; +typedef struct +{ + struct in_addr address; + vnet_link_t linkt; + u64 packets; + u64 bytes; +} ip4_nbr_counter_t; + +typedef struct +{ + struct in6_addr address; + vnet_link_t linkt; + u64 packets; + u64 bytes; +} ip6_nbr_counter_t; + 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; @@ -108,7 +139,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]; @@ -131,7 +162,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; @@ -139,10 +169,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; @@ -185,41 +216,24 @@ typedef struct u32 *ip4_fib_counters_vrf_id_by_index; ip6_fib_counter_t **ip6_fib_counters; u32 *ip6_fib_counters_vrf_id_by_index; + 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; /* Convenience */ vlib_main_t *vlib_main; } vat_main_t; -vat_main_t vat_main; - -static inline f64 -vat_time_now (vat_main_t * vam) -{ -#if VPP_API_TEST_BUILTIN - return vlib_time_now (vam->vlib_main); -#else - return clib_time_now (&vam->clib_time); -#endif -} - -#if VPP_API_TEST_BUILTIN -#define errmsg(fmt,args...) \ -do { \ - vat_main_t *__vam = &vat_main; \ - vlib_cli_output (__vam->vlib_main, fmt, ##args); \ - } while(0); -#else -#define errmsg(fmt,args...) \ -do { \ - vat_main_t *__vam = &vat_main; \ - if(__vam->ifp != stdin) \ - fformat(__vam->ofp,"%s(%d): \n", __vam->current_file, \ - __vam->input_line_number); \ - fformat(__vam->ofp, fmt "\n", ##args); \ - fflush(__vam->ofp); \ -} while(0); -#endif +extern vat_main_t vat_main; +void vat_suspend (vlib_main_t * vm, f64 interval); +f64 vat_time_now (vat_main_t * vam); +void errmsg (char *fmt, ...); void vat_api_hookup (vat_main_t * vam); int api_sw_interface_dump (vat_main_t * vam); void do_one_file (vat_main_t * vam); @@ -236,8 +250,12 @@ uword unformat_ethernet_type_host_byte_order (unformat_input_t * input, va_list * args); uword unformat_ip6_address (unformat_input_t * input, va_list * args); u8 *format_ip4_address (u8 * s, va_list * args); +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, ...);