summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Vxlan.c
diff options
context:
space:
mode:
Diffstat (limited to 'datapath-windows/ovsext/Vxlan.c')
-rw-r--r--datapath-windows/ovsext/Vxlan.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/datapath-windows/ovsext/Vxlan.c b/datapath-windows/ovsext/Vxlan.c
index db452483a..949e069b7 100644
--- a/datapath-windows/ovsext/Vxlan.c
+++ b/datapath-windows/ovsext/Vxlan.c
@@ -334,7 +334,7 @@ ret_error:
*----------------------------------------------------------------------------
* OvsEncapVxlan --
* Encapsulates the packet if L2/L3 for destination resolves. Otherwise,
- * enqueues a callback that does encapsulatation after resolution.
+ * enqueues a callback that does encapsulation after resolution.
*----------------------------------------------------------------------------
*/
NDIS_STATUS
@@ -343,15 +343,15 @@ OvsEncapVxlan(POVS_VPORT_ENTRY vport,
OvsIPv4TunnelKey *tunKey,
POVS_SWITCH_CONTEXT switchContext,
POVS_PACKET_HDR_INFO layers,
- PNET_BUFFER_LIST *newNbl)
+ PNET_BUFFER_LIST *newNbl,
+ POVS_FWD_INFO switchFwdInfo)
{
NTSTATUS status;
OVS_FWD_INFO fwdInfo;
- status = OvsLookupIPFwdInfo(tunKey->dst, &fwdInfo);
+ status = OvsLookupIPFwdInfo(tunKey->src, tunKey->dst, &fwdInfo);
if (status != STATUS_SUCCESS) {
OvsFwdIPHelperRequest(NULL, 0, tunKey, NULL, NULL, NULL);
- // return NDIS_STATUS_PENDING;
/*
* XXX: Don't know if the completionList will make any sense when
* accessed in the callback. Make sure the caveats are known.
@@ -362,6 +362,8 @@ OvsEncapVxlan(POVS_VPORT_ENTRY vport,
return NDIS_STATUS_FAILURE;
}
+ RtlCopyMemory(switchFwdInfo->value, fwdInfo.value, sizeof fwdInfo.value);
+
return OvsDoEncapVxlan(vport, curNbl, tunKey, &fwdInfo, layers,
switchContext, newNbl);
}