virtio: fix overflow in case of buffering + drop
[vpp.git] / src / vnet / fib / fib_entry.c
index d8c57fd..33c29a6 100644 (file)
@@ -708,7 +708,7 @@ fib_entry_post_install_actions (fib_entry_t *fib_entry,
 {
     fib_entry = fib_entry_post_flag_update_actions(fib_entry,
                                                    old_flags);
-    fib_entry_src_action_installed(fib_entry, source);
+    fib_entry = fib_entry_src_action_installed(fib_entry, source);
 
     return (fib_entry);
 }
@@ -1464,6 +1464,27 @@ fib_entry_get_resolving_interface (fib_node_index_t entry_index)
     return (fib_path_list_get_resolving_interface(fib_entry->fe_parent));
 }
 
+u32
+fib_entry_get_any_resolving_interface (fib_node_index_t entry_index)
+{
+    const fib_entry_src_t *src;
+    fib_entry_t *fib_entry;
+    fib_source_t source;
+    u32 sw_if_index;
+
+    fib_entry = fib_entry_get(entry_index);
+
+    FOR_EACH_SRC_ADDED(fib_entry, src, source,
+    ({
+        sw_if_index = fib_entry_get_resolving_interface_for_source (entry_index,
+                                                                    source);
+
+        if (~0 != sw_if_index)
+            break;
+    }));
+    return (sw_if_index);
+}
+
 fib_source_t
 fib_entry_get_best_source (fib_node_index_t entry_index)
 {
@@ -1713,7 +1734,7 @@ fib_entry_pool_size (void)
     return (pool_elts(fib_entry_pool));
 }
 
-#ifdef CLIB_DEBUG
+#if CLIB_DEBUG > 0
 void
 fib_table_assert_empty (const fib_table_t *fib_table)
 {