option = (GeneveOptionHdr *)((UINT8 *)option + len);
optLen -= len;
}
- memcpy(TunnelKeyGetOptions(tunKey), option, optLen);
+ memcpy(TunnelKeyGetOptions(tunKey), NlAttrData(attr), tunKey->tunOptLen);
if (isCritical) {
tunKey->flags |= OVS_TNL_F_CRT_OPT;
}
if (GetPortFromPriv(vport) == dstPort) {
switch (nwProto) {
case IPPROTO_UDP:
- if (vport->ovsType != OVS_VPORT_TYPE_VXLAN) {
+ if (vport->ovsType != OVS_VPORT_TYPE_GENEVE &&
+ vport->ovsType != OVS_VPORT_TYPE_VXLAN) {
continue;
}
break;
#include "Stt.h"
#include "Switch.h"
#include "VxLan.h"
+#include "Geneve.h"
#define OVS_MAX_DPPORTS MAXUINT16
#define OVS_DPPORT_NUMBER_INVALID OVS_MAX_DPPORTS
OvsIsTunnelVportType(OVS_VPORT_TYPE ovsType)
{
return ovsType == OVS_VPORT_TYPE_VXLAN ||
+ ovsType == OVS_VPORT_TYPE_GENEVE ||
ovsType == OVS_VPORT_TYPE_STT ||
ovsType == OVS_VPORT_TYPE_GRE;
}
case OVS_VPORT_TYPE_VXLAN:
dstPort = ((POVS_VXLAN_VPORT)vportPriv)->dstPort;
break;
+ case OVS_VPORT_TYPE_GENEVE:
+ dstPort = ((POVS_GENEVE_VPORT) vportPriv)->dstPort;
+ break;
default:
ASSERT(! "Port is not a tunnel port");
}