ipsec: IPSec protection for multi-point tunnel interfaces
[vpp.git] / src / vnet / lisp-gpe / lisp_gpe_fwd_entry.h
index f792367..dfdb8b9 100644 (file)
@@ -74,6 +74,11 @@ typedef struct lisp_gpe_fwd_entry_key_t_
  */
 typedef struct lisp_gpe_fwd_entry_t_
 {
+  /**
+   * Follows src/dst or dst only forwarding policy
+   */
+  u8 is_src_dst;
+
   /**
    * This object joins the FIB control plane graph to receive updates to
    * for changes to the graph.
@@ -81,7 +86,7 @@ typedef struct lisp_gpe_fwd_entry_t_
   fib_node_t node;
 
   /**
-   * The Entry's key: {lEID,r-EID,vni}
+   * The Entry's key: {lEID,rEID,vni}
    */
   lisp_gpe_fwd_entry_key_t *key;
 
@@ -150,6 +155,33 @@ typedef struct lisp_gpe_fwd_entry_t_
        */
       dpo_id_t dpo;
     } l2;
+
+    /**
+     * Fields relevant to an NSH entry
+     */
+    struct
+    {
+      /**
+       * The path-list created for the forwarding
+       */
+      fib_node_index_t path_list_index;
+
+      /**
+       * Child index of this entry on the path-list
+       */
+      u32 child_index;
+
+      /**
+       * The DPO contributed by NSH
+       */
+      dpo_id_t dpo;
+
+      /**
+       * The DPO used for forwarding. Obtained after stacking tx node
+       * onto lb choice
+       */
+      dpo_id_t choice;
+    } nsh;
   };
 
   union
@@ -166,6 +198,12 @@ typedef struct lisp_gpe_fwd_entry_t_
      */
     negative_fwd_actions_e action;
   };
+
+  /**
+   * used for getting load balance statistics
+   */
+  index_t dpoi_index;
+
 } lisp_gpe_fwd_entry_t;
 
 extern int
@@ -177,6 +215,20 @@ extern void vnet_lisp_gpe_fwd_entry_flush (void);
 extern u32 lisp_l2_fib_lookup (lisp_gpe_main_t * lgm,
                               u16 bd_index, u8 src_mac[8], u8 dst_mac[8]);
 
+extern const dpo_id_t *lisp_nsh_fib_lookup (lisp_gpe_main_t * lgm,
+                                           u32 spi_si);
+extern void
+vnet_lisp_gpe_del_fwd_counters (vnet_lisp_gpe_add_del_fwd_entry_args_t * a,
+                               u32 fwd_entry_index);
+extern void
+vnet_lisp_gpe_add_fwd_counters (vnet_lisp_gpe_add_del_fwd_entry_args_t * a,
+                               u32 fwd_entry_index);
+extern u32 *vnet_lisp_gpe_get_fwd_entry_vnis (void);
+
+int
+vnet_lisp_gpe_get_fwd_stats (vnet_lisp_gpe_add_del_fwd_entry_args_t * a,
+                            vlib_counter_t * c);
+
 #endif
 
 /*