FIB: encode the label stack in the FIB path during table dump
[vpp.git] / src / vnet / mfib / mfib_table.h
index 93f90dd..6be4f79 100644 (file)
  */
 typedef struct mfib_table_t_
 {
+    /**
+     * Required for pool_get_aligned
+     */
+    CLIB_CACHE_LINE_ALIGN_MARK(cacheline0);
+
     /**
      * A union of the protocol specific FIBs that provide the
      * underlying LPM mechanism.
@@ -80,7 +85,7 @@ typedef struct mfib_table_t_
  * @brief
  *  Format the description/name of the table
  */
-extern u8* format_mfib_table_name(u8* s, va_list ap);
+extern u8* format_mfib_table_name(u8* s, va_list *ap);
 
 /**
  * @brief
@@ -284,6 +289,21 @@ extern void mfib_table_flush(u32 fib_index,
 extern u32 mfib_table_get_index_for_sw_if_index(fib_protocol_t proto,
                                                 u32 sw_if_index);
 
+/**
+ * @brief
+ *  Get the Table-ID of the FIB from protocol and index
+ *
+ * @param fib_index
+ *  The FIB index
+ *
+ * @paran proto
+ *  The protocol of the FIB (and thus the entries therein)
+ *
+ * @return fib_index
+ *  The tableID of the FIB
+ */
+extern u32 mfib_table_get_table_id(u32 fib_index, fib_protocol_t proto);
+
 /**
  * @brief
  *  Get the index of the FIB for a Table-ID. This DOES NOT create the
@@ -398,6 +418,22 @@ extern void mfib_table_lock(u32 fib_index,
 extern u32 mfib_table_get_num_entries(u32 fib_index,
                                       fib_protocol_t proto);
 
+/**
+ * @brief
+ *  Get the less specific (covering) prefix
+ *
+ * @param fib_index
+ *  The index of the FIB
+ *
+ * @param prefix
+ *  The prefix to lookup
+ *
+ * @return
+ *  The index of the less specific fib_entry_t.
+ */
+extern fib_node_index_t mfib_table_get_less_specific(u32 fib_index,
+                                                   const mfib_prefix_t *prefix);
+
 /**
  * @brief
  * Get a pointer to a FIB table
@@ -420,5 +456,16 @@ extern void mfib_table_walk(u32 fib_index,
                             fib_protocol_t proto,
                             mfib_table_walk_fn_t fn,
                             void *ctx);
+/**
+ * @brief format (display) the memory usage for mfibs
+ */
+extern u8 * format_mfib_table_memory(u8 * s, va_list * args);
+
+/**
+ * To assit UT
+ */
+extern u32 mfib_table_get_n_routes(fib_node_index_t index,
+                                   fib_protocol_t proto);
+
 
 #endif