dhcp: Move to plugin
[vpp.git] / src / vnet / fib / fib_entry_src_adj.c
index 57a802d..b7f5946 100644 (file)
@@ -237,7 +237,9 @@ fib_entry_src_adj_activate (fib_entry_src_t *src,
      *   ip route add 10.0.0.0/24 Eth0
      * is attached. and we want adj-fibs to install on Eth0.
      */
-    if (FIB_ENTRY_FLAG_ATTACHED & fib_entry_get_flags_i(cover))
+    if (FIB_ENTRY_FLAG_ATTACHED & fib_entry_get_flags_i(cover) ||
+        (FIB_ENTRY_FLAG_ATTACHED & fib_entry_get_flags_for_source(src->u.adj.fesa_cover,
+                                                                  FIB_SOURCE_INTERFACE)))
     {
         fib_entry_src_path_list_walk_cxt_t ctx = {
             .cover_itf = fib_entry_get_resolving_interface(src->u.adj.fesa_cover),
@@ -290,10 +292,17 @@ fib_entry_src_adj_deactivate (fib_entry_src_t *src,
     fib_entry_t *cover;
 
     /*
-     * remove the depednecy on the covering entry
+     * remove the dependency on the covering entry
      */
-    cover = fib_entry_get(src->u.adj.fesa_cover);
+    if (FIB_NODE_INDEX_INVALID == src->u.adj.fesa_cover)
+    {
+        /*
+         * this is the case if the entry is in the non-forwarding trie
+         */
+        return;
+    }
 
+    cover = fib_entry_get(src->u.adj.fesa_cover);
     fib_entry_cover_untrack(cover, src->u.adj.fesa_sibling);
 
     /*
@@ -360,7 +369,7 @@ fib_entry_src_adj_cover_update (fib_entry_src_t *src,
 {
     /*
      * the cover has updated, i.e. its forwarding or flags
-     * have changed. don't decativate/activate here, since this
+     * have changed. don't deactivate/activate here, since this
      * prefix is updated during the covers walk.
      */
     fib_entry_src_cover_res_t res = {