In xlate_actions(), when packet comes from a L3 port and its packet_type is not Ethernet, then a dummy Ethernet header is added to the packet by setting flow->packet_type to Ethernet and zero out flow->dl_src and flow->dl_dst. This process should be avoided if packet is recirculated, i.e. xin->frozen_state is set properly.
Signed-off-by: Zoltan Balogh <[email protected]> CC: Jan Scheurich <[email protected]> --- ofproto/ofproto-dpif-xlate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c index 9b3a2f28a..d85441cb4 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -7041,7 +7041,7 @@ xlate_actions(struct xlate_in *xin, struct xlate_out *xout) struct xport *in_port = get_ofp_port(xbridge, ctx.base_flow.in_port.ofp_port); - if (flow->packet_type != htonl(PT_ETH) && in_port && + if (!xin->frozen_state && flow->packet_type != htonl(PT_ETH) && in_port && in_port->pt_mode == NETDEV_PT_LEGACY_L3 && ctx.table_id == 0) { /* Add dummy Ethernet header to non-L2 packet if it's coming from a * L3 port. So all packets will be L2 packets for lookup. -- 2.14.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
