[ovs-dev] [PATCH] datapath-windows: Return success for already existing WFP objects

Sorin Vinturis svinturis at cloudbasesolutions.com
Thu Jun 18 17:48:23 UTC 2015


There are cases when the WFP callout or sublayer, being persistent
objects, already exists when we try to register the OVS callout. In
this cases, when trying to add again these WFP objects the return code
is STATUS_FWP_ALREADY_EXISTS, which we are interpreting as an error.
This is incorrect and this patch changes that.

Signed-off-by: Sorin Vinturis <svinturis at cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis at cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/84
---
 datapath-windows/ovsext/TunnelFilter.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/datapath-windows/ovsext/TunnelFilter.c b/datapath-windows/ovsext/TunnelFilter.c
index 08cc13f..4224e04 100644
--- a/datapath-windows/ovsext/TunnelFilter.c
+++ b/datapath-windows/ovsext/TunnelFilter.c
@@ -414,7 +414,11 @@ OvsTunnelRegisterDatagramDataCallouts(const GUID *layerKey,
 
     status = FwpmCalloutAdd(gEngineHandle, &mCallout, NULL, NULL);
     if (!NT_SUCCESS(status)) {
-        goto Exit;
+        if (STATUS_FWP_ALREADY_EXISTS != status) {
+            OVS_LOG_ERROR("Failed to add WFP callout, status: %x.",
+                          status);
+            goto Exit;
+        }
     }
 
 Exit:
@@ -459,7 +463,11 @@ OvsTunnelRegisterCallouts(VOID *deviceObject)
 
     status = FwpmSubLayerAdd(gEngineHandle, &OvsTunnelSubLayer, NULL);
     if (!NT_SUCCESS(status)) {
-        goto Exit;
+        if (STATUS_FWP_ALREADY_EXISTS != status) {
+            OVS_LOG_ERROR("Failed to add WFP sublayer, status: %x.",
+                          status);
+            goto Exit;
+        }
     }
 
     /* In order to use this callout a socket must be opened. */
-- 
1.9.0.msysgit.0



More information about the dev mailing list