X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fmpls%2Fmpls.h;h=cc3eeed035eb5de2f77ad82c13da0011bdf78aa6;hb=e9b558282293ee28c5eef7cb507dbe3f4a81e5af;hp=300f2cfd6bea52ba8ced644e674c7766283b0d6c;hpb=696e88da9799056036f329676213f3c0c0a1db9c;p=vpp.git diff --git a/src/vnet/mpls/mpls.h b/src/vnet/mpls/mpls.h index 300f2cfd6be..cc3eeed035e 100644 --- a/src/vnet/mpls/mpls.h +++ b/src/vnet/mpls/mpls.h @@ -23,50 +23,32 @@ #include #include -typedef enum { +typedef enum +{ #define mpls_error(n,s) MPLS_ERROR_##n, #include #undef mpls_error MPLS_N_ERROR, } mpls_error_t; -#define MPLS_FIB_DEFAULT_TABLE_ID 0 - -/** - * Type exposure is to allow the DP fast/inlined access - */ -#define MPLS_FIB_KEY_SIZE 21 -#define MPLS_FIB_DB_SIZE (1 << (MPLS_FIB_KEY_SIZE-1)) - -typedef struct mpls_fib_t_ -{ - /** - * A hash table of entries. 21 bit key - * Hash table for reduced memory footprint - */ - uword * mf_entries; - - /** - * The load-balance indeices keyed by 21 bit label+eos bit. - * A flat array for maximum lookup performace. - */ - index_t mf_lbs[MPLS_FIB_DB_SIZE]; -} mpls_fib_t; - /** * @brief Definition of a callback for receiving MPLS interface state change * notifications */ -typedef void (*mpls_interface_state_change_callback_t)(u32 sw_if_index, - u32 is_enable); +typedef void (*mpls_interface_state_change_callback_t) (u32 sw_if_index, + u32 is_enable); -typedef struct { +typedef struct +{ /* MPLS FIB index for each software interface */ u32 *fib_index_by_sw_if_index; /** A pool of all the MPLS FIBs */ struct fib_table_t_ *fibs; + /** A pool of all the MPLS FIBs */ + struct mpls_fib_t_ *mpls_fibs; + /** A hash table to lookup the mpls_fib by table ID */ uword *fib_index_by_table_id; @@ -75,16 +57,12 @@ typedef struct { u8 output_feature_arc_index; /* IP4 enabled count by software interface */ - u8 * mpls_enabled_by_sw_if_index; - - /* convenience */ - vlib_main_t * vlib_main; - vnet_main_t * vnet_main; + u8 *mpls_enabled_by_sw_if_index; } mpls_main_t; extern mpls_main_t mpls_main; -extern clib_error_t * mpls_feature_init(vlib_main_t * vm); +extern clib_error_t *mpls_feature_init (vlib_main_t * vm); format_function_t format_mpls_eos_bit; format_function_t format_mpls_unicast_header_net_byte_order; @@ -97,8 +75,6 @@ extern vlib_node_registration_t mpls_midchain_node; /* Parse mpls protocol as 0xXXXX or protocol name. In either host or network byte order. */ -unformat_function_t unformat_mpls_protocol_host_byte_order; -unformat_function_t unformat_mpls_protocol_net_byte_order; unformat_function_t unformat_mpls_label_net_byte_order; unformat_function_t unformat_mpls_unicast_label; @@ -106,21 +82,29 @@ unformat_function_t unformat_mpls_unicast_label; unformat_function_t unformat_mpls_header; unformat_function_t unformat_pg_mpls_header; -void mpls_sw_interface_enable_disable (mpls_main_t * mm, - u32 sw_if_index, - u8 is_enable); +int mpls_sw_interface_enable_disable (mpls_main_t * mm, + u32 sw_if_index, + u8 is_enable, u8 is_api); u8 mpls_sw_interface_is_enabled (u32 sw_if_index); int mpls_fib_reset_labels (u32 fib_id); -int -mpls_dest_cmp(void * a1, void * a2); +int mpls_dest_cmp (void *a1, void *a2); + +int mpls_fib_index_cmp (void *a1, void *a2); -int -mpls_fib_index_cmp(void * a1, void * a2); +int mpls_label_cmp (void *a1, void *a2); -int -mpls_label_cmp(void * a1, void * a2); +void mpls_table_create (u32 table_id, u8 is_api, const u8 * name); +void mpls_table_delete (u32 table_id, u8 is_api); #endif /* included_vnet_mpls_h */ + +/* + * fd.io coding-style-patch-verification: ON + * + * Local Variables: + * eval: (c-set-style "gnu") + * End: + */