From patchwork Fri Mar 14 07:43:21 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vincent Hsu X-Patchwork-Id: 26247 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-yh0-f70.google.com (mail-yh0-f70.google.com [209.85.213.70]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 6327C203AC for ; Fri, 14 Mar 2014 07:46:33 +0000 (UTC) Received: by mail-yh0-f70.google.com with SMTP id c41sf5363927yho.5 for ; Fri, 14 Mar 2014 00:46:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:to:subject:date:message-id :x-original-sender:x-original-authentication-results:precedence :mailing-list:list-id:list-post:list-help:list-archive :list-unsubscribe:content-type; bh=viJByChk0DnpYGR5bbwLrM38PtDY4P51Nvz8fKuxhsY=; b=iF5uFiV4NVpPXf3RKoPi1XYDHsRf3KN0qECd9cLZgslkFdsPi0jLyissSv9xhaigIb DKwijFYOHP4AwyDQMymFN5iYtUyuSFIZBIrKOrwm+QXVGUXQnVB16epjcc1H3Owpd+K9 FeEE4zUedkIN+kpL09E3QVcqVvebt+bSvzG6IFo0WV53HE3QZ1FjijYJVW9FXfqDoNKl /I48V2vvEOhuI8c2I55w5RDET2/MQoa/WBwt9o7Rn/RVmB2tsQd/PodmYsa66lLfUgtk vep04MINun+/NPAZEYQEQcgA1/LBy00avsEwVnZN5L9XaIoG3iYNFFNQiYbtsXl9514F TiWA== X-Gm-Message-State: ALoCoQmz+4eH3pBiP4rAJ32ROgrt1Hxf89CrCvb8daWYGsSva+EwENTkcVDdmxdm/Veyu7rlltQg X-Received: by 10.236.180.2 with SMTP id i2mr2158312yhm.4.1394783193164; Fri, 14 Mar 2014 00:46:33 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: lng-odp@linaro.org Received: by 10.50.164.202 with SMTP id ys10ls5036457igb.24.canary; Fri, 14 Mar 2014 00:46:32 -0700 (PDT) X-Received: by 10.66.189.226 with SMTP id gl2mr7544450pac.65.1394783192872; Fri, 14 Mar 2014 00:46:32 -0700 (PDT) Received: from mail-pa0-f47.google.com (mail-pa0-f47.google.com [209.85.220.47]) by mx.google.com with ESMTPS id mt5si4759246pbb.156.2014.03.14.00.46.32 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 14 Mar 2014 00:46:32 -0700 (PDT) Received-SPF: neutral (google.com: 209.85.220.47 is neither permitted nor denied by best guess record for domain of vincent.hsu@linaro.org) client-ip=209.85.220.47; Received: by mail-pa0-f47.google.com with SMTP id lj1so2275764pab.34 for ; Fri, 14 Mar 2014 00:46:32 -0700 (PDT) X-Received: by 10.66.121.195 with SMTP id lm3mr7561854pab.154.1394783192431; Fri, 14 Mar 2014 00:46:32 -0700 (PDT) Received: from team1.fj ([124.219.7.128]) by mx.google.com with ESMTPSA id c7sm13876328pbt.0.2014.03.14.00.46.30 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 14 Mar 2014 00:46:31 -0700 (PDT) From: Vincent Hsu To: lng-odp@linaro.org Subject: [lng-odp] [PATCHv5] test: add libpcap example Date: Fri, 14 Mar 2014 15:43:21 +0800 Message-Id: <1394783001-19015-1-git-send-email-vincent.hsu@linaro.org> X-Mailer: git-send-email 1.8.5 X-Original-Sender: vincent.hsu@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.220.47 is neither permitted nor denied by best guess record for domain of vincent.hsu@linaro.org) smtp.mail=vincent.hsu@linaro.org Precedence: list Mailing-list: list lng-odp@linaro.org; contact lng-odp+owners@linaro.org List-ID: X-Google-Group-Id: 474323889996 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Signed-off-by: Vincent Hsu --- .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: + - /include/ + - /platform/linux-generic/include/api/ + - /platform/linux-generic/lib/libodp.a + - /platform/linux-generic/obj/ + +build libpcap at /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