diff options
author | Vincent Hsu <vincent.hsu@linaro.org> | 2014-03-17 11:14:19 +0800 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2014-03-21 16:29:09 +0400 |
commit | 1aa4620f789d572a08441ce85ad4e39420d76fff (patch) | |
tree | 6a7131867a8bde17d01fb8b5e1b0a8ef55a901cd | |
parent | 14ce31ed6863142b86616f067bd4534ab2a15b01 (diff) |
test: add libpcap example
Signed-off-by: Vincent Hsu <vincent.hsu@linaro.org>
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | platform/linux-generic/Makefile | 1 | ||||
-rw-r--r-- | test/libpcap/Makefile | 92 | ||||
-rw-r--r-- | test/libpcap/README | 47 |
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 |