lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ