diff mbox

[PATCHv5] test: add libpcap example

Message ID 1394783001-19015-1-git-send-email-vincent.hsu@linaro.org
State Superseded, archived
Headers show

Commit Message

Vincent Hsu March 14, 2014, 7:43 a.m. UTC
Signed-off-by: Vincent Hsu <vincent.hsu@linaro.org>
---
 .gitignore                      |  3 ++
 platform/linux-generic/Makefile |  1 +
 test/libpcap/Makefile           | 92 +++++++++++++++++++++++++++++++++++++++++
 test/libpcap/README             | 49 ++++++++++++++++++++++
 4 files changed, 145 insertions(+)
 create mode 100644 test/libpcap/Makefile
 create mode 100644 test/libpcap/README

Comments

Mike Holmes March 14, 2014, 12:14 p.m. UTC | #1
+Must have ODP libs before compiling this example. Make sure those files
exist:
+    - <odp_root>/include/
+    - <odp_root>/platform/linux-generic/include/api/
+    - <odp_root>/platform/linux-generic/lib/libodp.a
+    - <odp_root>/platform/linux-generic/obj/
+


Vincent, you need to be pulling the library from the DESTDIR/build/lib and
DESTDIR/build/include so that it will work for platforms other than
linux-generic.

Mike


On 14 March 2014 03:43, Vincent Hsu <vincent.hsu@linaro.org> wrote:

> Signed-off-by: Vincent Hsu <vincent.hsu@linaro.org>
> ---
>  .gitignore                      |  3 ++
>  platform/linux-generic/Makefile |  1 +
>  test/libpcap/Makefile           | 92
> +++++++++++++++++++++++++++++++++++++++++
>  test/libpcap/README             | 49 ++++++++++++++++++++++
>  4 files changed, 145 insertions(+)
>  create mode 100644 test/libpcap/Makefile
>  create mode 100644 test/libpcap/README
>
> diff --git a/.gitignore b/.gitignore
> index 53454a5..ae6eb64 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 c35eb07..2a09dbe 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 0000000..0e38d77
> --- /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=4700d7c2ea35a33a58d73d50f1e0ce67eb92559c
> +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 0000000..c3db389
> --- /dev/null
> +++ b/test/libpcap/README
> @@ -0,0 +1,49 @@
> +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>/include/
> +    - <odp_root>/platform/linux-generic/include/api/
> +    - <odp_root>/platform/linux-generic/lib/libodp.a
> +    - <odp_root>/platform/linux-generic/obj/
> +
> +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
> --
> 1.8.5
>
> --
> You received this message because you are subscribed to the Google Groups
> "LNG ODP Sub-team - lng-odp@linaro.org" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to lng-odp+unsubscribe@linaro.org.
> To post to this group, send email to lng-odp@linaro.org.
> Visit this group at http://groups.google.com/a/linaro.org/group/lng-odp/.
> To view this discussion on the web visit
> https://groups.google.com/a/linaro.org/d/msgid/lng-odp/1394783001-19015-1-git-send-email-vincent.hsu%40linaro.org
> .
> For more options, visit https://groups.google.com/a/linaro.org/d/optout.
>
diff mbox

Patch

diff --git a/.gitignore b/.gitignore
index 53454a5..ae6eb64 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 c35eb07..2a09dbe 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 0000000..0e38d77
--- /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=4700d7c2ea35a33a58d73d50f1e0ce67eb92559c
+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 0000000..c3db389
--- /dev/null
+++ b/test/libpcap/README
@@ -0,0 +1,49 @@ 
+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>/include/
+    - <odp_root>/platform/linux-generic/include/api/
+    - <odp_root>/platform/linux-generic/lib/libodp.a
+    - <odp_root>/platform/linux-generic/obj/
+
+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