FIB: encode the label stack in the FIB path during table dump
[vpp.git] / src / vnet / mfib / mfib_table.h
index 4c1077f..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.
@@ -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
@@ -347,6 +367,7 @@ extern u32 mfib_table_find_or_create_and_lock_w_name(fib_protocol_t proto,
                                                      mfib_source_t source,
                                                      const u8 *name);
 
+
 /**
  * @brief
  * Take a reference counting lock on the table
@@ -397,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
@@ -419,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