SR replicate mheap corruption fix VPP-672 10/5910/3
authorshwethab <shwetha.bhandari@gmail.com>
Wed, 29 Mar 2017 11:36:37 +0000 (11:36 +0000)
committerNeale Ranns <nranns@cisco.com>
Wed, 29 Mar 2017 13:57:13 +0000 (13:57 +0000)
Change-Id: If1c68fc63fa71fab198f2bf4f79bdd7a9841c2e8
Signed-off-by: shwethab <shwetha.bhandari@gmail.com>
Signed-off-by: Pablo Camarillo <pcamaril@cisco.com>
src/vnet/fib/fib_entry_src_api.c
src/vnet/fib/fib_entry_src_special.c
src/vnet/sr/sr_policy_rewrite.c
src/vnet/sr/sr_steering.c

index 1277bd6..19db881 100644 (file)
@@ -117,4 +117,5 @@ fib_entry_src_api_register (void)
     fib_entry_src_register(FIB_SOURCE_CLI, &api_src_vft);
     fib_entry_src_register(FIB_SOURCE_DHCP, &api_src_vft);
     fib_entry_src_register(FIB_SOURCE_IP6_ND_PROXY, &api_src_vft);
+    fib_entry_src_register(FIB_SOURCE_SR, &api_src_vft);
 }
index 52a6134..75605d7 100644 (file)
@@ -66,6 +66,5 @@ fib_entry_src_special_register (void)
     fib_entry_src_register(FIB_SOURCE_MAP, &special_src_vft);
     fib_entry_src_register(FIB_SOURCE_SIXRD, &special_src_vft);
     fib_entry_src_register(FIB_SOURCE_CLASSIFY, &special_src_vft);
-    fib_entry_src_register(FIB_SOURCE_SR, &special_src_vft);
     fib_entry_src_register(FIB_SOURCE_AE, &special_src_vft);
 }
index dfdd795..4592738 100755 (executable)
@@ -516,11 +516,6 @@ update_replicate (ip6_sr_policy_t * sr_policy)
   replicate_multipath_update (&sr_policy->ip6_dpo, ip6_path_vector);
   if (sr_policy->is_encap)
     replicate_multipath_update (&sr_policy->ip4_dpo, ip4_path_vector);
-
-  /* Cleanup */
-  vec_free (b_path_vector);
-  vec_free (ip6_path_vector);
-  vec_free (ip4_path_vector);
 }
 
 /******************************* SR rewrite API *******************************/
@@ -607,10 +602,6 @@ sr_policy_add (ip6_address_t * bsid, ip6_address_t * segments,
                                                     "SRv6 steering of IP6 prefixes through BSIDs");
       sm->fib_table_ip4 = fib_table_create_and_lock (FIB_PROTOCOL_IP6,
                                                     "SRv6 steering of IP4 prefixes through BSIDs");
-      fib_table_flush (sm->fib_table_ip6, FIB_PROTOCOL_IP6,
-                      FIB_SOURCE_SPECIAL);
-      fib_table_flush (sm->fib_table_ip4, FIB_PROTOCOL_IP6,
-                      FIB_SOURCE_SPECIAL);
     }
 
   /* Create IPv6 FIB for the BindingSID attached to the DPO of the only SL */
index 86d6f27..8d66c5f 100755 (executable)
@@ -306,7 +306,8 @@ update_fib:
                                                             (table_id !=
                                                              (u32) ~ 0 ?
                                                              table_id : 0)),
-                               &pfx, FIB_SOURCE_CLI, FIB_ENTRY_FLAG_NONE,
+                               &pfx, FIB_SOURCE_SR,
+                               FIB_ENTRY_FLAG_LOOSE_URPF_EXEMPT,
                                FIB_PROTOCOL_IP6,
                                (ip46_address_t *) & sr_policy->bsid, ~0,
                                sm->fib_table_ip6, 1, NULL,
@@ -322,7 +323,8 @@ update_fib:
                                                             (table_id !=
                                                              (u32) ~ 0 ?
                                                              table_id : 0)),
-                               &pfx, FIB_SOURCE_CLI, FIB_ENTRY_FLAG_NONE,
+                               &pfx, FIB_SOURCE_SR,
+                               FIB_ENTRY_FLAG_LOOSE_URPF_EXEMPT,
                                FIB_PROTOCOL_IP6,
                                (ip46_address_t *) & sr_policy->bsid, ~0,
                                sm->fib_table_ip4, 1, NULL,