diff options
author | Wilson Peng <pweisong@vmware.com> | 2022-06-02 14:44:04 +0800 |
---|---|---|
committer | Alin-Gabriel Serdean <aserdean@ovn.org> | 2022-06-22 01:56:05 +0300 |
commit | 70f81aa23a6aa276aa8282cd0ba3fdd34f071434 (patch) | |
tree | 8bb6f2b3749aa8c8af9b4f496199aaa0016e20e5 /datapath-windows/ovsext/Flow.h | |
parent | bca41028307a18d5cf10b41fdfb464ff3d9b6c81 (diff) | |
download | openvswitch-70f81aa23a6aa276aa8282cd0ba3fdd34f071434.tar.gz |
datapath-windows: Update layers for multiple tunnels processing
While testing OVS-windows for multiple IPV6 Geneve tunnels on Windows2019VM,
for the broadcast/mutlicast packets, it needs to flood out via configured
multiple Geneve tunnels. Then in some flow pipeline processing, it may have
at least two tunnel processing in OVS_ACTION_ATTR_SET action. When processing
the second tunnel setting it may need flush out the packet out via tunnel before
setting new tunnel parameter in tunKey. We found in this case, after flushing out
the packet out via tunnel, the related layers pointer does not update. In our
test setup on Windows2019VM, it will cause BSOD which is triggered in other Windows
processes. We suspect it may be related to memory overwriting. When we apply the
fix in the patch, no BSOD is observed on the same VM and same packet/tunnel settting.
Another thing needs to be mentioned is for multiple Geneve IPv4 tunnels, the same
kind broadcase/multicast packet will not cause BSOD.
Signed-off-by: Wilson Peng <pweisong@vmware.com>
Signed-off-by: Alin-Gabriel Serdean <aserdean@ovn.org>
Diffstat (limited to 'datapath-windows/ovsext/Flow.h')
-rw-r--r-- | datapath-windows/ovsext/Flow.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/datapath-windows/ovsext/Flow.h b/datapath-windows/ovsext/Flow.h index 8f7214124..ea3396f08 100644 --- a/datapath-windows/ovsext/Flow.h +++ b/datapath-windows/ovsext/Flow.h @@ -89,6 +89,8 @@ UINT32 OvsTunKeyAttrSize(void); NTSTATUS OvsTunnelAttrToIPTunnelKey(PNL_ATTR attr, OvsIPTunnelKey *tunKey); +UINT16 OvsGetFlowIPL2Offset(const OvsIPTunnelKey *tunKey); + /* Flags for tunneling */ #define OVS_TNL_F_DONT_FRAGMENT (1 << 0) #define OVS_TNL_F_CSUM (1 << 1) |