Currently when fragmented packets are to be transmitted in to tunnel, base_flow->nw_frag which was initially non-zero at reception is not reset to zero when the base_flow and flow are rewritten as part of the emulated tnl_push action in the ofproto-dpif-xlate module.
Because of this when fragmented packets are transmitted out of tunnel, we hit crash caused by the following assert. lib/odp-util.c:5654: assertion flow->nw_proto == base_flow->nw_proto && flow->nw_frag == base_flow->nw_frag failed in commit_set_ipv4_action() With the following change propagate_tunnel_data_to_flow__ is modified to reset *nw_frag* to zero. Also, that currently we don't fragment tunnelled packets, we should reset *nw_frag* to zero in propagate_tunnel_data_to_flow__. Signed-off-by: Jan Scheurich <jan.scheur...@ericsson.com> From: Rohith Basavaraja <rohith.basavar...@ericsson.com> CC: Jan Scheurich <jan.scheur...@ericsson.com> --- ofproto/ofproto-dpif-xlate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c index 94e3ddb..e9ed037 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -3310,6 +3310,7 @@ propagate_tunnel_data_to_flow__(struct flow *dst_flow, dst_flow->ipv6_dst = src_flow->tunnel.ipv6_dst; dst_flow->ipv6_src = src_flow->tunnel.ipv6_src; + dst_flow->nw_frag = 0; /* Tunnel packets are unfragmented. */ dst_flow->nw_tos = src_flow->tunnel.ip_tos; dst_flow->nw_ttl = src_flow->tunnel.ip_ttl; dst_flow->tp_dst = src_flow->tunnel.tp_dst; -- 1.9.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev