The ethertype should always be updated on mpls_pop as there may be a transition between MPLS unicast (0x8847) and MPLS multicast (0x8848).
Signed-off-by: Simon Horman <horms+rene...@verge.net.au> --- lib/packets.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/packets.c b/lib/packets.c index 77aa7d3..f2e0f81 100644 --- a/lib/packets.c +++ b/lib/packets.c @@ -373,9 +373,8 @@ pop_mpls(struct ofpbuf *packet, ovs_be16 ethtype) size_t len; mh = packet->l2_5; len = (char*)packet->l2_5 - (char*)packet->l2; - /* If bottom of the stack set ethertype. */ + set_ethertype(packet, ethtype); if (mh->mpls_lse & htonl(MPLS_BOS_MASK)) { - set_ethertype(packet, ethtype); packet->l2_5 = NULL; } else { packet->l2_5 = (char*)packet->l2_5 + MPLS_HLEN; -- 1.8.2.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev