[ovs-dev] [PATCH] datapath-windows: Move OVS_IPHELPER_INSTANCE to IpHelper.h

Sairam Venugopal vsairam at vmware.com
Wed Sep 26 20:34:24 UTC 2018


Move the IPHelper Instance to the main header file and update the usage to
explicitly point to POVS_IPHELPER_INSTANCE instead of PVOID. Also rename
the ipn->context to ipn->instance to make it more readable.

Found by inspection.

Signed-off-by: Sairam Venugopal <vsairam at vmware.com>
---
 datapath-windows/ovsext/IpHelper.c | 32 ++-------------------------
 datapath-windows/ovsext/IpHelper.h | 45 ++++++++++++++++++++++++++++++--------
 2 files changed, 38 insertions(+), 39 deletions(-)

diff --git a/datapath-windows/ovsext/IpHelper.c b/datapath-windows/ovsext/IpHelper.c
index c734b0e..876da92 100644
--- a/datapath-windows/ovsext/IpHelper.c
+++ b/datapath-windows/ovsext/IpHelper.c
@@ -40,34 +40,6 @@ static LIST_ENTRY          ovsInstanceList;
 static ERESOURCE           ovsInstanceListLock;
 
 /*
- * This structure is used to define each adapter instance.
- *
- * Note:
- * Only when the internal IP is configured and virtual
- * internal port is connected, the IP helper request can be
- * queued.
- *
- * We only keep internal IP for reference, it will not be used for determining
- * SRC IP of the Tunnel.
- *
- * The lock must not raise the IRQL higher than PASSIVE_LEVEL in order for the
- * route manipulation functions, i.e. GetBestRoute, to work.
- */
-typedef struct _OVS_IPHELPER_INSTANCE
-{
-    LIST_ENTRY          link;
-
-    BOOLEAN             isIpConfigured;
-    UINT32              portNo;
-    GUID                netCfgId;
-    MIB_IF_ROW2         internalRow;
-    MIB_IPINTERFACE_ROW internalIPRow;
-    UINT32              ipAddress;
-
-    ERESOURCE           lock;
-} OVS_IPHELPER_INSTANCE, *POVS_IPHELPER_INSTANCE;
-
-/*
  * FWD_ENTRY -------->  IPFORWARD_ENTRY
  *      |
  *      |--------------------------------------> IPENIGH_ENTRY
@@ -1070,7 +1042,7 @@ OvsCreateIPNeighEntry(PMIB_IPNET_ROW2 ipNeigh,
     RtlCopyMemory(entry->macAddr, ipNeigh->PhysicalAddress,
                   ETH_ADDR_LEN);
     InitializeListHead(&entry->fwdList);
-    entry->context = (PVOID)instance;
+    entry->instance = instance;
 
     return entry;
 }
@@ -1934,7 +1906,7 @@ OvsStartIpHelper(PVOID data)
             ipAddr = ipn->ipAddr;
             MIB_IPNET_ROW2 ipNeigh;
             NTSTATUS status;
-            POVS_IPHELPER_INSTANCE instance = (POVS_IPHELPER_INSTANCE)ipn->context;
+            POVS_IPHELPER_INSTANCE instance = ipn->instance;
             NdisReleaseSpinLock(&ovsIpHelperLock);
             ExAcquireResourceExclusiveLite(&ovsInstanceListLock, TRUE);
 
diff --git a/datapath-windows/ovsext/IpHelper.h b/datapath-windows/ovsext/IpHelper.h
index 0556965..25adf6e 100644
--- a/datapath-windows/ovsext/IpHelper.h
+++ b/datapath-windows/ovsext/IpHelper.h
@@ -32,17 +32,44 @@
 
 #define OVS_IPNEIGH_TIMEOUT 100000000   // 10 s
 
+ /*
+ * This structure is used to define each adapter instance.
+ *
+ * Note:
+ * Only when the internal IP is configured and virtual
+ * internal port is connected, the IP helper request can be
+ * queued.
+ *
+ * We only keep internal IP for reference, it will not be used for determining
+ * SRC IP of the Tunnel.
+ *
+ * The lock must not raise the IRQL higher than PASSIVE_LEVEL in order for the
+ * route manipulation functions, i.e. GetBestRoute, to work.
+ */
+typedef struct _OVS_IPHELPER_INSTANCE
+{
+    LIST_ENTRY          link;
+
+    BOOLEAN             isIpConfigured;
+    UINT32              portNo;
+    GUID                netCfgId;
+    MIB_IF_ROW2         internalRow;
+    MIB_IPINTERFACE_ROW internalIPRow;
+    UINT32              ipAddress;
+
+    ERESOURCE           lock;
+} OVS_IPHELPER_INSTANCE, *POVS_IPHELPER_INSTANCE;
 
 typedef struct _OVS_IPNEIGH_ENTRY {
-    UINT8             macAddr[ETH_ADDR_LEN];
-    UINT16            refCount;
-    UINT32            ipAddr;
-    UINT32            pad;
-    UINT64            timeout;
-    LIST_ENTRY        link;
-    LIST_ENTRY        slink;
-    LIST_ENTRY        fwdList;
-    PVOID             context;
+    UINT8                       macAddr[ETH_ADDR_LEN];
+    UINT16                      refCount;
+    UINT32                      ipAddr;
+    UINT32                      pad;
+    UINT64                      timeout;
+    LIST_ENTRY                  link;
+    LIST_ENTRY                  slink;
+    LIST_ENTRY                  fwdList;
+    POVS_IPHELPER_INSTANCE      instance;
 } OVS_IPNEIGH_ENTRY, *POVS_IPNEIGH_ENTRY;
 
 typedef struct _OVS_IPFORWARD_ENTRY {
-- 
2.9.0.windows.1



More information about the dev mailing list