summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnkur Sharma <ankursharma@vmware.com>2014-08-11 11:43:22 -0700
committerBen Pfaff <blp@nicira.com>2014-08-11 17:15:20 -0700
commitc640e3ce1b61eb572c3dd120a652fbfdc80758c3 (patch)
treee8b71df6ac8f7341489858729e116a27f02d7207
parentda4425c78de348d3b3178ecb058c3628c88354e3 (diff)
downloadopenvswitch-c640e3ce1b61eb572c3dd120a652fbfdc80758c3.tar.gz
odp-netlink.h: Autogenerate a version of odp-netlink for windows kernel.
Autogenerated odp-netlink.h will not compile with windows kernel, as it refers to some userspace files like openvswitch/types.h and packets.h which hyperv extension does not access. Due to this the windows datapath compilation is broken on tip of tree. This patch intends to fix that. In this patch we add a new sed script "extract-odp-netlink-windows-dp-h" to create OvsDpInterface.h. It works on similar lines as extract-odp-netlink-h, but avoids including the header files which are not available for driver. After this fix, a userspace build will be needed before windows kernel datapath can be built. Tested that hyperv extension could be built after building the userspace. Verified vxlan tunnel based ping across hypervisors. Verified that odp-netlink-windows-dp.h is not built for linux platform. Ran 'make distcheck' to verify that nothing is broken on linux. Signed-off-by: Ankur Sharma <ankursharma@vmware.com> Co-authored-by: Saurabh Shah <ssaurabh@vmware.com> Tested-by: Ankur Sharma <ankursharma@vmware.com> Reported-by: Alin Serdean <aserdean@cloudbasesolutions.com> Reported-by: Nithin Raju <nithin@vmware.com> Reported-at: https://github.com/openvswitch/ovs-issues/issues/21 Signed-off-by: Ben Pfaff <blp@nicira.com>
-rw-r--r--.gitignore2
-rw-r--r--Makefile.am1
-rwxr-xr-xbuild-aux/extract-odp-netlink-windows-dp-h24
-rw-r--r--datapath-windows/include/automake.mk10
-rw-r--r--datapath-windows/ovsext/precomp.h2
5 files changed, 38 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 22ea3eccc..800352c0c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -60,3 +60,5 @@ TAGS
cscope.*
tags
_debian
+odp-netlink.h
+OvsDpInterface.h
diff --git a/Makefile.am b/Makefile.am
index eddacafd4..eb5810142 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -316,3 +316,4 @@ include python/compat/automake.mk
include tutorial/automake.mk
include vtep/automake.mk
include datapath-windows/automake.mk
+include datapath-windows/include/automake.mk
diff --git a/build-aux/extract-odp-netlink-windows-dp-h b/build-aux/extract-odp-netlink-windows-dp-h
new file mode 100755
index 000000000..041d103b1
--- /dev/null
+++ b/build-aux/extract-odp-netlink-windows-dp-h
@@ -0,0 +1,24 @@
+# This is a "sed" script that transforms <linux/openvswitch.h> into a
+# form that is suitable for inclusion within the Open vSwitch tree on
+# windows system. The transformed header file can be included by windows
+# driver modules.
+
+# Add a header warning that this is a generated file.
+1i\
+/* -*- mode: c; buffer-read-only: t -*- */\
+/* Generated automatically from <linux/openvswitch.h> -- do not modify! */\
+\
+\
+
+# Avoid using reserved names in header guards.
+s/_LINUX_OPENVSWITCH_H/__OVS_DP_INTERFACE_H_/
+
+# and use the appropriate userspace header.
+s,<linux/types\.h>,"OvsTypes.h",
+
+# Add ETH_ADDR_LEN macro to avoid including userspace packet.h
+s,#include <linux/if_ether\.h>,\n#ifndef ETH_ADDR_LEN \
+#define ETH_ADDR_LEN 6 \n#endif,
+
+# Use OVS's own ETH_ADDR_LEN instead of Linux-specific ETH_ALEN.
+s/ETH_ALEN/ETH_ADDR_LEN/
diff --git a/datapath-windows/include/automake.mk b/datapath-windows/include/automake.mk
new file mode 100644
index 000000000..ac945cbd6
--- /dev/null
+++ b/datapath-windows/include/automake.mk
@@ -0,0 +1,10 @@
+BUILT_SOURCES += $(srcdir)/datapath-windows/include/OvsDpInterface.h
+
+$(srcdir)/datapath-windows/include/OvsDpInterface.h: \
+ datapath/linux/compat/include/linux/openvswitch.h \
+ build-aux/extract-odp-netlink-windows-dp-h
+ sed -f $(srcdir)/build-aux/extract-odp-netlink-windows-dp-h < $< > $@
+
+EXTRA_DIST += $(srcdir)/build-aux/extract-odp-netlink-windows-dp-h
+
+CLEANFILES += $(srcdir)/datapath-windows/include/OvsDpInterface.h
diff --git a/datapath-windows/ovsext/precomp.h b/datapath-windows/ovsext/precomp.h
index 45e72de6f..ec4a6217f 100644
--- a/datapath-windows/ovsext/precomp.h
+++ b/datapath-windows/ovsext/precomp.h
@@ -28,4 +28,4 @@
* Include openvswitch.h from userspace. Changing the location the file from
* include/linux is pending discussion.
*/
-#include "include\linux\openvswitch.h"
+#include "..\include\OvsDpInterface.h"