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);
- if (sw->type == VNET_SW_INTERFACE_TYPE_SUB)
+ if (sw->type == VNET_SW_INTERFACE_TYPE_SUB ||
+ sw->type == VNET_SW_INTERFACE_TYPE_P2P)
sw = vnet_get_sw_interface (vnm, sw->sup_sw_if_index);
return sw;
}
u32 dev_instance,
u32 hw_class_index, u32 hw_instance);
+/**
+ * Set interface output node - for interface registered without its output/tx
+ * nodes created because its VNET_DEVICE_CLASS did not specify any tx_function.
+ * This is typically the case for tunnel interfaces.
+ */
+void vnet_set_interface_output_node (vnet_main_t * vnm,
+ u32 hw_if_index, u32 node_index);
+
/* Creates a software interface given template. */
clib_error_t *vnet_create_sw_interface (vnet_main_t * vnm,
vnet_sw_interface_t * template,
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);
- return vlib_get_frame_to_node (vnm->vlib_main, hw->output_node_index);
+ return vlib_get_frame_to_node (vlib_get_main (), hw->output_node_index);
}
always_inline void
vlib_frame_t * f)
{
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);
+ return vlib_put_frame_to_node (vlib_get_main (), hw->output_node_index, f);
}
/* Change interface flags (e.g. up, down, enable, disable). */
/* Change interface mac address*/
clib_error_t *vnet_hw_interface_change_mac_address (vnet_main_t * vnm,
u32 hw_if_index,
- u64 mac_address);
+ u8 * mac_address);
+
+/* Change rx-mode */
+clib_error_t *set_hw_interface_change_rx_mode (vnet_main_t * vnm,
+ u32 hw_if_index,
+ u8 queue_id_valid,
+ u32 queue_id,
+ vnet_hw_interface_rx_mode
+ mode);
+
+/* Set the MTU on the HW interface */
+void vnet_hw_interface_set_mtu (vnet_main_t * vnm, u32 hw_if_index, u32 mtu);
+
+/* update the unnumbered state of an interface */
+void vnet_sw_interface_update_unnumbered (u32 sw_if_index,
+ u32 ip_sw_if_index, u8 enable);
+
+int vnet_sw_interface_stats_collect_enable_disable (u32 sw_if_index,
+ u8 enable);
/* Formats sw/hw interface. */
format_function_t format_vnet_hw_interface;
u32 is_deleted;
} vnet_interface_output_runtime_t;
-/* Interface output functions. */
+/* Interface output function. */
void *vnet_interface_output_node_multiarch_select (void);
-void *vnet_interface_output_node_flatten_multiarch_select (void);
word vnet_sw_interface_compare (vnet_main_t * vnm, uword sw_if_index0,
uword sw_if_index1);