Skip to content

Commit

Permalink
datapath-windows: Move OVS_IPHELPER_INSTANCE to IpHelper.h
Browse files Browse the repository at this point in the history
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 <[email protected]>
Acked-by: Alin Gabriel Serdean <[email protected]>
Signed-off-by: Alin Gabriel Serdean <[email protected]>
  • Loading branch information
Sairam Venugopal authored and aserdean committed Oct 2, 2018
1 parent 0d5450a commit 13efe42
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 39 deletions.
32 changes: 2 additions & 30 deletions datapath-windows/ovsext/IpHelper.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,34 +39,6 @@ static LIST_ENTRY ovsInstanceList;
/* Passive-level lock used to protect the internal adapter object list. */
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
* |
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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);

Expand Down
45 changes: 36 additions & 9 deletions datapath-windows/ovsext/IpHelper.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit 13efe42

Please sign in to comment.