summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/IpHelper.h
diff options
context:
space:
mode:
authorSamuel Ghinet <sghinet@cloudbasesolutions.com>2014-08-29 04:06:48 +0000
committerBen Pfaff <blp@nicira.com>2014-08-29 07:55:05 -0700
commitfa1324c92810c6b1e33b7e87caaaf2e6c4041040 (patch)
tree8e06f5d991d755215bb6839a997bc58721b2d754 /datapath-windows/ovsext/IpHelper.h
parentfd972eb87a888242fb1a8ec2394fa7b3030fbd7d (diff)
downloadopenvswitch-fa1324c92810c6b1e33b7e87caaaf2e6c4041040.tar.gz
datapath-windows: Rename files.
This patch includes the file renaming and accommodations needed for the file renaming to build the forwarding extension for Hyper-V. This patch is also a follow-up for the thread: http://openvswitch.org/pipermail/dev/2014-August/044005.html Signed-off-by: Samuel Ghinet <sghinet@cloudbasesolutions.com> Co-authored-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'datapath-windows/ovsext/IpHelper.h')
-rw-r--r--datapath-windows/ovsext/IpHelper.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/datapath-windows/ovsext/IpHelper.h b/datapath-windows/ovsext/IpHelper.h
new file mode 100644
index 000000000..00f17f194
--- /dev/null
+++ b/datapath-windows/ovsext/IpHelper.h
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2014 VMware, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __IP_HELPER_H_
+#define __IP_HELPER_H_ 1
+
+#include <ntddk.h>
+#include <netioapi.h>
+
+#define OVS_FWD_HASH_TABLE_SIZE ((UINT32)1 << 10)
+#define OVS_FWD_HASH_TABLE_MASK (OVS_FWD_HASH_TABLE_SIZE - 1)
+
+#define OVS_ROUTE_HASH_TABLE_SIZE ((UINT32)1 << 8)
+#define OVS_ROUTE_HASH_TABLE_MASK (OVS_ROUTE_HASH_TABLE_SIZE - 1)
+
+#define OVS_NEIGH_HASH_TABLE_SIZE ((UINT32)1 << 8)
+#define OVS_NEIGH_HASH_TABLE_MASK (OVS_NEIGH_HASH_TABLE_SIZE - 1)
+
+#define OVS_IPNEIGH_TIMEOUT 100000000 // 10 s
+
+
+typedef struct _OVS_IPNEIGH_ENTRY {
+ UINT8 macAddr[MAC_ADDRESS_LEN];
+ UINT16 refCount;
+ UINT32 ipAddr;
+ UINT32 pad;
+ UINT64 timeout;
+ LIST_ENTRY link;
+ LIST_ENTRY slink;
+ LIST_ENTRY fwdList;
+} OVS_IPNEIGH_ENTRY, *POVS_IPNEIGH_ENTRY;
+
+typedef struct _OVS_IPFORWARD_ENTRY {
+ IP_ADDRESS_PREFIX prefix;
+ UINT32 nextHop;
+ UINT16 refCount;
+ LIST_ENTRY link;
+ LIST_ENTRY fwdList;
+} OVS_IPFORWARD_ENTRY, *POVS_IPFORWARD_ENTRY;
+
+typedef union _OVS_FWD_INFO {
+ struct {
+ UINT32 dstIpAddr;
+ UINT32 srcIpAddr;
+ UINT8 dstMacAddr[MAC_ADDRESS_LEN];
+ UINT8 srcMacAddr[MAC_ADDRESS_LEN];
+ UINT32 srcPortNo;
+ };
+ UINT64 value[3];
+} OVS_FWD_INFO, *POVS_FWD_INFO;
+
+typedef struct _OVS_FWD_ENTRY {
+ OVS_FWD_INFO info;
+ POVS_IPFORWARD_ENTRY ipf;
+ POVS_IPNEIGH_ENTRY ipn;
+ LIST_ENTRY link;
+ LIST_ENTRY ipfLink;
+ LIST_ENTRY ipnLink;
+} OVS_FWD_ENTRY, *POVS_FWD_ENTRY;
+
+
+enum {
+ OVS_IP_HELPER_INTERNAL_ADAPTER_UP,
+ OVS_IP_HELPER_FWD_REQUEST,
+};
+
+typedef VOID (*OvsIPHelperCallback)(PNET_BUFFER_LIST nbl,
+ UINT32 inPort,
+ PVOID tunnelKey,
+ PVOID cbData1,
+ PVOID cbData2,
+ NTSTATUS status,
+ POVS_FWD_INFO fwdInfo);
+
+typedef struct _OVS_FWD_REQUEST_INFO {
+ PNET_BUFFER_LIST nbl;
+ UINT32 inPort;
+ OvsIPv4TunnelKey tunnelKey;
+ OvsIPHelperCallback cb;
+ PVOID cbData1;
+ PVOID cbData2;
+} OVS_FWD_REQUEST_INFO, *POVS_FWD_REQUEST_INFO;
+
+
+typedef struct _OVS_IP_HELPER_REQUEST {
+ LIST_ENTRY link;
+ UINT32 command;
+ union {
+ OVS_FWD_REQUEST_INFO fwdReq;
+ UINT32 dummy;
+ };
+} OVS_IP_HELPER_REQUEST, *POVS_IP_HELPER_REQUEST;
+
+
+typedef struct _OVS_IP_HELPER_THREAD_CONTEXT {
+ KEVENT event;
+ PVOID threadObject;
+ UINT32 exit;
+} OVS_IP_HELPER_THREAD_CONTEXT, *POVS_IP_HELPER_THREAD_CONTEXT;
+
+NTSTATUS OvsInitIpHelper(NDIS_HANDLE ndisFilterHandle);
+VOID OvsCleanupIpHelper(VOID);
+
+VOID OvsInternalAdapterUp(UINT32 portNo, GUID *netCfgInstanceId);
+VOID OvsInternalAdapterDown(VOID);
+
+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);
+VOID OvsCancelFwdIpHelperRequest(PNET_BUFFER_LIST nbl);
+
+#endif /* __IP_HELPER_H_ */