mirror of
https://github.com/openvswitch/ovs
synced 2025-10-29 15:28:56 +00:00
Always update ethertype on mpls_pop
The ethertype should always be updated on mpls_pop as there may be a transition between MPLS unicast (0x8847) and MPLS multicast (0x8848). Ben Pfaff tells me that this is consistent with the behaviour described in EXT-194 of the JIRA bug tracker. Signed-off-by: Simon Horman <horms+renesas@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
@@ -373,9 +373,8 @@ pop_mpls(struct ofpbuf *packet, ovs_be16 ethtype)
|
|||||||
size_t len;
|
size_t len;
|
||||||
mh = packet->l2_5;
|
mh = packet->l2_5;
|
||||||
len = (char*)packet->l2_5 - (char*)packet->l2;
|
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)) {
|
if (mh->mpls_lse & htonl(MPLS_BOS_MASK)) {
|
||||||
set_ethertype(packet, ethtype);
|
|
||||||
packet->l2_5 = NULL;
|
packet->l2_5 = NULL;
|
||||||
} else {
|
} else {
|
||||||
packet->l2_5 = (char*)packet->l2_5 + MPLS_HLEN;
|
packet->l2_5 = (char*)packet->l2_5 + MPLS_HLEN;
|
||||||
|
|||||||
@@ -944,9 +944,10 @@ followed by another \fBpush_mpls\fR will result in the first
|
|||||||
\fBpush_mpls\fR being discarded.
|
\fBpush_mpls\fR being discarded.
|
||||||
.
|
.
|
||||||
.IP \fBpop_mpls\fR:\fIethertype\fR
|
.IP \fBpop_mpls\fR:\fIethertype\fR
|
||||||
Strips the outermost MPLS label stack entry. If the MPLS label
|
Strips the outermost MPLS label stack entry.
|
||||||
stripped was the only one, changes the ethertype of a packet to
|
Currently the implementation restricts \fIethertype\fR to a non-MPLS Ethertype
|
||||||
\fIethertype\fR, which should not ordinarily be an MPLS Ethertype.
|
and thus \fBpop_mpls\fR should only be applied to packets with
|
||||||
|
an MPLS label stack depth of one.
|
||||||
.
|
.
|
||||||
.IP
|
.IP
|
||||||
There are some limitations in the implementation. \fBpop_mpls\fR
|
There are some limitations in the implementation. \fBpop_mpls\fR
|
||||||
|
|||||||
Reference in New Issue
Block a user