[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1423090163-19902-5-git-send-email-azhou@nicira.com>
Date: Wed, 4 Feb 2015 14:49:18 -0800
From: Andy Zhou <azhou@...ira.com>
To: dev@...nvswitch.com
Cc: netdev@...r.kernel.org, Andy Zhou <azhou@...ira.com>,
Joe Stringer <joestringer@...ira.com>
Subject: [RFC: add openvswitch actions using BPF 4/9] autoconf: support -with-llc options
Add a configuration option to allow specifing the LLVM backend module
for compiling BPF C source code into BPF instruction sets.
See INSTALL.BPF.md for usgae information.
Signed-off-by: Joe Stringer <joestringer@...ira.com>
Signed-off-by: Andy Zhou <azhou@...ira.com>
---
INSTALL.BPF.md | 42 ++++++++++++++++++++++++++++++++++++++++++
Makefile.am | 1 +
acinclude.m4 | 16 ++++++++++++++++
configure.ac | 2 ++
4 files changed, 61 insertions(+)
create mode 100644 INSTALL.BPF.md
diff --git a/INSTALL.BPF.md b/INSTALL.BPF.md
new file mode 100644
index 0000000..bc1f5ad
--- /dev/null
+++ b/INSTALL.BPF.md
@@ -0,0 +1,42 @@
+# Dependencies
+
+- Need Clang + llvm-dev version 3.X for any (2 <= X <= 4)
+- http://llvm.org/apt/
+
+apt-get install libelf-dev clang-3.4 llvm-3.4-dev
+
+# Build LLVM plugin
+
+*[Upstream] git://git.kernel.org/pub/scm/linux/kernel/git/ast/bpf*
+
+git clone git://github.com/joestringer/linux
+NN=$PWD/linux
+
+cd $NN/tools/bpf/llvm/bld
+make LLVM_CONFIG=`which llvm-config-3.4`
+
+# Configure OVS to use BPF LLC
+
+OVS=/path/to/openvswitch
+cd $OVS
+./configure --with-llc=$NN/tools/bpf/llvm/bld/Debug+Asserts/bin/llc
+
+# Build OVS and BPF module
+
+make
+cd datapath/bpf
+make
+
+# Load BPF module
+
+cd $NN/
+make M=samples/bpf
+samples/bpf/simple_load $OVS/datapath/bpf/simple.bpf
+
+Note down which fd was used for the program. This will be used in next step.
+
+# Install flow to use BPF
+
+$OVS/utilities/ovs-dpctl add-flow "eth(src=00:00:00:00:00:00,dst=00:00:00:00:00:00)" "bpf(<FD>, 0)"
+
+Success?
diff --git a/Makefile.am b/Makefile.am
index 1363abe..ee8fe03 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -71,6 +71,7 @@ docs = \
DESIGN.md \
FAQ.md \
INSTALL.md \
+ INSTALL.BPF.md \
INSTALL.Debian.md \
INSTALL.Docker.md \
INSTALL.DPDK.md \
diff --git a/acinclude.m4 b/acinclude.m4
index f419056..e3b5356 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -157,6 +157,22 @@ AC_DEFUN([OVS_CHECK_LINUX], [
AM_CONDITIONAL(LINUX_ENABLED, test -n "$KBUILD")
])
+dnl OVS_CHECK_BPF
+dnl
+dnl Check clang set ups for compiling BPF
+AC_DEFUN([OVS_CHECK_LLC], [
+ AC_ARG_WITH([llc],
+ [AC_HELP_STRING([--with-llc=/path/to/llc],
+ [Specify the bpf clang backend binrary])])
+
+ if (test X"$with_llc" != X); then
+ LLC=$with_llc
+ if (test ! -x $LLC); then
+ AC_MSG_ERROR([BPF llc backend is configured but not found ])
+ fi
+ fi
+])
+
dnl OVS_CHECK_DPDK
dnl
dnl Configure DPDK source tree
diff --git a/configure.ac b/configure.ac
index d2d02ca..7510d56 100644
--- a/configure.ac
+++ b/configure.ac
@@ -160,8 +160,10 @@ OVS_ENABLE_SPARSE
AC_ARG_VAR(KARCH, [Kernel Architecture String])
AC_SUBST(KARCH)
+AC_ARG_VAR(LLC, [LLVM bpf backend processor])
OVS_CHECK_LINUX
OVS_CHECK_DPDK
+OVS_CHECK_LLC
OVS_CHECK_PRAGMA_MESSAGE
AC_SUBST([OVS_CFLAGS])
AC_SUBST([OVS_LDFLAGS])
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists