diff options
author | Rajesh Goel <rajegoel@cisco.com> | 2019-10-06 13:17:36 +0530 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2019-10-09 09:20:51 +0000 |
commit | d6f1c9c5141c177a14d011a514e392a9357398fb (patch) | |
tree | c4a08dd88f69035ae659301980a97fe83923f85a /src/vnet/dpo/mpls_label_dpo.c | |
parent | ab96454e3aba8e60094e773a39e9d28f50d7192e (diff) |
mpls: support fragmentation of mpls output packet
Type: fix
Signed-off-by: Rajesh Goel <rajegoel@cisco.com>
Change-Id: Ie4372c5cf58ab215cdec5ce56f8a994daaba2844
Diffstat (limited to 'src/vnet/dpo/mpls_label_dpo.c')
-rw-r--r-- | src/vnet/dpo/mpls_label_dpo.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/vnet/dpo/mpls_label_dpo.c b/src/vnet/dpo/mpls_label_dpo.c index 1074a959310..9d147f98f13 100644 --- a/src/vnet/dpo/mpls_label_dpo.c +++ b/src/vnet/dpo/mpls_label_dpo.c @@ -484,6 +484,12 @@ mpls_label_imposition_inline (vlib_main_t * vm, exp2 = ip_dscp_to_mpls_exp(ip2->tos); exp3 = ip_dscp_to_mpls_exp(ip3->tos); } + + /* save the payload proto information in mpls opaque */ + vnet_buffer(b0)->mpls.pyld_proto = DPO_PROTO_IP4; + vnet_buffer(b1)->mpls.pyld_proto = DPO_PROTO_IP4; + vnet_buffer(b2)->mpls.pyld_proto = DPO_PROTO_IP4; + vnet_buffer(b3)->mpls.pyld_proto = DPO_PROTO_IP4; } else if (DPO_PROTO_IP6 == dproto) { @@ -518,6 +524,12 @@ mpls_label_imposition_inline (vlib_main_t * vm, exp3 = ip_dscp_to_mpls_exp( ip6_traffic_class_network_order(ip3)); } + + /* save the payload proto information in mpls opaque */ + vnet_buffer(b0)->mpls.pyld_proto = DPO_PROTO_IP6; + vnet_buffer(b1)->mpls.pyld_proto = DPO_PROTO_IP6; + vnet_buffer(b2)->mpls.pyld_proto = DPO_PROTO_IP6; + vnet_buffer(b3)->mpls.pyld_proto = DPO_PROTO_IP6; } else { @@ -787,6 +799,9 @@ mpls_label_imposition_inline (vlib_main_t * vm, ttl0 = ip0->ttl; exp0 = ip_dscp_to_mpls_exp(ip0->tos); } + + /* save the payload proto information in mpls opaque */ + vnet_buffer(b0)->mpls.pyld_proto = DPO_PROTO_IP4; } else if (DPO_PROTO_IP6 == dproto) { @@ -805,6 +820,9 @@ mpls_label_imposition_inline (vlib_main_t * vm, exp0 = ip_dscp_to_mpls_exp( ip6_traffic_class_network_order(ip0)); } + + /* save the payload proto information in mpls opaque */ + vnet_buffer(b0)->mpls.pyld_proto = DPO_PROTO_IP6; } else { |