Correct pop MPLS ethtype consistency check to verify that the packet has an MPLS ethtype before the pop action rather than after: an MPLS ethtype is a pre-condition but not a post-condition of pop MPLS.
With this change the consistency check in ofpact_check__() becomes consistent with that in ofpact_from_nxast(). This was found using Ryu tests via the new make check-ryu target. It allows all of the "POP_MPLS"[1] tests to pass where they previously failed. [1] http://osrg.github.io/ryu-certification/switch/ovs Cc: Jarno Rajahalme <jrajaha...@nicira.com> Signed-off-by: Simon Horman <ho...@verge.net.au> --- lib/ofp-actions.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ofp-actions.c b/lib/ofp-actions.c index 781c3a1..3cd1e8b 100644 --- a/lib/ofp-actions.c +++ b/lib/ofp-actions.c @@ -2067,10 +2067,10 @@ ofpact_check__(enum ofputil_protocol *usable_protocols, struct ofpact *a, return 0; case OFPACT_POP_MPLS: - flow->dl_type = ofpact_get_POP_MPLS(a)->ethertype; if (!eth_type_mpls(flow->dl_type)) { inconsistent_match(usable_protocols); } + flow->dl_type = ofpact_get_POP_MPLS(a)->ethertype; return 0; case OFPACT_SAMPLE: -- 1.8.5.2 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev