This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, monarch_lts has been updated
via a28e0db6cdae7eb4f047cd79698ceadf96feff7f (commit)
from c24c425cf4842125f8702fa7624563417bb41e40 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a28e0db6cdae7eb4f047cd79698ceadf96feff7f
Author: Matias Elo <matias.elo(a)nokia.com>
Date: Thu Apr 27 14:29:54 2017 +0300
linux-gen: pktio: fix valgrind warnings
Fix valgrind warnings about syscall params pointing to uninitialised bytes.
Signed-off-by: Matias Elo <matias.elo(a)nokia.com>
Reviewed-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/platform/linux-generic/pktio/ethtool.c b/platform/linux-generic/pktio/ethtool.c
index 1b0f25b2..d8f9e12c 100644
--- a/platform/linux-generic/pktio/ethtool.c
+++ b/platform/linux-generic/pktio/ethtool.c
@@ -158,6 +158,7 @@ int ethtool_stats_get_fd(int fd, const char *name, odp_pktio_stats_t *stats)
{
struct ifreq ifr;
+ memset(&ifr, 0, sizeof(ifr));
snprintf(ifr.ifr_name, IF_NAMESIZE, "%s", name);
return ethtool_stats(fd, &ifr, stats);
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c
index 624104de..bcb123c1 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -231,6 +231,7 @@ static inline int get_rss_hash_options(int fd, const char *name,
struct ifreq ifr;
struct ethtool_rxnfc rsscmd;
+ memset(&ifr, 0, sizeof(ifr));
memset(&rsscmd, 0, sizeof(rsscmd));
*options = 0;
-----------------------------------------------------------------------
Summary of changes:
platform/linux-generic/pktio/ethtool.c | 1 +
platform/linux-generic/pktio/socket.c | 1 +
2 files changed, 2 insertions(+)
hooks/post-receive
--
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, monarch_lts has been updated
via c24c425cf4842125f8702fa7624563417bb41e40 (commit)
via b5dca2f1b0fff412fc56ba8bafba25507dcf1d64 (commit)
via 4e8595151c075074744b8a1ad689a052df18c27e (commit)
via e48559aa65e369d25f8f1c5e63a98939e881f367 (commit)
via 8bda226cc547acb81e3c17f09348c6ff4a6f4356 (commit)
via d3a984a9e86177215246d0925b4a86f9ade9d22a (commit)
via 53b23b8e017db60c3635ac68b3894081448ea132 (commit)
via f3bc64fcadb9b8dbe034507be81f0f06feb335ab (commit)
via 461780c9df581b952d837ca72717f516d99da963 (commit)
from 0c15c40db40834f1df217191c4b6a06303ab0872 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit c24c425cf4842125f8702fa7624563417bb41e40
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Wed Jul 12 17:53:24 2017 +0300
travis: port travis checks from master
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..6a845e97
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,226 @@
+# Copyright (c) 2016, Linaro Limited
+# All rights reserved.
+# SPDX-License-Identifier: BSD-3-Clause
+#
+# Please update xxxx for your coverity token and notification email if required
+# pushing to github/master will run make check
+# pushing to github/coverity_scan will also launch a static analysis
+# See https://scan.coverity.com/travis_ci
+
+language: c
+sudo: required
+dist: trusty
+group: deprecated-2017Q2
+env:
+ global:
+ # COVERITY_SCAN_TOKEN
+ # ** specific to your project **
+ # Note:
+ # You should have a github account and travis linked travis account.
+ # The secure key to be filled below is the 685 character long encrypted
+ # token you can find as follow from your coverity dashboard
+ # (at https://scan.coverity.com/dashboard):
+ # Click on the github project (<you>/odp)
+ # Click on "submit build"
+ # Click on "Configure Travis CI"
+ # Look at the COVERITY_SCAN_TOKEN in the env: global: section
+ # of the configuration example.
+ # copy the secure:<key> below
+ #
+ - secure: "xxxx"
+ #
+ # By default Linaro CODECOV_TOKEN token is used. It's ok to use it to see
+ # for individual commit validation. But you you want to track tests history
+ # you need generated new one at https://codecov.io specific for your repo.
+ - CODECOV_TOKEN=8e1c0fd8-62ff-411e-a79f-5839f6662c11
+
+addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc
+ - clang-3.8
+ - automake autoconf libtool libssl-dev graphviz mscgen doxygen
+ - libpcap-dev
+ - dpkg-cross equivs
+ - gcc-aarch64-linux-gnu pkg-config-aarch64-linux-gnu libc6-dev-arm64-cross
+ - gcc-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf libc6-dev-armhf-cross
+ - gcc-powerpc-linux-gnu pkg-config-powerpc-linux-gnu libc6-dev-powerpc-cross
+# coverity_scan:
+# project:
+# name: "$TRAVIS_REPO_SLUG"
+# notification_email: xxxx
+# build_command_prepend: "./bootstrap && ./configure --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example"
+# build_command: "make"
+# branch_pattern: coverity_scan
+
+compiler:
+ - gcc
+ - clang-3.8
+
+env:
+ - CONF=""
+ - CONF="--enable-schedule-sp"
+
+before_install:
+# Install cunit for the validation tests because distro version is too old and fails C99 compile
+ - sudo apt-get remove libcunit1-dev libcunit1
+ - export CUNIT_VERSION=2.1-3
+ - curl -sSOL https://github.com/Linaro/libcunit/releases/download/${CUNIT_VERSION}/CUnit…
+ - tar -jxf *.bz2
+ - pushd CUnit*
+ - libtoolize --force --copy
+ - aclocal
+ - autoheader
+ - automake --add-missing --include-deps --copy
+ - autoconf
+ - ./configure --enable-debug --enable-automated --enable-basic --enable-console --enable-examples --enable-test $CROSS || cat config.log
+ - make
+ - sudo make install
+ - popd
+ - export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
+
+install:
+ - echo 1000 | sudo tee /proc/sys/vm/nr_hugepages
+ - sudo mkdir -p /mnt/huge
+ - sudo mount -t hugetlbfs nodev /mnt/huge
+
+ - sudo apt-get -qq update
+ - sudo apt-get install linux-headers-`uname -r`
+ - gem install asciidoctor
+ - PATH=${PATH//:\.\/node_modules\/\.bin/}
+
+# DPDK pktio
+ - TARGET=${TARGET:-"x86_64-native-linuxapp-gcc"}
+ - git -c advice.detachedHead=false clone -q --depth=1 --single-branch --branch=v16.04 http://dpdk.org/git/dpdk dpdk
+ - pushd dpdk
+ - git log --oneline --decorate
+ - make config T=${TARGET} O=${TARGET}
+ - pushd ${TARGET}
+ - sed -ri 's,(CONFIG_RTE_LIBRTE_PMD_PCAP=).*,\1y,' .config
+ - popd
+ - make install T=${TARGET} EXTRA_CFLAGS="-fPIC"
+ - popd
+
+# Netmap pktio
+ - git -c advice.detachedHead=false clone -q --depth=1 --single-branch --branch=v11.2 https://github.com/luigirizzo/netmap.git
+ - pushd netmap/LINUX
+ - ./configure
+ - make
+ - sudo insmod ./netmap.ko
+ - popd
+
+script:
+ - ./bootstrap
+ - ./configure --prefix=$HOME/odp-install --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example --with-dpdk-path=`pwd`/dpdk/${TARGET} --with-netmap-path=`pwd`/netmap $CONF
+ - make -j $(nproc)
+ - make install
+ - echo "Checking linking and run from install..."
+ - pushd $HOME
+ - echo "Dynamic link.."
+ - ${CC} ${OLDPWD}/example/hello/odp_hello.c -o odp_hello_inst -I${HOME}/odp-install/include -L${HOME}/odp-install/lib -lodp-linux -L${OLDPWD}/dpdk/x86_64-native-linuxapp-gcc/lib -lrt -ldpdk -lpthread -lcrypto -lpcap -ldl
+ - LD_LIBRARY_PATH="${HOME}/odp-install/lib:$LD_LIBRARY_PATH" ./odp_hello_inst
+ - echo "Static link.."
+ - ${CC} ${OLDPWD}/example/hello/odp_hello.c -o odp_hello_inst -I${HOME}/odp-install/include -L${HOME}/odp-install/lib -lodp-linux -L${OLDPWD}/dpdk/x86_64-native-linuxapp-gcc/lib -lrt -ldpdk -lpthread -lcrypto -lpcap -ldl -static
+ - ./odp_hello_inst
+ - popd
+ - sudo git clean -f -d -x
+ - ./bootstrap
+ - ./configure --prefix=$HOME/odp-install --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example $CONF
+ - make -j $(nproc)
+ - sudo LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" make check
+
+jobs:
+ include:
+ - stage: test
+ compiler: aarch64-linux-gnu-gcc
+ env: TEST="aarch64-linux-gnu" CROSS="--host=aarch64-linux-gnu --prefix=/usr/aarch64-linux-gnu"
+ install: true
+ script:
+ - mkdir cross
+ - pushd cross
+ # one can not include colon in the command or bad things will happen, so mimic it
+ - env echo -e 'Provides\x3a multiarch-support, debconf, debconf-2.0' > dummy
+ - equivs-build -a arm64 dummy
+ - wget
+ http://ports.ubuntu.com/pool/main/o/openssl/libssl-dev_1.0.1f-1ubuntu2.22_a…
+ http://ports.ubuntu.com/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.22_…
+ http://ports.ubuntu.com/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-1ubuntu1_arm…
+ http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.2.8.dfsg-1ubuntu1_arm64.d…
+ - sudo dpkg-cross -i -M -A -a arm64 *.deb
+ - popd
+ - ./bootstrap
+ - ./configure --prefix=$HOME/odp-install $CROSS
+ --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example
+ - make -j $(nproc)
+ - stage: test
+ compiler: arm-linux-gnueabihf-gcc
+ env: TEST="arm-linux-gnueabihf" CROSS="--host=arm-linux-gnueabihf --prefix=/usr/arm-linux-gnueabihf"
+ install: true
+ script:
+ - mkdir cross
+ - pushd cross
+ # one can not include colon in the command or bad things will happen, so mimic it
+ - env echo -e 'Provides\x3a multiarch-support, debconf, debconf-2.0' > dummy
+ - equivs-build -a armhf dummy
+ - wget
+ http://ports.ubuntu.com/pool/main/o/openssl/libssl-dev_1.0.1f-1ubuntu2.22_a…
+ http://ports.ubuntu.com/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.22_…
+ http://ports.ubuntu.com/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-1ubuntu1_arm…
+ http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.2.8.dfsg-1ubuntu1_armhf.d…
+ - sudo dpkg-cross -i -M -A -a armhf *.deb
+ - popd
+ - ./bootstrap
+ - ./configure --prefix=$HOME/odp-install $CROSS
+ --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example
+ - make -j $(nproc)
+ - stage: test
+ compiler: powerpc-linux-gnu-gcc
+ env: TEST="powerpc-linux-gnu" CROSS="--host=powerpc-linux-gnu --prefix=/usr/powerpc-linux-gnu"
+ install: true
+ script:
+ - mkdir cross
+ - pushd cross
+ # one can not include colon in the command or bad things will happen, so mimic it
+ - env echo -e 'Provides\x3a multiarch-support, debconf, debconf-2.0' > dummy
+ - equivs-build -a powerpc dummy
+ - wget
+ http://ports.ubuntu.com/pool/main/o/openssl/libssl-dev_1.0.1f-1ubuntu2.22_p…
+ http://ports.ubuntu.com/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.22_…
+ http://ports.ubuntu.com/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-1ubuntu1_pow…
+ http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.2.8.dfsg-1ubuntu1_powerpc…
+ - sudo dpkg-cross -i -M -A -a powerpc *.deb
+ - popd
+ - ./bootstrap
+ - ./configure --prefix=$HOME/odp-install $CROSS
+ --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example
+ - make -j $(nproc)
+ - stage: test
+ env: TEST=distcheck
+ compiler: gcc
+ script:
+ - ./bootstrap
+ - ./configure --prefix=$HOME/odp-install --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example
+ - sudo PATH="$PATH" LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" make distcheck
+ - stage: test
+ env: TEST=doxygen
+ compiler: gcc
+ script:
+ # doxygen does not trap on warnings, check for them here.
+ - ./bootstrap
+ - ./configure
+ - make doxygen-doc |tee doxygen.log
+ - fgrep -rvq warning ./doxygen.log
+ - stage: test
+ env: TEST=checkpatch
+ compiler: gcc
+ script:
+ - echo ${TRAVIS_COMMIT_RANGE};
+ - ODP_PATCHES=`echo ${TRAVIS_COMMIT_RANGE} | sed 's/\.//'`;
+ - if [ -z "${ODP_PATCHES}" ]; then env; exit 1; fi;
+ - ./scripts/ci-checkpatches.sh ${ODP_PATCHES};
+
+after_failure:
+ - cat config.log
+ - find . -name 'test-suite.log' -execdir grep -il "FAILED" {} \; -exec echo {} \; -exec cat {} \;
diff --git a/scripts/ci-checkpatches.sh b/scripts/ci-checkpatches.sh
new file mode 100755
index 00000000..cb1c4e65
--- /dev/null
+++ b/scripts/ci-checkpatches.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+PATCHES=$1
+echo "Run checkpatch for ${PATCHES}"
+# Generate patches provided with $1.
+# In case of force push and range is broken
+# validate only the latest commit if it's not merge commit.
+git format-patch ${PATCHES}
+if [ $? -ne 0 ]; then
+ git show --summary HEAD| grep -q '^Merge:';
+ if [ $? -ne 0 ]; then
+ git format-patch HEAD^;
+ perl ./scripts/checkpatch.pl *.patch;
+ fi;
+else
+ perl ./scripts/checkpatch.pl *.patch;
+fi
commit b5dca2f1b0fff412fc56ba8bafba25507dcf1d64
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Fri Oct 14 14:51:25 2016 +0300
test: skip pktio_perf tests on 1 and 2 cpus machines
Make check should skip the test instead of failing it.
Test splits RX and TX cores for packet processing. Core
0 bind to control thread. So running machine should have
at least 2 worker threads which is not enough on 1 and 2
cpus machine. CUnit uses special value 77 to mark test as
SKIPPED and not fail on it.
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Reviewed-by: Mike Holmes <mike.holmes(a)linaro.org>
diff --git a/test/performance/odp_pktio_perf.c b/test/performance/odp_pktio_perf.c
index 18a1aa2a..988f298b 100644
--- a/test/performance/odp_pktio_perf.c
+++ b/test/performance/odp_pktio_perf.c
@@ -34,6 +34,8 @@
#include <inttypes.h>
#include <test_debug.h>
+#define TEST_SKIP 77
+
#define PKT_BUF_NUM 8192
#define MAX_NUM_IFACES 2
#define TEST_HDR_MAGIC 0x92749451
@@ -558,7 +560,7 @@ static int setup_txrx_masks(odp_cpumask_t *thd_mask_tx,
gbl_args->args.cpu_count);
if (num_workers < 2) {
LOG_ERR("Need at least two cores\n");
- return -1;
+ return TEST_SKIP;
}
if (gbl_args->args.num_tx_workers) {
@@ -659,7 +661,7 @@ static int run_test_single(odp_cpumask_t *thd_mask_tx,
static int run_test(void)
{
- int ret = 1;
+ int ret;
int i;
odp_cpumask_t txmask, rxmask;
test_status_t status = {
@@ -669,8 +671,9 @@ static int run_test(void)
.warmup = 1,
};
- if (setup_txrx_masks(&txmask, &rxmask) != 0)
- return -1;
+ ret = setup_txrx_masks(&txmask, &rxmask);
+ if (ret)
+ return ret;
printf("Starting test with params:\n");
printf("\tTransmit workers: \t%d\n", odp_cpumask_count(&txmask));
@@ -691,8 +694,11 @@ static int run_test(void)
run_test_single(&txmask, &rxmask, &status);
status.warmup = 0;
- while (ret > 0)
+ while (1) {
ret = run_test_single(&txmask, &rxmask, &status);
+ if (ret <= 0)
+ break;
+ }
return ret;
}
commit 4e8595151c075074744b8a1ad689a052df18c27e
Author: Brian Brooks <brian.brooks(a)arm.com>
Date: Tue Jun 27 15:35:58 2017 -0500
build: fix 64-bit atomics detection
Use uint64_t instead of int type.
This resolves ipfragreass build breakage with clang on 32-bit systems.
Signed-off-by: Brian Brooks <brian.brooks(a)arm.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/platform/linux-generic/m4/configure.m4 b/platform/linux-generic/m4/configure.m4
index efa29e5e..5d6f4482 100644
--- a/platform/linux-generic/m4/configure.m4
+++ b/platform/linux-generic/m4/configure.m4
@@ -34,10 +34,11 @@ use_libatomic=no
AC_MSG_CHECKING(whether -latomic is needed for 64-bit atomic built-ins)
AC_LINK_IFELSE(
[AC_LANG_SOURCE([[
- static int loc;
+ #include <stdint.h>
+ static uint64_t loc;
int main(void)
{
- int prev = __atomic_exchange_n(&loc, 7, __ATOMIC_RELAXED);
+ uint64_t prev = __atomic_exchange_n(&loc, 7, __ATOMIC_RELAXED);
return 0;
}
]])],
commit e48559aa65e369d25f8f1c5e63a98939e881f367
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Thu Jun 15 18:56:06 2017 +0300
configure.ac: do not trap if libatomic is not found
Idea if check was to detect if libatomic is needed or not,
not trap configure on not case
Fixes Linaro CI compilation for:
gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabih
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Reviewed-by: Bill Fischofer <bill.fischofer(a)linaro.org>
diff --git a/platform/linux-generic/m4/configure.m4 b/platform/linux-generic/m4/configure.m4
index 98885f5f..efa29e5e 100644
--- a/platform/linux-generic/m4/configure.m4
+++ b/platform/linux-generic/m4/configure.m4
@@ -65,7 +65,7 @@ AC_LINK_IFELSE(
AC_CHECK_LIB(
[atomic], [__atomic_exchange_16],
[use_libatomic=yes],
- [AC_MSG_FAILURE([cannot detect support for 128-bit atomics])])
+ [AC_MSG_CHECKING([cannot detect support for 128-bit atomics])])
])
if test "x$use_libatomic" = "xyes"; then
commit 8bda226cc547acb81e3c17f09348c6ff4a6f4356
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Mon Jun 26 18:00:16 2017 +0300
configure: remove dependency of autoconf-archive
autoconf-archive is not available on some build environment
Number of projects simple have local copy of this file.
Do the same thing.
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
diff --git a/DEPENDENCIES b/DEPENDENCIES
index e344826e..a5266c9e 100644
--- a/DEPENDENCIES
+++ b/DEPENDENCIES
@@ -8,14 +8,13 @@ Prerequisites for building the OpenDataPlane (ODP) API
automake
autoconf
- autoconf-archive
libtool
On Debian/Ubuntu systems:
- $ sudo apt-get install automake autoconf autoconf-archive libtool
+ $ sudo apt-get install automake autoconf libtool
On CentOS/RedHat/Fedora systems:
- $ sudo yum install automake autoconf autoconf-archive libtool
+ $ sudo yum install automake autoconf libtool
3. Required libraries
diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4
new file mode 100644
index 00000000..c3a8d695
--- /dev/null
+++ b/m4/ax_check_compile_flag.m4
@@ -0,0 +1,72 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
+#
+# DESCRIPTION
+#
+# Check whether the given FLAG works with the current language's compiler
+# or gives an error. (Warnings, however, are ignored)
+#
+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+# success/failure.
+#
+# If EXTRA-FLAGS is defined, it is added to the current language's default
+# flags (e.g. CFLAGS) when the check is done. The check is thus made with
+# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
+# force the compiler to issue an error when a bad flag is given.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod(a)gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans(a)gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
+
+#serial 2
+
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
+[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
+ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
+ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ [AS_VAR_SET(CACHEVAR,[yes])],
+ [AS_VAR_SET(CACHEVAR,[no])])
+ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
+AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
+ [m4_default([$2], :)],
+ [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_COMPILE_FLAGS
commit d3a984a9e86177215246d0925b4a86f9ade9d22a
Author: Mike Holmes <mike.holmes(a)linaro.org>
Date: Fri Oct 21 14:40:17 2016 -0400
configure: the version cannot use a script
Use of a script in the autotools breaks github CI
Define the API version in configure and reuse it in the code
Benefits:
removes dependence on scripts to build
removes scripts and the make file from odp/scripts
removes generated .scmversion file
places api versioning right next to lib versioning in the configure.ac
allows github to auto build odp repos
Signed-off-by: Mike Holmes <mike.holmes(a)linaro.org>
Reviewed-by: Brian Brooks <brian.brooks(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/.gitignore b/.gitignore
index d4e7d02e..fbc0eab9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,7 +12,6 @@
.deps/
.dirstamp
.libs/
-.scmversion
CUnit-Memory-Dump.xml
ID
Makefile
diff --git a/.scmversion b/.scmversion
new file mode 100644
index 00000000..dc7bf3df
--- /dev/null
+++ b/.scmversion
@@ -0,0 +1 @@
+1.11.0.1_monarch.git10.g7106d8b0
\ No newline at end of file
diff --git a/Makefile.am b/Makefile.am
index 625748af..2a9a658d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,9 +11,8 @@ SUBDIRS = @platform_with_platform@ \
test \
helper/test \
doc \
- example \
- scripts
+ example
@DX_RULES@
-EXTRA_DIST = bootstrap $(DX_CONFIG) CHANGELOG config/README .scmversion
+EXTRA_DIST = bootstrap $(DX_CONFIG) CHANGELOG config/README
diff --git a/configure.ac b/configure.ac
index 08cc375d..efb9f7ed 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,23 @@
AC_PREREQ([2.5])
-AC_INIT([OpenDataPlane], m4_esyscmd_s(./scripts/git_hash.sh .), [lng-odp(a)lists.linaro.org])
+##########################################################################
+# Set correct API version
+##########################################################################
+m4_define([odpapi_generation_version], [1])
+m4_define([odpapi_major_version], [11])
+m4_define([odpapi_minor_version], [0])
+m4_define([odpapi_point_version], [1])
+m4_define([odpapi_version],
+ [odpapi_generation_version.odpapi_major_version.odpapi_minor_version.odpapi_point_version])
+AC_INIT([OpenDataPlane],[odpapi_version],[lng-odp(a)lists.linaro.org])
+
+ODP_VERSION_API_GENERATION=odpapi_generation_version
+AC_SUBST(ODP_VERSION_API_GENERATION)
+ODP_VERSION_API_MAJOR=odpapi_major_version
+AC_SUBST(ODP_VERSION_API_MAJOR)
+ODP_VERSION_API_MINOR=odpapi_minor_version
+AC_SUBST(ODP_VERSION_API_MINOR)
+AC_CONFIG_FILES([include/odp/api/spec/version.h])
+
AM_INIT_AUTOMAKE([1.9 tar-pax subdir-objects])
AC_CONFIG_SRCDIR([helper/config.h.in])
AM_CONFIG_HEADER([helper/config.h])
@@ -267,7 +285,6 @@ AC_CONFIG_FILES([Makefile
helper/test/Makefile
pkgconfig/libodp-linux.pc
pkgconfig/libodphelper-linux.pc
- scripts/Makefile
])
AC_SEARCH_LIBS([timer_create],[rt posix4])
diff --git a/include/odp/api/spec/.gitignore b/include/odp/api/spec/.gitignore
new file mode 100644
index 00000000..67020331
--- /dev/null
+++ b/include/odp/api/spec/.gitignore
@@ -0,0 +1 @@
+version.h
diff --git a/include/odp/api/spec/version.h b/include/odp/api/spec/version.h.in
similarity index 93%
rename from include/odp/api/spec/version.h
rename to include/odp/api/spec/version.h.in
index 1ddb9cea..4b16dcc5 100644
--- a/include/odp/api/spec/version.h
+++ b/include/odp/api/spec/version.h.in
@@ -37,7 +37,7 @@ extern "C" {
* very significant changes to the API. APIs with different
* versions are likely not backward compatible.
*/
-#define ODP_VERSION_API_GENERATION 1
+#define ODP_VERSION_API_GENERATION @ODP_VERSION_API_GENERATION@
/**
* ODP API major version
@@ -45,7 +45,7 @@ extern "C" {
* Introduction of major new features or changes. APIs with different major
* versions are likely not backward compatible.
*/
-#define ODP_VERSION_API_MAJOR 11
+#define ODP_VERSION_API_MAJOR @ODP_VERSION_API_MAJOR@
/**
* ODP API minor version
@@ -54,7 +54,7 @@ extern "C" {
* to the API. For an API with common generation and major version, but with
* different minor numbers the two versions are backward compatible.
*/
-#define ODP_VERSION_API_MINOR 0
+#define ODP_VERSION_API_MINOR @ODP_VERSION_API_MINOR@
/**
* ODP API version string
diff --git a/platform/Makefile.inc b/platform/Makefile.inc
index 053bd121..4a0e68b7 100644
--- a/platform/Makefile.inc
+++ b/platform/Makefile.inc
@@ -10,8 +10,7 @@ lib_LTLIBRARIES = $(LIB)/libodp-linux.la
AM_LDFLAGS += -version-number '$(ODP_LIBSO_VERSION)'
-GIT_DESC = `$(top_srcdir)/scripts/get_impl_str.sh $(top_srcdir)`
-AM_CFLAGS += "-DGIT_HASH=$(GIT_DESC)"
+AM_CFLAGS += "-DGIT_HASH=$(VERSION)"
AM_CFLAGS += $(VISIBILITY_CFLAGS)
#The implementation will need to retain the deprecated implementation
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
deleted file mode 100644
index 189b3efc..00000000
--- a/scripts/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = get_impl_str.sh git_hash.sh
diff --git a/scripts/get_impl_str.sh b/scripts/get_impl_str.sh
deleted file mode 100755
index d765a531..00000000
--- a/scripts/get_impl_str.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-if [ -z ${1} ]; then
- echo "should be called with a path"
- exit
-fi
-ROOTDIR=${1}
-
-CUSTOM_STR=${CUSTOM_STR:-https://git.linaro.org/lng/odp.git}
-
-echo -n "'${CUSTOM_STR}' ($(cat ${ROOTDIR}/.scmversion))"
commit 53b23b8e017db60c3635ac68b3894081448ea132
Author: Brian Brooks <brian.brooks(a)arm.com>
Date: Tue Jul 11 16:18:12 2017 -0500
pktio: GCC 7 fixes
The GCC 7 series introduces changes that expose ODP compilation
issues. These include case statement fall through warnings, and
stricter checks on potential string overflows and other semantic
analysis.
Fixes: https://bugs.linaro.org/show_bug.cgi?id=3027
Signed-off-by: Brian Brooks <brian.brooks(a)arm.com>
Signed-off-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/test/validation/pktio/pktio.c b/test/validation/pktio/pktio.c
index 4e93e9b4..1b73697a 100644
--- a/test/validation/pktio/pktio.c
+++ b/test/validation/pktio/pktio.c
@@ -1410,7 +1410,9 @@ int pktio_check_statistics_counters(void)
void pktio_test_statistics_counters(void)
{
odp_pktio_t pktio_rx, pktio_tx;
- odp_pktio_t pktio[MAX_NUM_IFACES];
+ odp_pktio_t pktio[MAX_NUM_IFACES] = {
+ ODP_PKTIO_INVALID, ODP_PKTIO_INVALID
+ };
odp_packet_t pkt;
odp_packet_t tx_pkt[1000];
uint32_t pkt_seq[1000];
commit f3bc64fcadb9b8dbe034507be81f0f06feb335ab
Author: Brian Brooks <brian.brooks(a)arm.com>
Date: Tue Jul 11 16:18:11 2017 -0500
build: GCC 7 fixes
The GCC 7 series introduces changes that expose ODP compilation
issues. These include case statement fall through warnings, and
stricter checks on potential string overflows and other semantic
analysis.
Fixes: https://bugs.linaro.org/show_bug.cgi?id=3027
Signed-off-by: Brian Brooks <brian.brooks(a)arm.com>
Reviewed-by: Ola Liljedahl <ola.liljedahl(a)arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli(a)arm.com>
Signed-off-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/DEPENDENCIES b/DEPENDENCIES
index a5266c9e..e344826e 100644
--- a/DEPENDENCIES
+++ b/DEPENDENCIES
@@ -8,13 +8,14 @@ Prerequisites for building the OpenDataPlane (ODP) API
automake
autoconf
+ autoconf-archive
libtool
On Debian/Ubuntu systems:
- $ sudo apt-get install automake autoconf libtool
+ $ sudo apt-get install automake autoconf autoconf-archive libtool
On CentOS/RedHat/Fedora systems:
- $ sudo yum install automake autoconf libtool
+ $ sudo yum install automake autoconf autoconf-archive libtool
3. Required libraries
diff --git a/configure.ac b/configure.ac
index 5c7ddd04..08cc375d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -224,6 +224,19 @@ ODP_CFLAGS="$ODP_CFLAGS -Wmissing-declarations -Wold-style-definition -Wpointer-
ODP_CFLAGS="$ODP_CFLAGS -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral"
ODP_CFLAGS="$ODP_CFLAGS -Wformat-security -Wundef -Wwrite-strings"
ODP_CFLAGS="$ODP_CFLAGS -std=c99"
+
+dnl Use -Werror in the checks below since Clang emits a warning instead of
+dnl an error when it encounters an unknown warning option.
+AX_CHECK_COMPILE_FLAG([-Wimplicit-fallthrough=0],
+ [ODP_CFLAGS="$ODP_CFLAGS -Wimplicit-fallthrough=0"],
+ [], [-Werror])
+AX_CHECK_COMPILE_FLAG([-Wformat-truncation=0],
+ [ODP_CFLAGS="$ODP_CFLAGS -Wformat-truncation=0"],
+ [], [-Werror])
+AX_CHECK_COMPILE_FLAG([-Wformat-overflow=0],
+ [ODP_CFLAGS="$ODP_CFLAGS -Wformat-overflow=0"],
+ [], [-Werror])
+
# Extra flags for example to suppress certain warning types
ODP_CFLAGS="$ODP_CFLAGS $ODP_CFLAGS_EXTRA"
diff --git a/platform/linux-generic/m4/configure.m4 b/platform/linux-generic/m4/configure.m4
index 1b1b883d..98885f5f 100644
--- a/platform/linux-generic/m4/configure.m4
+++ b/platform/linux-generic/m4/configure.m4
@@ -28,6 +28,50 @@ AC_LINK_IFELSE(
echo "Use newer version. For gcc > 4.7.0"
exit -1)
+dnl Check whether -latomic is needed
+use_libatomic=no
+
+AC_MSG_CHECKING(whether -latomic is needed for 64-bit atomic built-ins)
+AC_LINK_IFELSE(
+ [AC_LANG_SOURCE([[
+ static int loc;
+ int main(void)
+ {
+ int prev = __atomic_exchange_n(&loc, 7, __ATOMIC_RELAXED);
+ return 0;
+ }
+ ]])],
+ [AC_MSG_RESULT(no)],
+ [AC_MSG_RESULT(yes)
+ AC_CHECK_LIB(
+ [atomic], [__atomic_exchange_8],
+ [use_libatomic=yes],
+ [AC_MSG_FAILURE([__atomic_exchange_8 is not available])])
+ ])
+
+AC_MSG_CHECKING(whether -latomic is needed for 128-bit atomic built-ins)
+AC_LINK_IFELSE(
+ [AC_LANG_SOURCE([[
+ static __int128 loc;
+ int main(void)
+ {
+ __int128 prev;
+ prev = __atomic_exchange_n(&loc, 7, __ATOMIC_RELAXED);
+ return 0;
+ }
+ ]])],
+ [AC_MSG_RESULT(no)],
+ [AC_MSG_RESULT(yes)
+ AC_CHECK_LIB(
+ [atomic], [__atomic_exchange_16],
+ [use_libatomic=yes],
+ [AC_MSG_FAILURE([cannot detect support for 128-bit atomics])])
+ ])
+
+if test "x$use_libatomic" = "xyes"; then
+ AM_LDFLAGS="$AM_LDFLAGS -latomic"
+fi
+
m4_include([platform/linux-generic/m4/odp_pthread.m4])
m4_include([platform/linux-generic/m4/odp_openssl.m4])
m4_include([platform/linux-generic/m4/odp_pcap.m4])
commit 461780c9df581b952d837ca72717f516d99da963
Author: Bill Fischofer <bill.fischofer(a)linaro.org>
Date: Tue Jul 11 16:48:33 2017 -0500
bug: linux-generic: add syntax to allow newer clang to compile odp
Resolve Bug https://bugs.linaro.org/show_bug.cgi?id=2942 by adding
casts needed to avoid compilation failures when using clang 4.0.0
included in Ubuntu 17.04, which is stricter than clang 3.8.1 which
is in Ubuntu 16.10.
Signed-off-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/helper/chksum.c b/helper/chksum.c
index 8f188814..772abcd2 100644
--- a/helper/chksum.c
+++ b/helper/chksum.c
@@ -122,7 +122,7 @@ static inline int odph_process_l4_hdr(odp_packet_t odp_pkt,
* should come from the udp header, unlike for TCP where is
* derived. */
l4_len = odp_be_to_cpu_16(udp_hdr_ptr->length);
- pkt_chksum_ptr = &udp_hdr_ptr->chksum;
+ pkt_chksum_ptr = (uint16_t *)(void *)&udp_hdr_ptr->chksum;
pkt_chksum_offset = l4_offset + offsetof(odph_udphdr_t, chksum);
} else if (odp_packet_has_tcp(odp_pkt)) {
tcp_hdr_ptr = (odph_tcphdr_t *)l4_ptr;
@@ -133,7 +133,7 @@ static inline int odph_process_l4_hdr(odp_packet_t odp_pkt,
tcp_hdr_ptr = &tcp_hdr;
}
- pkt_chksum_ptr = &tcp_hdr_ptr->cksm;
+ pkt_chksum_ptr = (uint16_t *)(void *)&tcp_hdr_ptr->cksm;
pkt_chksum_offset = l4_offset + offsetof(odph_tcphdr_t, cksm);
is_tcp = true;
} else {
@@ -197,7 +197,7 @@ static inline int odph_process_l3_hdr(odp_packet_t odp_pkt,
ipv4_hdr_ptr = &ipv4_hdr;
}
- addrs_ptr = (uint16_t *)&ipv4_hdr_ptr->src_addr;
+ addrs_ptr = (uint16_t *)(void *)&ipv4_hdr_ptr->src_addr;
addrs_len = 2 * ODPH_IPV4ADDR_LEN;
protocol = ipv4_hdr_ptr->proto;
l3_len = odp_be_to_cpu_16(ipv4_hdr_ptr->tot_len);
diff --git a/platform/linux-generic/odp_packet_flags.c b/platform/linux-generic/odp_packet_flags.c
index b88324c1..fc0bc1d2 100644
--- a/platform/linux-generic/odp_packet_flags.c
+++ b/platform/linux-generic/odp_packet_flags.c
@@ -18,7 +18,7 @@
odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); \
if (packet_parse_not_complete(pkt_hdr)) \
packet_parse_full(pkt_hdr); \
- pkt_hdr->p.x = v & 1; \
+ pkt_hdr->p.x = (v) & 1; \
} while (0)
int odp_packet_has_error(odp_packet_t pkt)
-----------------------------------------------------------------------
Summary of changes:
.gitignore | 1 -
.scmversion | 1 +
.travis.yml | 226 +++++++++++++++++++++++
Makefile.am | 5 +-
configure.ac | 34 +++-
helper/chksum.c | 6 +-
include/odp/api/spec/.gitignore | 1 +
include/odp/api/spec/{version.h => version.h.in} | 6 +-
m4/ax_check_compile_flag.m4 | 72 ++++++++
platform/Makefile.inc | 3 +-
platform/linux-generic/m4/configure.m4 | 45 +++++
platform/linux-generic/odp_packet_flags.c | 2 +-
scripts/Makefile.am | 1 -
scripts/ci-checkpatches.sh | 17 ++
scripts/get_impl_str.sh | 11 --
test/performance/odp_pktio_perf.c | 16 +-
test/validation/pktio/pktio.c | 4 +-
17 files changed, 418 insertions(+), 33 deletions(-)
create mode 100644 .scmversion
create mode 100644 .travis.yml
create mode 100644 include/odp/api/spec/.gitignore
rename include/odp/api/spec/{version.h => version.h.in} (93%)
create mode 100644 m4/ax_check_compile_flag.m4
delete mode 100644 scripts/Makefile.am
create mode 100755 scripts/ci-checkpatches.sh
delete mode 100755 scripts/get_impl_str.sh
hooks/post-receive
--
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, api-next has been updated
via db7cc41aeb559dd296f3a6d8570aa10326a31d5e (commit)
from ae42f98c1a1c309c0718a3b5fc8589660de0f867 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit db7cc41aeb559dd296f3a6d8570aa10326a31d5e
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Fri Jul 14 15:43:57 2017 +0300
api: ipsec: add warning status event
Add status ID for warning messages. Outbound inline soft lifetime
expiration is currently the only source of these events. API spec
keeps simple when the same warning structure is shared with IPSEC
packet and status events.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Reviewed-by: Nikhil Agarwal <nikhil.agarwal(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index de126c37..7085bc0d 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -1123,8 +1123,26 @@ typedef struct odp_ipsec_packet_result_t {
* IPSEC status ID
*/
typedef enum odp_ipsec_status_id_t {
- /** Response to SA disable command */
- ODP_IPSEC_STATUS_SA_DISABLE = 0
+ /** Response to SA disable command
+ *
+ * Following status event (odp_ipsec_status_t) fields have valid
+ * content, other fields must be ignored:
+ * - sa: The SA that was requested to be disabled
+ * - result: Operation result
+ */
+ ODP_IPSEC_STATUS_SA_DISABLE = 0,
+
+ /** Warning from inline IPSEC processing
+ *
+ * Following status event (odp_ipsec_status_t) fields have valid
+ * content, other fields must be ignored:
+ * - sa: The SA that caused the warning
+ * - warn: The warning(s) reported by this event
+ *
+ * This status event is generated only for outbound SAs in
+ * ODP_IPSEC_OP_MODE_INLINE mode.
+ */
+ ODP_IPSEC_STATUS_WARN
} odp_ipsec_status_id_t;
@@ -1135,15 +1153,18 @@ typedef struct odp_ipsec_status_t {
/** IPSEC status ID */
odp_ipsec_status_id_t id;
- /** Return value from the operation
+ /** IPSEC SA that was target of the operation */
+ odp_ipsec_sa_t sa;
+
+ /** Result of the operation
*
* 0: Success
* <0: Failure
*/
- int ret;
+ int result;
- /** IPSEC SA that was target of the operation */
- odp_ipsec_sa_t sa;
+ /** Warnings of an ODP_IPSEC_STATUS_WARN status event */
+ odp_ipsec_warn_t warn;
} odp_ipsec_status_t;
-----------------------------------------------------------------------
Summary of changes:
include/odp/api/spec/ipsec.h | 33 +++++++++++++++++++++++++++------
1 file changed, 27 insertions(+), 6 deletions(-)
hooks/post-receive
--
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, api-next has been updated
via f49ce736d461c3e8c2534ed216e8a70e8bee954e (commit)
via d4b85d07214fb1f566b8ac346375cfe097c0bb51 (commit)
via 127c73198b07dfe413e8ce401bb26f3e5ff71e91 (commit)
via 2cd78610004d755dbe7a8e9c29086791793aea19 (commit)
via e58e1fc97f392f63a267c2252656367b12417152 (commit)
via a3ff4f6726582e41dd1398a6939a1877b9f25edc (commit)
via 4e3598f34f16aa9e50ac1aaae2b4074cd806e419 (commit)
via 697c4a58d57c286e679dd570722d8875ccf05a27 (commit)
via 6879ecd2d136508e59cf8d9b8f15c6475ba74c99 (commit)
from 698d82ce41a3f6ca08c6f218784d3eea6ac81e42 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f49ce736d461c3e8c2534ed216e8a70e8bee954e
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Wed Jul 12 16:54:38 2017 +0300
api: ipsec: remove initial sequence number parameter
Application should not need to control initial sequence number
value as implementation is able to manage that internally.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index a156b54f..de126c37 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -623,9 +623,6 @@ typedef struct odp_ipsec_sa_param_t {
/** SA lifetime parameters */
odp_ipsec_lifetime_t lifetime;
- /** Initial sequence number */
- uint64_t seq;
-
/** SPI value */
uint32_t spi;
commit d4b85d07214fb1f566b8ac346375cfe097c0bb51
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Wed Jul 12 16:54:37 2017 +0300
api: ipsec: outer header pointer as const
Outer headers are read-only data for an implementation.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index 00f3fd05..a156b54f 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -1073,7 +1073,7 @@ typedef struct odp_ipsec_out_inline_param_t {
/** Points to first byte of outer headers to be copied in
* front of the outgoing IPSEC packet. Implementation copies
* the headers during odp_ipsec_out_inline() call. */
- uint8_t *ptr;
+ const uint8_t *ptr;
/** Outer header length in bytes */
uint32_t len;
commit 127c73198b07dfe413e8ce401bb26f3e5ff71e91
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Wed Jul 12 16:54:36 2017 +0300
api: ipsec: flexible soft lifetime reporting
Allow implementation to decide how many times a soft lifetime
expiration is reported. Application does not require strict
synchronization of soft lifetimes.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index e6124464..00f3fd05 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -504,7 +504,9 @@ typedef struct odp_ipsec_sa_opt_t {
*
* These limits are used for setting up SA lifetime. IPSEC operations check
* against the limits and output a status code (e.g. soft_exp_bytes) when
- * a limit is crossed. Any number of limits may be used simultaneously.
+ * a limit is crossed. It's implementation defined how many times soft
+ * lifetime expiration is reported: only once, first N or all packets following
+ * the limit crossing. Any number of limits may be used simultaneously.
* Use zero when there is no limit.
*/
typedef struct odp_ipsec_lifetime_t {
commit 2cd78610004d755dbe7a8e9c29086791793aea19
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Wed Jul 12 16:54:35 2017 +0300
api: ipsec: split operation result status bits
Split error bits into error and warning bits. Move flags into
separate type and field. This way, all exceptions (rare but
important events) can be checked and maintained separately
from operation flags, which may be set for almost every packet.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index 331971db..e6124464 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -555,8 +555,8 @@ typedef enum odp_ipsec_frag_mode_t {
* Lookup mode controls how an SA participates in SA lookup offload.
* Inbound operations perform SA lookup if application does not provide a SA as
* a parameter. In inline mode, a lookup miss directs the packet back to normal
- * packet input interface processing. SA lookup failure status (error.sa_lookup)
- * is reported through odp_ipsec_packet_result_t.
+ * packet input interface processing. SA lookup failure status
+ * (status.error.sa_lookup) is reported through odp_ipsec_packet_result_t.
*/
typedef enum odp_ipsec_lookup_mode_t {
/** Inbound SA lookup is disabled for the SA. */
@@ -875,11 +875,11 @@ uint64_t odp_ipsec_sa_to_u64(odp_ipsec_sa_t sa);
/** IPSEC operation status has no errors */
#define ODP_IPSEC_OK 0
-/** IPSEC operation status */
-typedef struct odp_ipsec_op_status_t {
- /** Variant mappings for op status */
+/** IPSEC errors */
+typedef struct odp_ipsec_error_t {
+ /** IPSEC errors */
union {
- /** Error flags */
+ /** Error bits */
struct {
/** Protocol error. Not a valid ESP or AH packet,
* packet data length error, etc. */
@@ -900,44 +900,81 @@ typedef struct odp_ipsec_op_status_t {
/** Packet does not fit into the given MTU size */
uint32_t mtu : 1;
- /** Soft lifetime expired: bytes */
- uint32_t soft_exp_bytes : 1;
-
- /** Soft lifetime expired: packets */
- uint32_t soft_exp_packets : 1;
-
/** Hard lifetime expired: bytes */
uint32_t hard_exp_bytes : 1;
/** Hard lifetime expired: packets */
uint32_t hard_exp_packets : 1;
-
- } error;
+ };
/** All error bits
*
- * This field can be used to set, clear or compare multiple
- * flags. For example, 'status.all_error != ODP_IPSEC_OK'
- * checks if there are
- * any errors.
+ * This field can be used to set, clear or compare
+ * multiple bits. For example, 'status.error.all != 0'
+ * checks if there are any errors.
*/
- uint32_t all_error;
+ uint32_t all;
};
- /** Variant mappings for status flags */
+} odp_ipsec_error_t;
+
+/** IPSEC warnings */
+typedef struct odp_ipsec_warn_t {
+ /** IPSEC warnings */
union {
- /** Status flags */
+ /** Warning bits */
+ struct {
+ /** Soft lifetime expired: bytes */
+ uint32_t soft_exp_bytes : 1;
+
+ /** Soft lifetime expired: packets */
+ uint32_t soft_exp_packets : 1;
+ };
+
+ /** All warnings bits */
+ uint32_t all;
+ };
+
+} odp_ipsec_warn_t;
+
+/** IPSEC operation status */
+typedef struct odp_ipsec_op_status_t {
+ /** IPSEC status bits */
+ union {
+ /** IPSEC errors and warnings */
+ struct {
+ /** IPSEC errors */
+ odp_ipsec_error_t error;
+
+ /** IPSEC warnings */
+ odp_ipsec_warn_t warn;
+ };
+
+ /** All status bits. Combines all error and warning bits.
+ * For example, 'status.all != ODP_IPSEC_OK' checks if there
+ * are any errors or warnings. */
+ uint64_t all;
+
+ };
+
+} odp_ipsec_op_status_t;
+
+/** IPSEC operation flags */
+typedef struct odp_ipsec_op_flag_t {
+ /** IPSEC operations flags */
+ union {
+ /** Operation flags */
struct {
/** Packet was processed in inline mode */
uint32_t inline_mode : 1;
- } flag;
+ };
/** All flag bits */
- uint32_t all_flag;
+ uint32_t all;
};
-} odp_ipsec_op_status_t;
+} odp_ipsec_op_flag_t;
/**
* IPSEC outbound operation options
@@ -1046,9 +1083,14 @@ typedef struct odp_ipsec_out_inline_param_t {
* IPSEC operation result for a packet
*/
typedef struct odp_ipsec_packet_result_t {
- /** IPSEC operation status */
+ /** IPSEC operation status. Use this to check if IPSEC operation
+ * reported any errors or warnings (e.g. status.all != ODP_IPSEC_OK).
+ */
odp_ipsec_op_status_t status;
+ /** IPSEC operation flags */
+ odp_ipsec_op_flag_t flag;
+
/** IPSEC SA that was used to create the packet
*
* Operation updates this SA handle value, when SA look up is performed
@@ -1060,7 +1102,7 @@ typedef struct odp_ipsec_packet_result_t {
/** Packet outer header status before inbound inline processing.
* This is valid only when outer headers are retained
- * (see odp_ipsec_inbound_config_t) and status.flag.inline_mode is set.
+ * (see odp_ipsec_inbound_config_t) and flag.inline_mode is set.
*/
struct {
/** Points to the first byte of retained outer headers. These
commit e58e1fc97f392f63a267c2252656367b12417152
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Wed Jul 12 16:54:34 2017 +0300
api: ipsec: ignore aad capability
AAD lengths are needed in crypto API but not in IPSEC API.
So, application should ignore AAD capability values in IPSEC
API.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index 2d0aea45..331971db 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -758,7 +758,9 @@ int odp_ipsec_cipher_capability(odp_cipher_alg_t cipher,
* Outputs all supported configuration options for the algorithm. Output is
* sorted (from the smallest to the largest) first by digest length, then by key
* length. Use this information to select key lengths, etc authentication
- * algorithm options for SA creation (odp_ipsec_crypto_param_t).
+ * algorithm options for SA creation (odp_ipsec_crypto_param_t). Application
+ * must ignore values for AAD length capabilities as those are not relevant for
+ * IPSEC API (fixed in IPSEC RFCs).
*
* @param auth Authentication algorithm
* @param[out] capa Array of capability structures for output
commit a3ff4f6726582e41dd1398a6939a1877b9f25edc
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Wed Jul 12 16:54:33 2017 +0300
api: ipsec: remove time based SA lifetime
Application may track time based SA lifetime expiration
efficiently and in many ways: e.g. ODP timers may be used,
wall clock time may be polled, control plane may send
notifications, etc.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index 31fcd750..2d0aea45 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -278,20 +278,6 @@ typedef struct odp_ipsec_capability_t {
* be used for many SAs. */
uint32_t max_queues;
- /** Soft expiry limit in seconds support
- *
- * 0: Limit is not supported
- * 1: Limit is supported
- */
- uint8_t soft_limit_sec;
-
- /** Hard expiry limit in seconds support
- *
- * 0: Limit is not supported
- * 1: Limit is supported
- */
- uint8_t hard_limit_sec;
-
/** Supported cipher algorithms */
odp_crypto_cipher_algos_t ciphers;
@@ -524,9 +510,6 @@ typedef struct odp_ipsec_sa_opt_t {
typedef struct odp_ipsec_lifetime_t {
/** Soft expiry limits for the session */
struct {
- /** Limit in seconds from the SA creation */
- uint64_t sec;
-
/** Limit in bytes */
uint64_t bytes;
@@ -536,9 +519,6 @@ typedef struct odp_ipsec_lifetime_t {
/** Hard expiry limits for the session */
struct {
- /** Limit in seconds from the SA creation */
- uint64_t sec;
-
/** Limit in bytes */
uint64_t bytes;
@@ -918,18 +898,12 @@ typedef struct odp_ipsec_op_status_t {
/** Packet does not fit into the given MTU size */
uint32_t mtu : 1;
- /** Soft lifetime expired: seconds */
- uint32_t soft_exp_sec : 1;
-
/** Soft lifetime expired: bytes */
uint32_t soft_exp_bytes : 1;
/** Soft lifetime expired: packets */
uint32_t soft_exp_packets : 1;
- /** Hard lifetime expired: seconds */
- uint32_t hard_exp_sec : 1;
-
/** Hard lifetime expired: bytes */
uint32_t hard_exp_bytes : 1;
commit 4e3598f34f16aa9e50ac1aaae2b4074cd806e419
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Wed Jul 12 16:54:32 2017 +0300
api: ipsec: direction specific SA params
Move direction (inboud/outbound) specific SA parameters
into separate structures. Specification is more clear
between common and direction specific SA parameters.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Signed-off-by: Bogdan Pricope <bogdan.pricope(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index 7f4a2c4c..31fcd750 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -635,51 +635,18 @@ typedef struct odp_ipsec_sa_param_t {
/** Parameters for crypto and authentication algorithms */
odp_ipsec_crypto_param_t crypto;
- /** Parameters for tunnel mode */
- odp_ipsec_tunnel_param_t tunnel;
-
- /** Fragmentation mode */
- odp_ipsec_frag_mode_t frag_mode;
-
/** Various SA option flags */
odp_ipsec_sa_opt_t opt;
/** SA lifetime parameters */
odp_ipsec_lifetime_t lifetime;
- /** SA lookup mode */
- odp_ipsec_lookup_mode_t lookup_mode;
-
- /** Minimum anti-replay window size. Use 0 to disable anti-replay
- * service. */
- uint32_t antireplay_ws;
-
/** Initial sequence number */
uint64_t seq;
/** SPI value */
uint32_t spi;
- /** Additional inbound SA lookup parameters. Values are considered
- * only in ODP_IPSEC_LOOKUP_DSTADDR_SPI lookup mode. */
- struct {
- /** Select IP version
- */
- odp_ipsec_ip_version_t ip_version;
-
- /** IP destination address (NETWORK ENDIAN) */
- void *dst_addr;
-
- } lookup_param;
-
- /** MTU for outbound IP fragmentation offload
- *
- * This is the maximum length of IP packets that outbound IPSEC
- * operations may produce. The value may be updated later with
- * odp_ipsec_mtu_update().
- */
- uint32_t mtu;
-
/** Select pipelined destination for resulting events
*
* Asynchronous and inline modes generate events. Select where
@@ -696,17 +663,6 @@ typedef struct odp_ipsec_sa_param_t {
*/
odp_queue_t dest_queue;
- /** Classifier destination CoS for resulting packets
- *
- * Successfully decapsulated packets are sent to classification
- * through this CoS. Other resulting events are sent to 'dest_queue'.
- * This field is considered only when 'pipeline' is
- * ODP_IPSEC_PIPELINE_CLS. The CoS must not be shared between any pktio
- * interface default CoS. The maximum number of different CoS supported
- * is defined by IPSEC capability max_cls_cos.
- */
- odp_cos_t dest_cos;
-
/** User defined SA context pointer
*
* User defined context pointer associated with the SA.
@@ -723,6 +679,65 @@ typedef struct odp_ipsec_sa_param_t {
*/
uint32_t context_len;
+ /** IPSEC SA direction dependent parameters */
+ union {
+ /** Inbound specific parameters */
+ struct {
+ /** SA lookup mode */
+ odp_ipsec_lookup_mode_t lookup_mode;
+
+ /** Additional SA lookup parameters. Values are
+ * considered only in ODP_IPSEC_LOOKUP_DSTADDR_SPI
+ * lookup mode. */
+ struct {
+ /** Select IP version */
+ odp_ipsec_ip_version_t ip_version;
+
+ /** IP destination address (NETWORK ENDIAN) to
+ * be matched in addition to SPI value. */
+ void *dst_addr;
+
+ } lookup_param;
+
+ /** Minimum anti-replay window size. Use 0 to disable
+ * anti-replay service.
+ */
+ uint32_t antireplay_ws;
+
+ /** Classifier destination CoS for resulting packets
+ *
+ * Successfully decapsulated packets are sent to
+ * classification through this CoS. Other resulting
+ * events are sent to 'dest_queue'. This field is
+ * considered only when 'pipeline' is
+ * ODP_IPSEC_PIPELINE_CLS. The CoS must not be shared
+ * between any pktio interface default CoS. The maximum
+ * number of different CoS supported is defined by
+ * IPSEC capability max_cls_cos.
+ */
+ odp_cos_t dest_cos;
+
+ } inbound;
+
+ /** Outbound specific parameters */
+ struct {
+ /** Parameters for tunnel mode */
+ odp_ipsec_tunnel_param_t tunnel;
+
+ /** Fragmentation mode */
+ odp_ipsec_frag_mode_t frag_mode;
+
+ /** MTU for outbound IP fragmentation offload
+ *
+ * This is the maximum length of IP packets that
+ * outbound IPSEC operations may produce. The value may
+ * be updated later with odp_ipsec_mtu_update().
+ */
+ uint32_t mtu;
+
+ } outbound;
+ };
+
} odp_ipsec_sa_param_t;
/**
commit 697c4a58d57c286e679dd570722d8875ccf05a27
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Wed Jul 12 16:54:31 2017 +0300
api: ipsec: add max queues capability
Added capability to specify maximum number of different queues that
can be used with IPsec.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index 7fa4e178..7f4a2c4c 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -274,6 +274,10 @@ typedef struct odp_ipsec_capability_t {
*/
uint32_t max_cls_cos;
+ /** Maximum number of different destination queues. The same queue may
+ * be used for many SAs. */
+ uint32_t max_queues;
+
/** Soft expiry limit in seconds support
*
* 0: Limit is not supported
commit 6879ecd2d136508e59cf8d9b8f15c6475ba74c99
Author: Petri Savolainen <petri.savolainen(a)linaro.org>
Date: Wed Jul 12 16:54:30 2017 +0300
api: ipsec: add salt parameter
Added a parameter for passing salt/nonce for algorithms that
need it. Currently, only AES GCM needs it with 4 bytes of
salt. Later on, other cipher (or auth) algorithms may need
also salt/nonce data.
Signed-off-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index 54491b12..7fa4e178 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -384,6 +384,15 @@ typedef struct odp_ipsec_crypto_param_t {
/** Cipher key */
odp_crypto_key_t cipher_key;
+ /** Extra keying material for cipher key
+ *
+ * Additional data used as salt or nonce if the algorithm requires it,
+ * other algorithms ignore this field. These algorithms require this
+ * field set:
+ * - AES_GCM: 4 bytes of salt
+ **/
+ odp_crypto_key_t cipher_key_extra;
+
/** Authentication algorithm */
odp_auth_alg_t auth_alg;
-----------------------------------------------------------------------
Summary of changes:
include/odp/api/spec/ipsec.h | 243 +++++++++++++++++++++++++------------------
1 file changed, 144 insertions(+), 99 deletions(-)
hooks/post-receive
--
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, api-next has been updated
via 698d82ce41a3f6ca08c6f218784d3eea6ac81e42 (commit)
from cd097450cbf9d7bb6cd24654f8d43ceade5b114a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 698d82ce41a3f6ca08c6f218784d3eea6ac81e42
Author: Nikhil Agarwal <nikhil.agarwal(a)linaro.org>
Date: Thu Jul 13 12:00:06 2017 +0300
api: ipsec: add retain header capability
Signed-off-by: Nikhil Agarwal <nikhil.agarwal(a)linaro.org>
Reviewed-by: Petri Savolainen <petri.savolainen(a)linaro.org>
Reviewed-by: Balasubramanian Manoharan <bala.manoharan(a)linaro.org>
Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index e602e4b8..54491b12 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -262,6 +262,12 @@ typedef struct odp_ipsec_capability_t {
*/
odp_support_t pipeline_cls;
+ /**
+ * Support of retaining outer headers (retain_outer) in inbound inline
+ * processed packets
+ */
+ odp_support_t retain_header;
+
/** Maximum number of different destination CoSes in classification
* pipelining. The same CoS may be used for many SAs. This is equal or
* less than 'max_cos' capability in classifier API.
-----------------------------------------------------------------------
Summary of changes:
include/odp/api/spec/ipsec.h | 6 ++++++
1 file changed, 6 insertions(+)
hooks/post-receive
--