FIB: encode the label stack in the FIB path during table dump
[vpp.git] / src / vnet / bier / bier_table.h
index a22e2e3..5264e4c 100644 (file)
@@ -36,6 +36,12 @@ struct bier_route_update_t_;
  * bit-position. Since this is smal <4096, the table is a flat arry
  */
 typedef struct bier_table_t_ {
+    /**
+     * required for pool_get_aligned.
+     *  memebers used in the switch path come first!
+     */
+    CLIB_CACHE_LINE_ALIGN_MARK(cacheline0);
+
     /**
      * Save the MPLS local label associated with the table
      */
@@ -64,11 +70,6 @@ typedef struct bier_table_t_ {
      */
     index_t *bt_entries;
 
-    /**
-     * Everything before this declaration is unused in the switch path
-     */
-    CLIB_CACHE_LINE_ALIGN_MARK(cacheline0);
-
     /**
      * The identity/key or the table. we need the hdr_len in the data-path
      */
@@ -90,14 +91,20 @@ STATIC_ASSERT((sizeof(bier_table_t) <= 2*CLIB_CACHE_LINE_BYTES),
 
 extern index_t bier_table_add_or_lock(const bier_table_id_t *id,
                                       mpls_label_t ll);
+extern index_t bier_table_lock(const bier_table_id_t *id);
 extern void bier_table_unlock(const bier_table_id_t *id);
 
-extern void bier_table_route_add(const bier_table_id_t *bti,
-                                 bier_bp_t bp,
-                                 fib_route_path_t *brp);
-extern void bier_table_route_remove(const bier_table_id_t *bti,
-                                    bier_bp_t bp,
-                                    fib_route_path_t *brp);
+extern void bier_table_route_path_add(const bier_table_id_t *bti,
+                                      bier_bp_t bp,
+                                      fib_route_path_t *brp);
+extern void bier_table_route_path_remove(const bier_table_id_t *bti,
+                                         bier_bp_t bp,
+                                         fib_route_path_t *brp);
+extern void bier_table_route_path_update(const bier_table_id_t *bti,
+                                         bier_bp_t bp,
+                                         fib_route_path_t *brp);
+extern void bier_table_route_delete(const bier_table_id_t *bti,
+                                    bier_bp_t b);
 
 extern void bier_table_show_all(vlib_main_t * vm,
                                 bier_show_flags_t flags);