X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vnet%2Fvnet%2Finterface_funcs.h;h=f603a03e77b8556c340ceb89fc8851076bde51c4;hb=c631f2de6dd06b4cbb92bf8398839b882344fd25;hp=7761bf76d539357b6bf88b134d6a0377ce9ebce9;hpb=679ea7951514736e8c8318b434ad7162b27eea84;p=vpp.git diff --git a/vnet/vnet/interface_funcs.h b/vnet/vnet/interface_funcs.h index 7761bf76d53..f603a03e77b 100644 --- a/vnet/vnet/interface_funcs.h +++ b/vnet/vnet/interface_funcs.h @@ -42,17 +42,21 @@ always_inline vnet_hw_interface_t * vnet_get_hw_interface (vnet_main_t * vnm, u32 hw_if_index) -{ return pool_elt_at_index (vnm->interface_main.hw_interfaces, hw_if_index); } +{ + return pool_elt_at_index (vnm->interface_main.hw_interfaces, hw_if_index); +} always_inline vnet_sw_interface_t * vnet_get_sw_interface (vnet_main_t * vnm, u32 sw_if_index) -{ return pool_elt_at_index (vnm->interface_main.sw_interfaces, sw_if_index); } +{ + return pool_elt_at_index (vnm->interface_main.sw_interfaces, sw_if_index); +} always_inline vnet_sw_interface_t * vnet_get_hw_sw_interface (vnet_main_t * vnm, u32 hw_if_index) { - vnet_hw_interface_t * hw = vnet_get_hw_interface (vnm, hw_if_index); - vnet_sw_interface_t * sw = vnet_get_sw_interface (vnm, hw->sw_if_index); + vnet_hw_interface_t *hw = vnet_get_hw_interface (vnm, hw_if_index); + vnet_sw_interface_t *sw = vnet_get_sw_interface (vnm, hw->sw_if_index); ASSERT (sw->type == VNET_SW_INTERFACE_TYPE_HARDWARE); return sw; } @@ -60,7 +64,7 @@ vnet_get_hw_sw_interface (vnet_main_t * vnm, u32 hw_if_index) always_inline vnet_sw_interface_t * vnet_get_sup_sw_interface (vnet_main_t * vnm, u32 sw_if_index) { - vnet_sw_interface_t * sw = vnet_get_sw_interface (vnm, sw_if_index); + vnet_sw_interface_t *sw = vnet_get_sw_interface (vnm, sw_if_index); if (sw->type == VNET_SW_INTERFACE_TYPE_SUB) sw = vnet_get_sw_interface (vnm, sw->sup_sw_if_index); return sw; @@ -69,86 +73,110 @@ vnet_get_sup_sw_interface (vnet_main_t * vnm, u32 sw_if_index) always_inline vnet_hw_interface_t * vnet_get_sup_hw_interface (vnet_main_t * vnm, u32 sw_if_index) { - vnet_sw_interface_t * sw = vnet_get_sup_sw_interface (vnm, sw_if_index); + vnet_sw_interface_t *sw = vnet_get_sup_sw_interface (vnm, sw_if_index); ASSERT (sw->type == VNET_SW_INTERFACE_TYPE_HARDWARE); return vnet_get_hw_interface (vnm, sw->hw_if_index); } always_inline vnet_hw_interface_class_t * vnet_get_hw_interface_class (vnet_main_t * vnm, u32 hw_class_index) -{ return vec_elt_at_index (vnm->interface_main.hw_interface_classes, hw_class_index); } +{ + return vec_elt_at_index (vnm->interface_main.hw_interface_classes, + hw_class_index); +} always_inline vnet_device_class_t * vnet_get_device_class (vnet_main_t * vnm, u32 dev_class_index) -{ return vec_elt_at_index (vnm->interface_main.device_classes, dev_class_index); } +{ + return vec_elt_at_index (vnm->interface_main.device_classes, + dev_class_index); +} /* Register a hardware interface instance. */ u32 vnet_register_interface (vnet_main_t * vnm, u32 dev_class_index, u32 dev_instance, - u32 hw_class_index, - u32 hw_instance); + u32 hw_class_index, u32 hw_instance); /* Creates a software interface given template. */ -clib_error_t * -vnet_create_sw_interface (vnet_main_t * vnm, vnet_sw_interface_t * template, u32 * sw_if_index); +clib_error_t *vnet_create_sw_interface (vnet_main_t * vnm, + vnet_sw_interface_t * template, + u32 * sw_if_index); void vnet_delete_hw_interface (vnet_main_t * vnm, u32 hw_if_index); void vnet_delete_sw_interface (vnet_main_t * vnm, u32 sw_if_index); +int vnet_sw_interface_is_p2p (vnet_main_t * vnm, u32 sw_if_index); always_inline uword vnet_sw_interface_get_flags (vnet_main_t * vnm, u32 sw_if_index) { - vnet_sw_interface_t * sw = vnet_get_sw_interface (vnm, sw_if_index); + vnet_sw_interface_t *sw = vnet_get_sw_interface (vnm, sw_if_index); return sw->flags; } always_inline uword vnet_sw_interface_is_admin_up (vnet_main_t * vnm, u32 sw_if_index) -{ return (vnet_sw_interface_get_flags (vnm, sw_if_index) & VNET_SW_INTERFACE_FLAG_ADMIN_UP) != 0; } +{ + return (vnet_sw_interface_get_flags (vnm, sw_if_index) & + VNET_SW_INTERFACE_FLAG_ADMIN_UP) != 0; +} always_inline uword vnet_hw_interface_get_flags (vnet_main_t * vnm, u32 hw_if_index) { - vnet_hw_interface_t * hw = vnet_get_hw_interface (vnm, hw_if_index); + vnet_hw_interface_t *hw = vnet_get_hw_interface (vnm, hw_if_index); return hw->flags; } always_inline uword vnet_hw_interface_is_link_up (vnet_main_t * vnm, u32 hw_if_index) -{ return (vnet_hw_interface_get_flags (vnm, hw_if_index) & VNET_HW_INTERFACE_FLAG_LINK_UP) != 0; } +{ + return (vnet_hw_interface_get_flags (vnm, hw_if_index) & + VNET_HW_INTERFACE_FLAG_LINK_UP) != 0; +} always_inline vlib_frame_t * vnet_get_frame_to_sw_interface (vnet_main_t * vnm, u32 sw_if_index) { - vnet_hw_interface_t * hw = vnet_get_sup_hw_interface (vnm, sw_if_index); + vnet_hw_interface_t *hw = vnet_get_sup_hw_interface (vnm, sw_if_index); return vlib_get_frame_to_node (vnm->vlib_main, hw->output_node_index); } always_inline void -vnet_put_frame_to_sw_interface (vnet_main_t * vnm, u32 sw_if_index, vlib_frame_t * f) +vnet_put_frame_to_sw_interface (vnet_main_t * vnm, u32 sw_if_index, + vlib_frame_t * f) { - vnet_hw_interface_t * hw = vnet_get_sup_hw_interface (vnm, sw_if_index); + vnet_hw_interface_t *hw = vnet_get_sup_hw_interface (vnm, sw_if_index); return vlib_put_frame_to_node (vnm->vlib_main, hw->output_node_index, f); } /* Change interface flags (e.g. up, down, enable, disable). */ -clib_error_t * -vnet_hw_interface_set_flags (vnet_main_t * vnm, u32 hw_if_index, u32 flags); +clib_error_t *vnet_hw_interface_set_flags (vnet_main_t * vnm, u32 hw_if_index, + u32 flags); /* Change interface flags (e.g. up, down, enable, disable). */ -clib_error_t * -vnet_sw_interface_set_flags (vnet_main_t * vnm, u32 sw_if_index, u32 flags); +clib_error_t *vnet_sw_interface_set_flags (vnet_main_t * vnm, u32 sw_if_index, + u32 flags); /* Change interface class. */ -clib_error_t * -vnet_hw_interface_set_class (vnet_main_t * vnm, u32 hw_if_index, u32 new_hw_class_index); +clib_error_t *vnet_hw_interface_set_class (vnet_main_t * vnm, u32 hw_if_index, + u32 new_hw_class_index); /* Redirect rx pkts to node */ int vnet_hw_interface_rx_redirect_to_node (vnet_main_t * vnm, u32 hw_if_index, - u32 node_index); + u32 node_index); + +void vnet_hw_interface_init_for_class (vnet_main_t * vnm, u32 hw_if_index, + u32 hw_class_index, u32 hw_instance); -void vnet_hw_interface_init_for_class (vnet_main_t * vnm, u32 hw_if_index, u32 hw_class_index, u32 hw_instance); +/* Rename interface */ +clib_error_t *vnet_rename_interface (vnet_main_t * vnm, u32 hw_if_index, + char *new_name); + +/* Change interface mac address*/ +clib_error_t *vnet_hw_interface_change_mac_address (vnet_main_t * vnm, + u32 hw_if_index, + u64 mac_address); /* Formats sw/hw interface. */ format_function_t format_vnet_hw_interface; @@ -167,7 +195,8 @@ unformat_function_t unformat_vnet_hw_interface_flags; unformat_function_t unformat_vnet_sw_interface_flags; /* Node runtime for interface output function. */ -typedef struct { +typedef struct +{ u32 hw_if_index; u32 sw_if_index; u32 dev_instance; @@ -175,39 +204,49 @@ typedef struct { } vnet_interface_output_runtime_t; /* Interface output functions. */ -uword -vnet_interface_output_node (vlib_main_t * vm, - vlib_node_runtime_t * node, - vlib_frame_t * frame); -uword -vnet_interface_output_node_no_flatten (vlib_main_t * vm, - vlib_node_runtime_t * node, - vlib_frame_t * frame); - -word vnet_sw_interface_compare (vnet_main_t * vnm, uword sw_if_index0, uword sw_if_index1); -word vnet_hw_interface_compare (vnet_main_t * vnm, uword hw_if_index0, uword hw_if_index1); - -typedef enum { +void *vnet_interface_output_node_multiarch_select (void); +void *vnet_interface_output_node_no_flatten_multiarch_select (void); + +word vnet_sw_interface_compare (vnet_main_t * vnm, uword sw_if_index0, + uword sw_if_index1); +word vnet_hw_interface_compare (vnet_main_t * vnm, uword hw_if_index0, + uword hw_if_index1); + +typedef enum +{ #define _(sym,str) VNET_INTERFACE_OUTPUT_NEXT_##sym, foreach_intf_output_feat #undef _ - VNET_INTERFACE_OUTPUT_NEXT_DROP, + VNET_INTERFACE_OUTPUT_NEXT_DROP, VNET_INTERFACE_OUTPUT_NEXT_TX, } vnet_interface_output_next_t; -typedef enum { +typedef enum +{ VNET_INTERFACE_TX_NEXT_DROP, VNET_INTERFACE_TX_N_NEXT, } vnet_interface_tx_next_t; -typedef enum { +#define VNET_SIMULATED_ETHERNET_TX_NEXT_ETHERNET_INPUT VNET_INTERFACE_TX_N_NEXT + +typedef enum +{ VNET_INTERFACE_OUTPUT_ERROR_INTERFACE_DOWN, VNET_INTERFACE_OUTPUT_ERROR_INTERFACE_DELETED, } vnet_interface_output_error_t; /* Format for interface output traces. */ -u8 * format_vnet_interface_output_trace (u8 * s, va_list * va); +u8 *format_vnet_interface_output_trace (u8 * s, va_list * va); -serialize_function_t serialize_vnet_interface_state, unserialize_vnet_interface_state; +serialize_function_t serialize_vnet_interface_state, + unserialize_vnet_interface_state; #endif /* included_vnet_interface_funcs_h */ + +/* + * fd.io coding-style-patch-verification: ON + * + * Local Variables: + * eval: (c-set-style "gnu") + * End: + */