Code Review
/
vpp.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
review
|
tree
raw
|
patch
|
inline
| side by side (parent:
09b2784
)
VPP-1113 SR MPLS path.frp_label_stack
21/10021/3
author
Pablo Camarillo
<pcamaril@cisco.com>
Mon, 8 Jan 2018 14:53:20 +0000
(15:53 +0100)
committer
Dave Wallace
<dwallacelf@gmail.com>
Tue, 9 Jan 2018 21:43:40 +0000
(21:43 +0000)
provide one label stack per fib_table_entry_path_add2 call. otherwise multiple mheap releases take place.
Change-Id: I475ca1b801fc85dddda0b540c69ad628a274df7f
Signed-off-by: Pablo Camarillo <pcamaril@cisco.com>
src/vnet/srmpls/sr_mpls_policy.c
patch
|
blob
|
history
diff --git
a/src/vnet/srmpls/sr_mpls_policy.c
b/src/vnet/srmpls/sr_mpls_policy.c
index
d75f2d1
..
1a5ba6c
100755
(executable)
--- a/
src/vnet/srmpls/sr_mpls_policy.c
+++ b/
src/vnet/srmpls/sr_mpls_policy.c
@@
-75,24
+75,24
@@
create_sl (mpls_sr_policy_t * sr_policy, mpls_label_t * sl, u32 weight)
(weight != (u32) ~ 0 ? weight : SR_SEGMENT_LIST_WEIGHT_DEFAULT);
segment_list->segments = vec_dup (sl);
(weight != (u32) ~ 0 ? weight : SR_SEGMENT_LIST_WEIGHT_DEFAULT);
segment_list->segments = vec_dup (sl);
- fib_route_path_t path = {
- .frp_proto = DPO_PROTO_MPLS,
- .frp_sw_if_index = ~0,
- .frp_fib_index = 0,
- .frp_weight = segment_list->weight,
- .frp_flags = FIB_ROUTE_PATH_FLAG_NONE,
- .frp_label_stack = NULL,
- .frp_local_label = sl[0],
- };
-
- vec_add (path.frp_label_stack, sl + 1, vec_len (sl) - 1);
-
- fib_route_path_t *paths = NULL;
- vec_add1 (paths, path);
-
mpls_eos_bit_t eos;
FOR_EACH_MPLS_EOS_BIT (eos)
{
mpls_eos_bit_t eos;
FOR_EACH_MPLS_EOS_BIT (eos)
{
+ fib_route_path_t path = {
+ .frp_proto = DPO_PROTO_MPLS,
+ .frp_sw_if_index = ~0,
+ .frp_fib_index = 0,
+ .frp_weight = segment_list->weight,
+ .frp_flags = FIB_ROUTE_PATH_FLAG_NONE,
+ .frp_label_stack = NULL,
+ .frp_local_label = sl[0],
+ };
+
+ vec_add (path.frp_label_stack, sl + 1, vec_len (sl) - 1);
+
+ fib_route_path_t *paths = NULL;
+ vec_add1 (paths, path);
+
/* *INDENT-OFF* */
fib_prefix_t pfx = {
.fp_len = 21,
/* *INDENT-OFF* */
fib_prefix_t pfx = {
.fp_len = 21,
@@
-109,10
+109,9
@@
create_sl (mpls_sr_policy_t * sr_policy, mpls_label_t * sl, u32 weight)
(sr_policy->type == SR_POLICY_TYPE_DEFAULT ?
FIB_ENTRY_FLAG_NONE :
FIB_ENTRY_FLAG_MULTICAST), paths);
(sr_policy->type == SR_POLICY_TYPE_DEFAULT ?
FIB_ENTRY_FLAG_NONE :
FIB_ENTRY_FLAG_MULTICAST), paths);
+ vec_free (paths);
}
}
- vec_free (paths);
-
return segment_list;
}
return segment_list;
}