summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/IpHelper.h
diff options
context:
space:
mode:
authorAlin Serdean <aserdean@cloudbasesolutions.com>2016-12-20 19:42:19 +0000
committerGurucharan Shetty <guru@ovn.org>2016-12-20 12:22:48 -0800
commitcd30b3460ac53719a6b8aaaba89b29c0304ac335 (patch)
treeddf8a6e75efbdf59ef999bba6ded22eff01be3c1 /datapath-windows/ovsext/IpHelper.h
parentda467899ab6e67b645840195a64600d1484d0dce (diff)
downloadopenvswitch-cd30b3460ac53719a6b8aaaba89b29c0304ac335.tar.gz
datapath-windows: Add multiple switch internal ports
This patch adds multiple internal ports support to the windows datapath. All tunnels types have been updated to accommodate this new functionality. Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Co-authored-by: Sorin Vinturis <svinturis@cloudbasesolutions.com> Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com> Acked-by: Paul Boca <pboca@cloudbasesolutions.com> Acked-by: Sairam Venugopal <vsairam@vmware.com> Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Diffstat (limited to 'datapath-windows/ovsext/IpHelper.h')
-rw-r--r--datapath-windows/ovsext/IpHelper.h22
1 files changed, 15 insertions, 7 deletions
diff --git a/datapath-windows/ovsext/IpHelper.h b/datapath-windows/ovsext/IpHelper.h
index 8562f868c..6bda1b12a 100644
--- a/datapath-windows/ovsext/IpHelper.h
+++ b/datapath-windows/ovsext/IpHelper.h
@@ -19,6 +19,7 @@
#include <ntddk.h>
#include <netioapi.h>
+#include <Vport.h>
#define OVS_FWD_HASH_TABLE_SIZE ((UINT32)1 << 10)
#define OVS_FWD_HASH_TABLE_MASK (OVS_FWD_HASH_TABLE_SIZE - 1)
@@ -41,6 +42,7 @@ typedef struct _OVS_IPNEIGH_ENTRY {
LIST_ENTRY link;
LIST_ENTRY slink;
LIST_ENTRY fwdList;
+ PVOID context;
} OVS_IPNEIGH_ENTRY, *POVS_IPNEIGH_ENTRY;
typedef struct _OVS_IPFORWARD_ENTRY {
@@ -51,15 +53,16 @@ typedef struct _OVS_IPFORWARD_ENTRY {
LIST_ENTRY fwdList;
} OVS_IPFORWARD_ENTRY, *POVS_IPFORWARD_ENTRY;
-typedef union _OVS_FWD_INFO {
+typedef union _OVS_FWD_INFO {
struct {
UINT32 dstIpAddr;
UINT32 srcIpAddr;
UINT8 dstMacAddr[ETH_ADDR_LEN];
UINT8 srcMacAddr[ETH_ADDR_LEN];
UINT32 srcPortNo;
+ POVS_VPORT_ENTRY vport;
};
- UINT64 value[3];
+ UINT64 value[4];
} OVS_FWD_INFO, *POVS_FWD_INFO;
typedef struct _OVS_FWD_ENTRY {
@@ -74,6 +77,7 @@ typedef struct _OVS_FWD_ENTRY {
enum {
OVS_IP_HELPER_INTERNAL_ADAPTER_UP,
+ OVS_IP_HELPER_INTERNAL_ADAPTER_DOWN,
OVS_IP_HELPER_FWD_REQUEST,
};
@@ -94,13 +98,17 @@ typedef struct _OVS_FWD_REQUEST_INFO {
PVOID cbData2;
} OVS_FWD_REQUEST_INFO, *POVS_FWD_REQUEST_INFO;
+typedef struct _OVS_INSTANCE_REQUEST_INFO {
+ GUID netCfgInstanceId;
+ UINT32 portNo;
+} OVS_INSTANCE_REQUEST_INFO, *POVS_INSTANCE_REQUEST_INFO;
typedef struct _OVS_IP_HELPER_REQUEST {
LIST_ENTRY link;
UINT32 command;
union {
- OVS_FWD_REQUEST_INFO fwdReq;
- UINT32 dummy;
+ OVS_FWD_REQUEST_INFO fwdReq;
+ OVS_INSTANCE_REQUEST_INFO instanceReq;
};
} OVS_IP_HELPER_REQUEST, *POVS_IP_HELPER_REQUEST;
@@ -114,15 +122,15 @@ typedef struct _OVS_IP_HELPER_THREAD_CONTEXT {
NTSTATUS OvsInitIpHelper(NDIS_HANDLE ndisFilterHandle);
VOID OvsCleanupIpHelper(VOID);
-VOID OvsInternalAdapterUp(GUID *netCfgInstanceId);
-VOID OvsInternalAdapterDown(VOID);
+VOID OvsInternalAdapterUp(UINT32 portNo, GUID *netCfgInstanceId);
+VOID OvsInternalAdapterDown(UINT32 portNo, GUID netCfgInstanceId);
NTSTATUS OvsFwdIPHelperRequest(PNET_BUFFER_LIST nbl, UINT32 inPort,
const PVOID tunnelKey,
OvsIPHelperCallback cb,
PVOID cbData1,
PVOID cbData2);
-NTSTATUS OvsLookupIPFwdInfo(UINT32 dstIp, POVS_FWD_INFO info);
+NTSTATUS OvsLookupIPFwdInfo(UINT32 srcIp, UINT32 dstIp, POVS_FWD_INFO info);
VOID OvsCancelFwdIpHelperRequest(PNET_BUFFER_LIST nbl);
#endif /* __IP_HELPER_H_ */