The keylen is not properly updated in the case of MPLS, directly causing the hash to be calculated improperly.
Signed-off-by: Alin Gabriel Serdean <[email protected]> --- datapath-windows/ovsext/DpInternal.h | 1 + datapath-windows/ovsext/Flow.c | 1 + 2 files changed, 2 insertions(+) diff --git a/datapath-windows/ovsext/DpInternal.h b/datapath-windows/ovsext/DpInternal.h index 72e9b20..c094f32 100644 --- a/datapath-windows/ovsext/DpInternal.h +++ b/datapath-windows/ovsext/DpInternal.h @@ -174,6 +174,7 @@ typedef __declspec(align(8)) struct OvsFlowKey { #define OVS_IPV6_KEY_SIZE (sizeof (Ipv6Key)) #define OVS_ARP_KEY_SIZE (sizeof (ArpKey)) #define OVS_ICMPV6_KEY_SIZE (sizeof (Icmp6Key)) +#define OVS_MPLS_KEY_SIZE (sizeof (MplsKey)) typedef struct OvsFlowStats { Ovs64AlignedU64 packetCount; diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c index c22e8cf..5eec513 100644 --- a/datapath-windows/ovsext/Flow.c +++ b/datapath-windows/ovsext/Flow.c @@ -1931,6 +1931,7 @@ OvsExtractFlow(const NET_BUFFER_LIST *packet, const MPLSHdr *mpls; MplsKey *mplsKey = &flow->mplsKey; ((UINT64 *)mplsKey)[0] = 0; + flow->l2.keyLen += OVS_MPLS_KEY_SIZE; /* * In the presence of an MPLS label stack the end of the L2 -- 1.9.5.msysgit.0 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
