ofproto-dpif: Fix VLAN and other field handling in OFPP_NORMAL.
This is a nontrivial cross-port of commit
823518f1f "ofproto-dpif: Fix VLAN
and other field handling in OFPP_NORMAL" from the "master" branch.
compose_actions(), which is part of the OFPP_NORMAL implementation, had
multiple flaws that this commit corrects.
First, it did not commit changes made to the flow by actions preceding the
output to OFPP_NORMAL. This means that, for example, if an OpenFlow action
to modify an L2 or L3 header preceded the output to OFPP_NORMAL, then
OFPP_NORMAL would output its packets without those changes.
Second, it did not update the action_xlate_ctx's notion of the VLAN that
was currently set, in the cases where it modified the current VLAN. This
means that actions following the output to OFPP_NORMAL could output to
unexpected VLANs.
Bug #6001.
Reported-by: Michael Mao <mmao@nicira.com>