diff options
Diffstat (limited to 'datapath-windows/ovsext/IpHelper.h')
-rw-r--r-- | datapath-windows/ovsext/IpHelper.h | 22 |
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_ */ |