aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Hsu <vincent.hsu@linaro.org>2014-03-17 11:14:19 +0800
committerMaxim Uvarov <maxim.uvarov@linaro.org>2014-03-21 16:29:09 +0400
commit1aa4620f789d572a08441ce85ad4e39420d76fff (patch)
tree6a7131867a8bde17d01fb8b5e1b0a8ef55a901cd
parent14ce31ed6863142b86616f067bd4534ab2a15b01 (diff)
test: add libpcap example
Signed-off-by: Vincent Hsu <vincent.hsu@linaro.org>
-rw-r--r--.gitignore3
-rw-r--r--platform/linux-generic/Makefile1
-rw-r--r--test/libpcap/Makefile92
-rw-r--r--test/libpcap/README47
4 files changed, 143 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 53454a560..ae6eb64e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,6 @@ test/packet_netmap/odp_packet
test/api_test/odp_atomic
test/api_test/odp_shm
test/api_test/odp_ring
+test/libpcap/libpcap
+test/libpcap/tcpdump
+test/libpcap/wireshark
diff --git a/platform/linux-generic/Makefile b/platform/linux-generic/Makefile
index 9f3e3dbec..15e2a2c31 100644
--- a/platform/linux-generic/Makefile
+++ b/platform/linux-generic/Makefile
@@ -35,6 +35,7 @@ DOC_DIR = ./doc
EXTRA_CFLAGS += -I$(ODP_ROOT)/include
EXTRA_CFLAGS += -I./include
EXTRA_CFLAGS += -I./include/api
+EXTRA_CFLAGS += -fPIC
ifeq ($(ODP_HAVE_NETMAP),yes)
EXTRA_CFLAGS += -DODP_HAVE_NETMAP
diff --git a/test/libpcap/Makefile b/test/libpcap/Makefile
new file mode 100644
index 000000000..4438dbe65
--- /dev/null
+++ b/test/libpcap/Makefile
@@ -0,0 +1,92 @@
+# Copyright (c) 2013, Linaro Limited
+# All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
+LIBPCAP_REPO=http://git.linaro.org/git/people/vincent.hsu/libpcap.git
+LIBPCAP_DIR=libpcap
+TCPDUMP_REPO=https://github.com/the-tcpdump-group/tcpdump.git
+TCPDUMP_DIR=tcpdump
+WIRESHARK_REPO=https://code.wireshark.org/review/p/wireshark.git
+WIRESHARK_DIR=wireshark
+LIBPCAP_VERSION=af25cf38dd258f3f1fb5b9b4b731248f022cc732
+TCPDUMP_VERSION=tcpdump-4.2.1
+WIRESHARK_VERSION=wireshark-1.8.9
+
+.PHONY: all
+all: libpcap tcpdump
+
+.PHONY: update
+update: get_libpcap get_tcpdump
+
+.PHONY: install
+install: install_libpcap install_tcpdump
+
+.PHONY: clean
+clean: clean_libpcap clean_tcpdump
+
+.PHONY: libpcap
+libpcap: get_libpcap
+ cd $(LIBPCAP_DIR) \
+ && git checkout $(LIBPCAP_VERSION) \
+ && ./configure --with-odp=../../.. --libdir=/usr/lib
+ $(MAKE) -C $(LIBPCAP_DIR)
+
+.PHONY: get_libpcap
+get_libpcap:
+ if [ ! -d $(LIBPCAP_DIR) ]; then git clone $(LIBPCAP_REPO); \
+ else cd $(LIBPCAP_DIR); git fetch --all; fi
+
+.PHONY: install_libpcap
+install_libpcap:
+ $(MAKE) -C $(LIBPCAP_DIR) install
+ if [ -d $(LIBPCAP_DIR) ]; then $(MAKE) -C $(LIBPCAP_DIR) install; fi
+
+.PHONY: clean_libpcap
+clean_libpcap:
+ $(MAKE) -C $(LIBPCAP_DIR) clean
+ if [ -d $(LIBPCAP_DIR) ]; then $(MAKE) -C $(LIBPCAP_DIR) distclean; fi
+
+.PHONY: tcpdump
+tcpdump: get_tcpdump libpcap
+ cd $(TCPDUMP_DIR) \
+ && git checkout $(TCPDUMP_VERSION) \
+ && ./configure
+ $(MAKE) -C $(TCPDUMP_DIR)
+
+.PHONY: get_tcpdump
+get_tcpdump:
+ if [ ! -d $(TCPDUMP_DIR) ]; then git clone $(TCPDUMP_REPO); \
+ else cd $(TCPDUMP_DIR); git fetch --all; fi
+
+.PHONY: install_tcpdump
+install_tcpdump:
+ $(MAKE) -C $(TCPDUMP_DIR) install
+ if [ -d $(TCPDUMP_DIR) ]; then $(MAKE) -C $(TCPDUMP_DIR) install; fi
+
+.PHONY: clean_tcpdump
+clean_tcpdump:
+ $(MAKE) -C $(TCPDUMP_DIR) clean
+ if [ -d $(TCPDUMP_DIR) ]; then $(MAKE) -C $(TCPDUMP_DIR) distclean; fi
+
+.PHONY: wireshark
+wireshark: get_wireshark libpcap
+ cd $(WIRESHARK_DIR) \
+ && git checkout $(WIRESHARK_VERSION) \
+ && ./autogen.sh && ./configure
+ $(MAKE) -C $(WIRESHARK_DIR)
+
+.PHONY: get_wireshark
+get_wireshark:
+ if [ ! -d $(WIRESHARK_DIR) ]; then git clone $(WIRESHARK_REPO); \
+ else cd $(WIRESHARK_DIR); git fetch --all; fi
+
+.PHONY: install_wireshark
+install_wireshark:
+ $(MAKE) -C $(WIRESHARK_DIR) install
+ if [ -d $(WIRESHARK_DIR) ]; then $(MAKE) -C $(WIRESHARK_DIR) install; fi
+
+.PHONY: clean_wireshark
+clean_wireshark:
+ $(MAKE) -C $(WIRESHARK_DIR) clean
+ if [ -d $(WIRESHARK_DIR) ]; then $(MAKE) -C $(WIRESHARK_DIR) distclean; fi
diff --git a/test/libpcap/README b/test/libpcap/README
new file mode 100644
index 000000000..2b6b86a54
--- /dev/null
+++ b/test/libpcap/README
@@ -0,0 +1,47 @@
+ODP libpcap example
+
+This document explains how to test the libpcap which integrate the ODP.
+
+(a) Compiling the libpcap
+
+Must have ODP libs before compiling this example. Make sure those files exist:
+ - <odp_root>/build/include/
+ - <odp_root>/build/lib/libodp.a
+
+build libpcap at <odp_root>/test/libpcap/:
+$> make
+
+or add ODP_HAVE_NETMAP=yes to enable the netmap support:
+$> make ODP_HAVE_NETMAP=yes
+
+install to system:
+$> sudo make install
+
+(b) Testing
+
+test it through tcpdump:
+$> sudo ./tcpdump -ni odp:eth0
+
+test it through wireshark:
+$> sudo ./wireshark -i odp:eth0
+
+test the tcpdump bridge:
+$> sudo ./tcpdump -ni b:eth0,eth1
+
+test it through tcpdump with netmap pktio:
+$> sudo ./tcpdump -ni netmap:eth0
+
+test the tcpdump bridge with netmap pktio:
+$> sudo ./tcpdump -ni netmapb:eth0,eth1
+
+(c) Note
+
+1. Currenly system default tcpdump can't successfully do mlock which is needed
+ in ODP. So this example will use self-build tcpdump instead.
+
+2. Same reason as tcpdump, you can use self-build wireshark if you got mlock
+ related error.
+ $> sudo apt-get install autoconf bison flex libtool libgtk2.0-dev libpcap-dev
+ libc-ares-dev libsmi2-dev libgnutls-dev libgcrypt11-dev libkrb5-dev
+ libcap2-bin libgeoip-dev libortp-dev libportaudio-dev wireshark-dev
+ $> make wireshark