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

Eitan Eliahu eliahue at vmware.com
Sat Jun 20 12:35:03 UTC 2015


Hi Sorin,
Could you please let us know what are the cases where these object are already existed? I just want to be sure that we free all these objects when stopping the extension.
Thanks,
Eitan

-----Original Message-----
From: dev [mailto:dev-bounces at openvswitch.org] On Behalf Of Sorin Vinturis
Sent: Thursday, June 18, 2015 11:37 AM
To: dev at openvswitch.org
Subject: [ovs-dev] [PATCH v2] datapath-windows: Return success for already existing WFP objects

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://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openvswitch_ovs-2Dissues_issues_84&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=CWsgHUxi6ExLXY798tmo3LJ4e3geGYp56lkcH-5cLCY&m=2m9yV1dqLYwW4Lrbg7_G7J56pKu7tJ_TE125ybtwKTA&s=bUUf7r2FXP4oMOFNjo2zKOSwbuJHfFjLSq2Pe8yz0sM&e=
---
 datapath-windows/ovsext/TunnelFilter.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/datapath-windows/ovsext/TunnelFilter.c b/datapath-windows/ovsext/TunnelFilter.c
index 08cc13f..231750e 100644
--- a/datapath-windows/ovsext/TunnelFilter.c
+++ b/datapath-windows/ovsext/TunnelFilter.c
@@ -414,7 +414,12 @@ 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;
+        }
+        status = STATUS_SUCCESS;
     }
 
 Exit:
@@ -459,7 +464,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
_______________________________________________
dev mailing list
dev at openvswitch.org
https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailman_listinfo_dev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=CWsgHUxi6ExLXY798tmo3LJ4e3geGYp56lkcH-5cLCY&m=2m9yV1dqLYwW4Lrbg7_G7J56pKu7tJ_TE125ybtwKTA&s=1h_FXA4x7kLJqZuawSWu_SwiMnBCMlk29lqJ5ldr1Tk&e= 


More information about the dev mailing list