ipsec: Reference count the SAs
[vpp.git] / src / vnet / interface_funcs.h
index c4c6617..6d404b4 100644 (file)
@@ -306,8 +306,23 @@ vnet_sw_interface_get_mtu (vnet_main_t * vnm, u32 sw_if_index, vnet_mtu_t af)
 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 uword
+vnet_sw_interface_is_link_up (vnet_main_t * vnm, u32 sw_if_index)
+{
+  vnet_sw_interface_t *sw = vnet_get_sup_sw_interface (vnm, sw_if_index);
+
+  return (vnet_hw_interface_is_link_up (vnm, sw->hw_if_index));
+}
+
+always_inline uword
+vnet_sw_interface_is_up (vnet_main_t * vnm, u32 sw_if_index)
+{
+  return (vnet_sw_interface_is_admin_up (vnm, sw_if_index) &&
+         vnet_sw_interface_is_link_up (vnm, sw_if_index));
 }
 
 always_inline vlib_frame_t *
@@ -341,6 +356,9 @@ clib_error_t *vnet_hw_interface_set_flags (vnet_main_t * vnm, u32 hw_if_index,
 clib_error_t *vnet_sw_interface_set_flags (vnet_main_t * vnm, u32 sw_if_index,
                                           vnet_sw_interface_flags_t flags);
 
+void vnet_sw_interface_admin_up (vnet_main_t * vnm, u32 sw_if_index);
+void vnet_sw_interface_admin_down (vnet_main_t * vnm, u32 sw_if_index);
+
 /* Change interface class. */
 clib_error_t *vnet_hw_interface_set_class (vnet_main_t * vnm, u32 hw_if_index,
                                           u32 new_hw_class_index);
@@ -418,8 +436,6 @@ typedef struct
 } vnet_interface_output_runtime_t;
 
 /* Interface output function. */
-void *vnet_interface_output_node_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,
@@ -444,6 +460,8 @@ typedef enum
 {
   VNET_INTERFACE_OUTPUT_ERROR_INTERFACE_DOWN,
   VNET_INTERFACE_OUTPUT_ERROR_INTERFACE_DELETED,
+  VNET_INTERFACE_OUTPUT_ERROR_NO_BUFFERS_FOR_GSO,
+  VNET_INTERFACE_OUTPUT_ERROR_UNHANDLED_GSO_TYPE,
 } vnet_interface_output_error_t;
 
 /* Format for interface output traces. */