fib: copy the path extentions when creating fib src rr entry 76/31276/2
authorStanislav Zaikin <zstaseg@gmail.com>
Sat, 13 Feb 2021 13:32:15 +0000 (16:32 +0300)
committerNeale Ranns <neale@graphiant.com>
Wed, 16 Jun 2021 14:31:45 +0000 (14:31 +0000)
Type: fix
Signed-off-by: Stanislav Zaikin <zstaseg@gmail.com>
Change-Id: Ib4957bfc03b0dfc90fd28689d5b32cc3d82e7b74

src/vnet/fib/fib_entry_src_rr.c

index d0256b9..d8bc09c 100644 (file)
@@ -24,6 +24,7 @@
 #include "fib_entry_cover.h"
 #include "fib_entry.h"
 #include "fib_table.h"
+#include "fib_path_ext.h"
 
 /*
  * fib_entry_src_rr_resolve_via_connected
@@ -93,6 +94,7 @@ fib_entry_src_rr_use_covers_pl (fib_entry_src_t *src,
 {
     fib_node_index_t *entries = NULL;
     dpo_proto_t proto;
+    fib_entry_src_t *s;
 
     proto = fib_proto_to_dpo(fib_entry->fe_prefix.fp_proto);
     vec_add1(entries, fib_entry_get_index(fib_entry));
@@ -107,6 +109,14 @@ fib_entry_src_rr_use_covers_pl (fib_entry_src_t *src,
     else
     {
         src->fes_pl = cover->fe_parent;
+        vec_foreach (s,cover->fe_srcs)
+          {
+            if (s->fes_pl != cover->fe_parent)
+              continue;
+
+            src->fes_path_exts.fpel_exts = vec_dup (s->fes_path_exts.fpel_exts);
+            break;
+          }
     }
     vec_free(entries);
 }
@@ -195,6 +205,7 @@ fib_entry_src_rr_deactivate (fib_entry_src_t *src,
 
     fib_path_list_unlock(src->fes_pl);
     src->fes_pl = FIB_NODE_INDEX_INVALID;
+    vec_free (src->fes_path_exts.fpel_exts);
     src->fes_entry_flags = FIB_ENTRY_FLAG_NONE;
 }