#include <vnet/srmpls/sr_mpls.h>
#include <vnet/fib/mpls_fib.h>
#include <vnet/dpo/dpo.h>
-#include <vnet/dpo/replicate_dpo.h>
-#include <vnet/dpo/mpls_label_dpo.h>
-#include <vnet/dpo/lookup_dpo.h>
#include <vnet/ip/ip.h>
#include <vppinfra/error.h>
(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)
{
+ 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,
(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;
}
FIB_SOURCE_SR,
FIB_ENTRY_FLAG_LOOSE_URPF_EXEMPT, paths);
- vec_add1 (path.frp_label_stack, MPLS_IETF_IMPLICIT_NULL_LABEL);
+ fib_mpls_label_t fml = {
+ .fml_value = MPLS_IETF_IMPLICIT_NULL_LABEL,
+ };
+
+ vec_add1 (path.frp_label_stack, fml);
pfx.fp_eos = MPLS_NON_EOS;
path.frp_eos = MPLS_NON_EOS;