aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/fib/fib_path.c
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2018-02-23 05:29:09 -0800
committerDamjan Marion <dmarion.lists@gmail.com>2018-03-09 11:59:58 +0000
commit31ed74407643595fdce206e9d7487108fb8b33ab (patch)
treec22c3703c30b7d457b858fe899f56e57613cbb52 /src/vnet/fib/fib_path.c
parent8f931a47b0fa58d5d33a792062650a42ff8bef70 (diff)
MPLS Unifom mode
- support both pipe and uniform modes for all MPLS LSP - all API programming for output-labels requires that the mode (and associated data) is specificed - API changes in MPLS, BIER and IP are involved - new DPO [sub] types for MPLS labels to handle the two modes. Change-Id: I87b76401e996f10dfbdbe4552ff6b19af958783c Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/vnet/fib/fib_path.c')
-rw-r--r--src/vnet/fib/fib_path.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/vnet/fib/fib_path.c b/src/vnet/fib/fib_path.c
index b4f9971f52e..a8593905438 100644
--- a/src/vnet/fib/fib_path.c
+++ b/src/vnet/fib/fib_path.c
@@ -1349,7 +1349,8 @@ fib_path_create (fib_node_index_t pl_index,
{
path->fp_type = FIB_PATH_TYPE_DEAG;
path->deag.fp_tbl_id = rpath->frp_fib_index;
- }
+ path->deag.fp_rpf_id = ~0;
+ }
}
else
{
@@ -2238,6 +2239,7 @@ fib_path_contribute_urpf (fib_node_index_t path_index,
void
fib_path_stack_mpls_disp (fib_node_index_t path_index,
dpo_proto_t payload_proto,
+ fib_mpls_lsp_mode_t mode,
dpo_id_t *dpo)
{
fib_path_t *path;
@@ -2253,10 +2255,8 @@ fib_path_stack_mpls_disp (fib_node_index_t path_index,
dpo_id_t tmp = DPO_INVALID;
dpo_copy(&tmp, dpo);
- dpo_set(dpo,
- DPO_MPLS_DISPOSITION,
- payload_proto,
- mpls_disp_dpo_create(payload_proto, ~0, &tmp));
+
+ mpls_disp_dpo_create(payload_proto, ~0, mode, &tmp, dpo);
dpo_reset(&tmp);
break;
}
@@ -2265,12 +2265,10 @@ fib_path_stack_mpls_disp (fib_node_index_t path_index,
dpo_id_t tmp = DPO_INVALID;
dpo_copy(&tmp, dpo);
- dpo_set(dpo,
- DPO_MPLS_DISPOSITION,
- payload_proto,
- mpls_disp_dpo_create(payload_proto,
- path->deag.fp_rpf_id,
- &tmp));
+
+ mpls_disp_dpo_create(payload_proto,
+ path->deag.fp_rpf_id,
+ mode, &tmp, dpo);
dpo_reset(&tmp);
break;
}