I decided to add a patch which masks out the CFI bit in eth_push_vlan(). It will be included when I resend the series.
Here is an incremental. --- ofproto/ofproto-dpif.c | 24 ++++++++++++++---------- 1 files changed, 14 insertions(+), 10 deletions(-) diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index d9aa889..bff09b8 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -4278,18 +4278,22 @@ execute_controller_action(struct action_xlate_ctx *ctx, int len) if (ctx->flow.vlan_tci & htons(VLAN_CFI)) { eth_push_vlan(packet, ctx->flow.vlan_tci); } - } - if (ctx->flow.dl_type == htons(ETH_TYPE_IP) && packet->l4) { - packet_set_ipv4(packet, ctx->flow.nw_src, ctx->flow.nw_dst, - ctx->flow.nw_tos, ctx->flow.nw_ttl); - } + if (packet->l4) { + if (ctx->flow.dl_type == htons(ETH_TYPE_IP)) { + packet_set_ipv4(packet, ctx->flow.nw_src, ctx->flow.nw_dst, + ctx->flow.nw_tos, ctx->flow.nw_ttl); + } - if (packet->l7) { - if (ctx->flow.nw_proto == IPPROTO_TCP) { - packet_set_tcp_port(packet, ctx->flow.tp_src, ctx->flow.tp_dst); - } else if (ctx->flow.nw_proto == IPPROTO_UDP) { - packet_set_udp_port(packet, ctx->flow.tp_src, ctx->flow.tp_dst); + if (packet->l7) { + if (ctx->flow.nw_proto == IPPROTO_TCP) { + packet_set_tcp_port(packet, ctx->flow.tp_src, + ctx->flow.tp_dst); + } else if (ctx->flow.nw_proto == IPPROTO_UDP) { + packet_set_udp_port(packet, ctx->flow.tp_src, + ctx->flow.tp_dst); + } + } } } -- 1.7.7.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev