[-]
[+]
|
Changed |
openvswitch-dpdk.spec
|
|
[-]
[+]
|
Changed |
openvswitch.spec
^
|
|
[-]
[+]
|
Deleted |
openvswitch-2.5.1.tar.gz/rhel/usr_lib_systemd_system_openvswitch-nonetwork.service
^
|
@@ -1,15 +0,0 @@
-[Unit]
-Description=Open vSwitch Internal Unit
-After=syslog.target
-PartOf=openvswitch.service
-Wants=openvswitch.service
-
-[Service]
-Type=oneshot
-RemainAfterExit=yes
-EnvironmentFile=-/etc/sysconfig/openvswitch
-ExecStart=/usr/share/openvswitch/scripts/ovs-ctl start \
- --system-id=random $OPTIONS
-ExecStop=/usr/share/openvswitch/scripts/ovs-ctl stop
-RuntimeDirectory=openvswitch
-RuntimeDirectoryMode=0755
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/.travis.yml
^
|
@@ -15,8 +15,6 @@
before_script: export PATH=$PATH:$HOME/bin
-sudo: false
-
env:
- OPTS="--disable-ssl"
- TESTSUITE=1 KERNEL=3.18.1
@@ -39,4 +37,4 @@
notifications:
email:
recipients:
- - build@openvswitch.org
+ - ovs-build@openvswitch.org
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/.travis/build.sh
^
|
@@ -4,7 +4,6 @@
KERNELSRC=""
CFLAGS="-Werror"
-SPARSE_FLAGS=""
EXTRA_OPTS=""
function install_kernel()
@@ -77,9 +76,6 @@
CFLAGS="$CFLAGS -Wno-cast-align"
fi
EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=./dpdk-$DPDK_VER/build"
-elif [ "$CC" != "clang" ]; then
- # DPDK headers currently trigger sparse errors
- SPARSE_FLAGS="$SPARSE_FLAGS -Wsparse-error"
fi
configure_ovs $EXTRA_OPTS $*
@@ -91,15 +87,12 @@
if [ "$CC" = "clang" ]; then
make CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument"
-elif [[ $BUILD_ENV =~ "-m32" ]]; then
- # Disable sparse for 32bit builds on 64bit machine
- make CFLAGS="$CFLAGS $BUILD_ENV"
else
- make CFLAGS="$CFLAGS $BUILD_ENV $SPARSE_FLAGS" C=1
+ make CFLAGS="$CFLAGS $BUILD_ENV"
fi
if [ "$TESTSUITE" ] && [ "$CC" != "clang" ]; then
- if ! make distcheck; then
+ if ! make distcheck RECHECK=yes; then
# testsuite.log is necessary for debugging.
cat */_build/tests/testsuite.log
exit 1
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/.travis/prepare.sh
^
|
@@ -1,4 +1,3 @@
#!/bin/bash
-git clone git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git
-cd sparse && make && make install && cd ..
+
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/AUTHORS
^
|
@@ -141,6 +141,7 @@
Mauricio Vásquez mauricio.vasquezbernal@studenti.polito.it
Mehak Mahajan mmahajan@nicira.com
Michal Weglicki michalx.weglicki@intel.com
+Mika Vaisanen mika.vaisanen@gmail.com
Mijo Safradin mijo@linux.vnet.ibm.com
Minoru TAKAHASHI takahashi.minoru7@gmail.com
Murphy McCauley murphy.mccauley@gmail.com
@@ -209,6 +210,7 @@
Timo Puha timox.puha@intel.com
Todd Deshane deshantm@gmail.com
Tom Everman teverman@google.com
+Torgny Lindberg torgny.lindberg@ericsson.com
Tsvi Slonim tsvi@toroki.com
Tuan Nguyen tuan.nguyen@veriksystems.com
Tyler Coumbes coumbes@gmail.com
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/CONTRIBUTING.md
^
|
@@ -29,8 +29,9 @@
Testing is also important:
- - A patch that modifies existing code should be tested with
- `make check` before submission.
+ - A patch that modifies existing code should be tested with `make
+ check` before submission. Please see INSTALL.md, under
+ "Self-Tests", for more information.
- A patch that adds or deletes files should also be tested with
`make distcheck` before submission.
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/FAQ.md
^
|
@@ -130,7 +130,7 @@
LTS release, we will provide an updated release that includes the
fix. Releases that are not LTS may not be fixed and may just be
supplanted by the next major release. The current LTS release is
- 2.3.x.
+ 2.5.x.
### Q: What Linux kernel versions does each Open vSwitch release work with?
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/INSTALL.md
^
|
@@ -519,7 +519,10 @@
Sometimes a few tests may fail on some runs but not others. This is
usually a bug in the testsuite, not a bug in Open vSwitch itself. If
you find that a test fails intermittently, please report it, since the
-developers may not have noticed.
+developers may not have noticed. You can make the testsuite
+automatically rerun tests that fail, by adding RECHECK=yes to the
+"make" command line, e.g.:
+ `make check TESTSUITEFLAGS=-j8 RECHECK=yes`
OFTest
------
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/Makefile.in
^
|
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -91,7 +91,17 @@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -188,61 +198,6 @@
@GNU_MAKE_TRUE@ missing-distfiles distfiles
@HAVE_GROFF_TRUE@am__append_8 = manpage-check
@HAVE_GROFF_TRUE@am__append_9 = manpage-check
-DIST_COMMON = $(srcdir)/manpages.mk \
- $(srcdir)/Documentation/automake.mk $(srcdir)/m4/automake.mk \
- $(srcdir)/lib/automake.mk $(srcdir)/ofproto/automake.mk \
- $(srcdir)/utilities/automake.mk \
- $(srcdir)/utilities/bugtool/automake.mk \
- $(srcdir)/tests/automake.mk $(srcdir)/include/automake.mk \
- $(srcdir)/include/openflow/automake.mk \
- $(srcdir)/include/openvswitch/automake.mk \
- $(srcdir)/include/sparse/automake.mk \
- $(srcdir)/include/windows/automake.mk \
- $(srcdir)/third-party/automake.mk $(srcdir)/debian/automake.mk \
- $(srcdir)/vswitchd/automake.mk $(srcdir)/ovsdb/automake.mk \
- $(srcdir)/rhel/automake.mk $(srcdir)/xenserver/automake.mk \
- $(srcdir)/python/automake.mk $(srcdir)/tutorial/automake.mk \
- $(srcdir)/vtep/automake.mk \
- $(srcdir)/datapath-windows/automake.mk \
- $(srcdir)/datapath-windows/include/automake.mk \
- $(srcdir)/windows/automake.mk $(srcdir)/ovn/automake.mk \
- $(srcdir)/ovn/controller/automake.mk \
- $(srcdir)/ovn/controller-vtep/automake.mk \
- $(srcdir)/ovn/lib/automake.mk $(srcdir)/ovn/northd/automake.mk \
- $(srcdir)/ovn/utilities/automake.mk \
- $(srcdir)/selinux/automake.mk $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(top_srcdir)/configure \
- $(am__configure_deps) $(srcdir)/config.h.in \
- $(top_srcdir)/lib/stdio.h.in $(top_srcdir)/lib/string.h.in \
- $(top_srcdir)/ovsdb/libovsdb.sym.in \
- $(top_srcdir)/ofproto/libofproto.sym.in \
- $(top_srcdir)/lib/libsflow.sym.in \
- $(top_srcdir)/lib/libopenvswitch.sym.in \
- $(top_srcdir)/ovn/lib/libovn.sym.in \
- $(top_srcdir)/vtep/libvtep.sym.in \
- $(top_srcdir)/datapath/linux/Kbuild.in \
- $(top_srcdir)/datapath/linux/Makefile.in \
- $(top_srcdir)/datapath/linux/Makefile.main.in \
- $(top_srcdir)/tests/atlocal.in \
- $(top_srcdir)/lib/libopenvswitch.pc.in \
- $(top_srcdir)/lib/libsflow.pc.in \
- $(top_srcdir)/ofproto/libofproto.pc.in \
- $(top_srcdir)/ovsdb/libovsdb.pc.in \
- $(top_srcdir)/include/openvswitch/version.h.in \
- $(dist_check_SCRIPTS) $(dist_noinst_SCRIPTS) \
- $(dist_pkgdata_SCRIPTS) $(dist_sbin_SCRIPTS) \
- $(dist_scripts_SCRIPTS) $(top_srcdir)/build-aux/depcomp \
- $(dist_man_MANS) $(dist_pkgdata_DATA) $(dist_scripts_DATA) \
- $(am__noinst_HEADERS_DIST) $(openflowinclude_HEADERS) \
- $(openvswitchinclude_HEADERS) AUTHORS COPYING NEWS \
- build-aux/compile build-aux/config.guess build-aux/config.sub \
- build-aux/depcomp build-aux/install-sh build-aux/missing \
- build-aux/ltmain.sh $(top_srcdir)/build-aux/compile \
- $(top_srcdir)/build-aux/config.guess \
- $(top_srcdir)/build-aux/config.sub \
- $(top_srcdir)/build-aux/install-sh \
- $(top_srcdir)/build-aux/ltmain.sh \
- $(top_srcdir)/build-aux/missing
@VSTUDIO_DDK_TRUE@am__append_10 = ovsext_make
@VSTUDIO_DDK_TRUE@am__append_11 = ovsext_clean
@WIN32_TRUE@am__append_12 = ${PTHREAD_LIBS}
@@ -366,6 +321,13 @@
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(dist_check_SCRIPTS) \
+ $(dist_noinst_SCRIPTS) $(dist_pkgdata_SCRIPTS) \
+ $(dist_sbin_SCRIPTS) $(dist_scripts_SCRIPTS) \
+ $(dist_pkgdata_DATA) $(dist_scripts_DATA) \
+ $(am__noinst_HEADERS_DIST) $(openflowinclude_HEADERS) \
+ $(openvswitchinclude_HEADERS) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
@@ -1040,9 +1002,9 @@
tests/rstp.at tests/interface-reconfigure.at tests/vlog.at \
tests/vtep-ctl.at tests/auto-attach.at tests/ovn.at \
tests/ovn-nbctl.at tests/ovn-sbctl.at tests/ovn-controller.at \
- tests/ovn-controller-vtep.at tests/system-common-macros.at \
- tests/system-traffic.at tests/system-kmod-testsuite.at \
- tests/system-kmod-macros.at \
+ tests/ovn-controller-vtep.at tests/mcast-snooping.at \
+ tests/system-common-macros.at tests/system-traffic.at \
+ tests/system-kmod-testsuite.at tests/system-kmod-macros.at \
tests/system-userspace-testsuite.at \
tests/system-userspace-macros.at $(srcdir)/tests/testsuite \
$(srcdir)/tests/system-kmod-testsuite \
@@ -1115,7 +1077,8 @@
rhel/usr_share_openvswitch_scripts_sysconfig.template \
rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
rhel/usr_lib_systemd_system_openvswitch.service \
- rhel/usr_lib_systemd_system_openvswitch-nonetwork.service \
+ rhel/usr_lib_systemd_system_ovsdb-server.service \
+ rhel/usr_lib_systemd_system_ovs-vswitchd.service \
rhel/usr_lib_systemd_system_ovn-controller.service \
rhel/usr_lib_systemd_system_ovn-controller-vtep.service \
rhel/usr_lib_systemd_system_ovn-northd.service xenserver/GPLv2 \
@@ -1308,6 +1271,55 @@
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Documentation/automake.mk \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(srcdir)/datapath-windows/automake.mk \
+ $(srcdir)/datapath-windows/include/automake.mk \
+ $(srcdir)/debian/automake.mk $(srcdir)/include/automake.mk \
+ $(srcdir)/include/openflow/automake.mk \
+ $(srcdir)/include/openvswitch/automake.mk \
+ $(srcdir)/include/sparse/automake.mk \
+ $(srcdir)/include/windows/automake.mk \
+ $(srcdir)/lib/automake.mk $(srcdir)/m4/automake.mk \
+ $(srcdir)/manpages.mk $(srcdir)/ofproto/automake.mk \
+ $(srcdir)/ovn/automake.mk \
+ $(srcdir)/ovn/controller-vtep/automake.mk \
+ $(srcdir)/ovn/controller/automake.mk \
+ $(srcdir)/ovn/lib/automake.mk $(srcdir)/ovn/northd/automake.mk \
+ $(srcdir)/ovn/utilities/automake.mk \
+ $(srcdir)/ovsdb/automake.mk $(srcdir)/python/automake.mk \
+ $(srcdir)/rhel/automake.mk $(srcdir)/selinux/automake.mk \
+ $(srcdir)/tests/automake.mk $(srcdir)/third-party/automake.mk \
+ $(srcdir)/tutorial/automake.mk $(srcdir)/utilities/automake.mk \
+ $(srcdir)/utilities/bugtool/automake.mk \
+ $(srcdir)/vswitchd/automake.mk $(srcdir)/vtep/automake.mk \
+ $(srcdir)/windows/automake.mk $(srcdir)/xenserver/automake.mk \
+ $(top_srcdir)/build-aux/compile \
+ $(top_srcdir)/build-aux/config.guess \
+ $(top_srcdir)/build-aux/config.sub \
+ $(top_srcdir)/build-aux/depcomp \
+ $(top_srcdir)/build-aux/install-sh \
+ $(top_srcdir)/build-aux/ltmain.sh \
+ $(top_srcdir)/build-aux/missing \
+ $(top_srcdir)/datapath/linux/Kbuild.in \
+ $(top_srcdir)/datapath/linux/Makefile.in \
+ $(top_srcdir)/datapath/linux/Makefile.main.in \
+ $(top_srcdir)/include/openvswitch/version.h.in \
+ $(top_srcdir)/lib/libopenvswitch.pc.in \
+ $(top_srcdir)/lib/libopenvswitch.sym.in \
+ $(top_srcdir)/lib/libsflow.pc.in \
+ $(top_srcdir)/lib/libsflow.sym.in $(top_srcdir)/lib/stdio.h.in \
+ $(top_srcdir)/lib/string.h.in \
+ $(top_srcdir)/ofproto/libofproto.pc.in \
+ $(top_srcdir)/ofproto/libofproto.sym.in \
+ $(top_srcdir)/ovn/lib/libovn.sym.in \
+ $(top_srcdir)/ovsdb/libovsdb.pc.in \
+ $(top_srcdir)/ovsdb/libovsdb.sym.in \
+ $(top_srcdir)/tests/atlocal.in \
+ $(top_srcdir)/vtep/libvtep.sym.in AUTHORS COPYING NEWS \
+ build-aux/compile build-aux/config.guess build-aux/config.sub \
+ build-aux/depcomp build-aux/install-sh build-aux/ltmain.sh \
+ build-aux/missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -1405,6 +1417,7 @@
LT_AGE = @LT_AGE@
LT_CURRENT = @LT_CURRENT@
LT_REVISION = @LT_REVISION@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
@@ -1500,6 +1513,7 @@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/NEWS
^
|
@@ -1,3 +1,41 @@
+v2.5.9 - 06 Sep 2019
+--------------------
+ - Bug fixes
+
+v2.5.8 - 30 Mar 2019
+--------------------
+ - Bug fixes
+
+v2.5.7 - 20 Feb 2019
+--------------------
+ - Bug fixes
+
+v2.5.6 - 19 Oct 2018
+--------------------
+ - Bug fixes
+ - Bug fixes
+
+v2.5.5 - 18 May 2018
+---------------------
+ - Bug fixes
+
+v2.5.4 - 03 Sep 2017
+---------------------
+ - Bug fixes
+
+v2.5.3 - 28 Jun 2017
+---------------------
+ - Bug fixes
+
+v2.5.2 - 21 Feb 2017
+---------------------
+ - ovs-ctl:
+ * Added the ability to selectively start the forwarding and database
+ functions (ovs-vswitchd and ovsdb-server, respectively).
+ - Fedora packaging:
+ * A package upgrade does not automatically restart OVS service.
+ - Bug fixes
+
v2.5.1 - 27 Sep 2016
---------------------
- DPDK:
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/aclocal.m4
^
|
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+# Copyright (C) 2002-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -32,10 +32,10 @@
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
+[am__api_version='1.15'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.14.1], [],
+m4_if([$1], [1.15.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -51,14 +51,14 @@
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
+[AM_AUTOMAKE_VERSION([1.15.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -103,15 +103,14 @@
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
])
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -142,7 +141,7 @@
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -333,7 +332,7 @@
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -409,7 +408,7 @@
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -499,8 +498,8 @@
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -573,7 +572,11 @@
END
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
fi
-fi])
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
@@ -602,7 +605,7 @@
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -613,7 +616,7 @@
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -623,7 +626,7 @@
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -644,7 +647,7 @@
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -694,7 +697,7 @@
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -733,7 +736,7 @@
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -762,7 +765,7 @@
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -809,7 +812,7 @@
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -828,7 +831,7 @@
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/build-aux/compile
^
|
@@ -3,7 +3,7 @@
scriptversion=2012-10-14.11; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/build-aux/config.guess
^
|
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2013 Free Software Foundation, Inc.
+# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2013-06-10'
+timestamp='2018-02-24'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
# 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/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -24,12 +24,12 @@
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
#
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -39,7 +39,7 @@
Output the configuration name of the system \`$me' is run on.
-Operation modes:
+Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
@@ -50,7 +50,7 @@
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -107,9 +107,9 @@
dummy=$tmp/dummy ;
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
+ ,,) echo "int x;" > "$dummy.c" ;
for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
@@ -132,14 +132,14 @@
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "${UNAME_SYSTEM}" in
+case "$UNAME_SYSTEM" in
Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
- eval $set_cc_for_build
- cat <<-EOF > $dummy.c
+ eval "$set_cc_for_build"
+ cat <<-EOF > "$dummy.c"
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
@@ -149,13 +149,20 @@
LIBC=gnu
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+
+ # If ldd exists, use it to detect musl libc.
+ if command -v ldd >/dev/null && \
+ ldd --version 2>&1 | grep -q ^musl
+ then
+ LIBC=musl
+ fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -168,21 +175,31 @@
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ "/sbin/$sysctl" 2>/dev/null || \
+ "/usr/sbin/$sysctl" 2>/dev/null || \
+ echo unknown)`
+ case "$UNAME_MACHINE_ARCH" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ earmv*)
+ arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine="${arch}${endian}"-unknown
+ ;;
+ *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
esac
# The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
+ # to ELF recently (or will in the future) and ABI.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ os=netbsdelf
+ ;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
+ eval "$set_cc_for_build"
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
@@ -197,44 +214,67 @@
os=netbsd
;;
esac
+ # Determine ABI tags.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+ ;;
+ esac
# The OS release
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
+ case "$UNAME_VERSION" in
Debian*)
release='-gnu'
;;
*)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
+ echo "$machine-${os}${release}${abi}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
+ exit ;;
+ *:LibertyBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+ echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+ exit ;;
+ *:MidnightBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
exit ;;
*:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
exit ;;
*:SolidBSD:*:*)
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/build-aux/config.sub
^
|
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2013 Free Software Foundation, Inc.
+# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2013-08-10'
+timestamp='2018-02-22'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
# 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/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -25,7 +25,7 @@
# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -33,7 +33,7 @@
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -53,12 +53,11 @@
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
-Operation modes:
+Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
@@ -68,7 +67,7 @@
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -95,7 +94,7 @@
*local*)
# First pass through any local machine types.
- echo $1
+ echo "$1"
exit ;;
* )
@@ -113,24 +112,24 @@
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
+ kopensolaris*-gnu* | cloudabi*-eabi* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
android-linux)
os=-linux-android
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
+ basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
+ if [ "$basic_machine" != "$1" ]
+ then os=`echo "$1" | sed 's/.*-/-/'`
else os=; fi
;;
esac
@@ -179,44 +178,44 @@
;;
-sco6)
os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco5)
os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-isc)
os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-clix*)
basic_machine=clipper-intergraph
;;
-isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-lynx*178)
os=-lynxos178
@@ -228,10 +227,7 @@
os=-lynxos
;;
-ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
;;
-psos*)
os=-psos
@@ -255,16 +251,18 @@
| arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| avr | avr32 \
+ | ba \
| be32 | be64 \
| bfin \
| c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
- | epiphany \
- | fido | fr30 | frv \
+ | e2k | epiphany \
+ | fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
- | i370 | i860 | i960 | ia64 \
+ | i370 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \
+ | k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -282,8 +280,10 @@
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/build-aux/depcomp
^
|
@@ -1,9 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2013-05-30.07; # UTC
+scriptversion=2016-01-11.22; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2017 Free Software Foundation, Inc.
# 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
@@ -786,6 +786,6 @@
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/build-aux/install-sh
^
|
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2011-11-20.07; # UTC
+scriptversion=2014-09-12.12; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -41,19 +41,15 @@
# This script is compatible with the BSD install script, but was written
# from scratch.
+tab=' '
nl='
'
-IFS=" "" $nl"
+IFS=" $tab$nl"
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
-# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
@@ -68,17 +64,6 @@
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
posix_mkdir=
# Desired mode of installed file.
@@ -97,7 +82,7 @@
dst_arg=
copy_on_change=false
-no_target_directory=
+is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -137,46 +122,57 @@
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
- shift;;
+ shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
-o) chowncmd="$chownprog $2"
- shift;;
+ shift;;
-s) stripcmd=$stripprog;;
- -t) dst_arg=$2
- # Protect names problematic for 'test' and other utilities.
- case $dst_arg in
- -* | [=\(\)!]) dst_arg=./$dst_arg;;
- esac
- shift;;
+ -t)
+ is_target_a_directory=always
+ dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
- -T) no_target_directory=true;;
+ -T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
- --) shift
- break;;
+ --) shift
+ break;;
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
*) break;;
esac
shift
done
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+ if test -n "$dst_arg"; then
+ echo "$0: target directory not allowed when installing a directory." >&2
+ exit 1
+ fi
+fi
+
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
@@ -208,6 +204,15 @@
fi
if test -z "$dir_arg"; then
+ if test $# -gt 1 || test "$is_target_a_directory" = always; then
+ if test ! -d "$dst_arg"; then
+ echo "$0: $dst_arg: Is not a directory." >&2
+ exit 1
+ fi
+ fi
+fi
+
+if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
@@ -223,16 +228,16 @@
*[0-7])
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw='% 200'
+ u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw=,u+rw
+ u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
@@ -269,41 +274,15 @@
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
+ if test "$is_target_a_directory" = never; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/build-aux/ltmain.sh
^
|
@@ -1,9 +1,12 @@
+#! /bin/sh
+## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
+## by inline-source v2014-01-03.01
-# libtool (GNU libtool) 2.4.2
+# libtool (GNU libtool) 2.4.6
+# Provide generalized library-building support services.
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1996-2015 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -23,881 +26,2112 @@
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING. If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-# --config show all configuration variables
-# --debug enable verbose shell tracing
-# -n, --dry-run display commands without modifying any files
-# --features display basic configuration information and exit
-# --mode=MODE use operation mode MODE
-# --preserve-dup-deps don't remove duplicate dependency libraries
-# --quiet, --silent don't print informational messages
-# --no-quiet, --no-silent
-# print informational messages (default)
-# --no-warn don't display warning messages
-# --tag=TAG use configuration variables from tag TAG
-# -v, --verbose print more informational messages than default
-# --no-verbose don't print the extra informational messages
-# --version print version information
-# -h, --help, --help-all print short, long, or detailed help message
-#
-# MODE must be one of the following:
-#
-# clean remove files from the build directory
-# compile compile a source file into a libtool object
-# execute automatically set library path, then run a program
-# finish complete the installation of libtool libraries
-# install install libraries or executables
-# link create a library or an executable
-# uninstall remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE. When passed as first option,
-# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-# host-triplet: $host
-# shell: $SHELL
-# compiler: $LTCC
-# compiler flags: $LTCFLAGS
-# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
-# automake: $automake_version
-# autoconf: $autoconf_version
-#
-# Report bugs to <bug-libtool@gnu.org>.
-# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-# General help using GNU software: <http://www.gnu.org/gethelp/>.
PROGRAM=libtool
PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
-TIMESTAMP=""
-package_revision=1.3337
+VERSION="2.4.6 Debian-2.4.6-2"
+package_revision=2.4.6
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run './libtool --help' for help with using this script from the
+# command line.
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# After configure completes, it has a better idea of some of the
+# shell tools we need than the defaults used by the functions shared
+# with bootstrap, so set those here where they can still be over-
+# ridden by the user, but otherwise take precedence.
+
+: ${AUTOCONF="autoconf"}
+: ${AUTOMAKE="automake"}
+
+
+## -------------------------- ##
+## Source external libraries. ##
+## -------------------------- ##
+
+# Much of our low-level functionality needs to be sourced from external
+# libraries, which are installed to $pkgauxdir.
+
+# Set a version string for this script.
+scriptversion=2015-01-20.17; # UTC
+
+# General shell script boiler plate, and helper functions.
+# Written by Gary V. Vaughan, 2004
+
+# Copyright (C) 2004-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# 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.
+
+# As a special exception to the GNU General Public License, if you distribute
+# this file as part of a program or library that is built using GNU Libtool,
+# you may include this file under the same distribution terms that you use
+# for the rest of that program.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNES 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/>.
+
+# Please report bugs or propose patches to gary@gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Evaluate this file near the top of your script to gain access to
+# the functions and variables defined here:
+#
+# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
+#
+# If you need to override any of the default environment variable
+# settings, do that before evaluating this file.
+
+
+## -------------------- ##
+## Shell normalisation. ##
+## -------------------- ##
+
+# Some shells need a little help to be as Bourne compatible as possible.
+# Before doing anything else, make sure all that help has been provided!
+
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
- eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-# NLS nuisances: We save the old values to restore during execute mode.
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+# NLS nuisances: We save the old values in case they are required later.
+_G_user_locale=
+_G_safe_locale=
+for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
do
- eval "if test \"\${$lt_var+set}\" = set; then
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/build-aux/missing
^
|
@@ -3,7 +3,7 @@
scriptversion=2013-10-28.13; # UTC
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/config.h.in
^
|
@@ -174,8 +174,7 @@
extenions. */
#undef HAVE___THREAD
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR
/* Name of package */
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/configure
^
|
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for openvswitch 2.5.1.
+# Generated by GNU Autoconf 2.69 for openvswitch 2.5.9.
#
# Report bugs to <bugs@openvswitch.org>.
#
@@ -590,8 +590,8 @@
# Identity of this package.
PACKAGE_NAME='openvswitch'
PACKAGE_TARNAME='openvswitch'
-PACKAGE_VERSION='2.5.1'
-PACKAGE_STRING='openvswitch 2.5.1'
+PACKAGE_VERSION='2.5.9'
+PACKAGE_STRING='openvswitch 2.5.9'
PACKAGE_BUGREPORT='bugs@openvswitch.org'
PACKAGE_URL=''
@@ -716,6 +716,7 @@
LT_AGE
LT_REVISION
LT_CURRENT
+LT_SYS_LIBRARY_PATH
OTOOL64
OTOOL
LIPO
@@ -811,6 +812,7 @@
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -841,6 +843,7 @@
enable_static
with_pic
enable_fast_install
+with_aix_soname
with_gnu_ld
with_sysroot
enable_libtool_lock
@@ -873,6 +876,7 @@
CPPFLAGS
CPP
PERL
+LT_SYS_LIBRARY_PATH
KARCH'
@@ -912,6 +916,7 @@
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1164,6 +1169,15 @@
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1301,7 +1315,7 @@
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1414,7 +1428,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures openvswitch 2.5.1 to adapt to many kinds of systems.
+\`configure' configures openvswitch 2.5.9 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1454,6 +1468,7 @@
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -1484,7 +1499,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of openvswitch 2.5.1:";;
+ short | recursive ) echo "Configuration of openvswitch 2.5.9:";;
esac
cat <<\_ACEOF
@@ -1515,9 +1530,12 @@
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
both]
+ --with-aix-soname=aix|svr4|both
+ shared library versioning (aka "SONAME") variant to
+ provide on AIX, [default=aix].
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-sysroot=DIR Search for dependent libraries within DIR
- (or the compiler's sysroot if not specified).
+ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the
+ compiler's sysroot if not specified).
--with-pthread=DIR root of the pthread-win32 directory
--with-debug Build without compiler optimizations
--with-vstudiotarget=target_type
@@ -1549,6 +1567,8 @@
you have headers in a nonstandard directory <include dir>
CPP C preprocessor
PERL path to Perl interpreter
+ LT_SYS_LIBRARY_PATH
+ User-defined run-time library search path.
KARCH Kernel Architecture String
Use these variables to override the choices made by `configure' or to help
@@ -1617,7 +1637,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-openvswitch configure 2.5.1
+openvswitch configure 2.5.9
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2272,7 +2292,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by openvswitch $as_me 2.5.1, which was
+It was created by openvswitch $as_me 2.5.9, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2657,7 +2677,7 @@
ac_config_commands="$ac_config_commands tests/atconfig"
-am__api_version='1.14'
+am__api_version='1.15'
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
@@ -2829,8 +2849,8 @@
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
@@ -2849,7 +2869,7 @@
$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -3143,7 +3163,7 @@
# Define the identity of the package.
PACKAGE='openvswitch'
- VERSION='2.5.1'
+ VERSION='2.5.9'
cat >>confdefs.h <<_ACEOF
@@ -3177,8 +3197,8 @@
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
mkdir_p='$(MKDIR_P)'
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/configure.ac
^
|
@@ -13,7 +13,7 @@
# limitations under the License.
AC_PREREQ(2.63)
-AC_INIT(openvswitch, 2.5.1, bugs@openvswitch.org)
+AC_INIT(openvswitch, 2.5.9, bugs@openvswitch.org)
AC_CONFIG_SRCDIR([datapath/datapath.c])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([build-aux])
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/datapath-windows/ovsext/BufferMgmt.c
^
|
@@ -1435,6 +1435,7 @@
{
POVS_BUFFER_CONTEXT ctx;
UINT16 flags;
+ UINT32 dataOffsetDelta;
PNET_BUFFER_LIST parent;
NDIS_STATUS status;
NDIS_HANDLE poolHandle;
@@ -1465,6 +1466,7 @@
nb = NET_BUFFER_LIST_FIRST_NB(nbl);
flags = ctx->flags;
+ dataOffsetDelta = ctx->dataOffsetDelta;
if (!(flags & OVS_BUFFER_FRAGMENT) &&
NET_BUFFER_DATA_LENGTH(nb) != ctx->origDataLength) {
UINT32 diff;
@@ -1479,7 +1481,7 @@
}
}
- if (ctx->flags & OVS_BUFFER_PRIVATE_CONTEXT) {
+ if (flags & OVS_BUFFER_PRIVATE_CONTEXT) {
NdisFreeNetBufferListContext(nbl, sizeof (OVS_BUFFER_CONTEXT));
}
@@ -1550,7 +1552,7 @@
#ifdef DBG
InterlockedDecrement((LONG volatile *)&ovsPool->fragNBLCount);
#endif
- NdisFreeFragmentNetBufferList(nbl, ctx->dataOffsetDelta, 0);
+ NdisFreeFragmentNetBufferList(nbl, dataOffsetDelta, 0);
}
if (parent != NULL) {
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/datapath/Makefile.in
^
|
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.15.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -78,8 +88,6 @@
build_triplet = @build@
host_triplet = @host@
@LINUX_ENABLED_TRUE@am__append_1 = linux
-DIST_COMMON = $(srcdir)/Modules.mk $(srcdir)/linux/Modules.mk \
- $(srcdir)/Makefile.in $(srcdir)/Makefile.am
subdir = datapath
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
@@ -92,6 +100,7 @@
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
@@ -151,6 +160,8 @@
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = linux
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Modules.mk \
+ $(srcdir)/linux/Modules.mk
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -232,6 +243,7 @@
LT_AGE = @LT_AGE@
LT_CURRENT = @LT_CURRENT@
LT_REVISION = @LT_REVISION@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
@@ -327,6 +339,7 @@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -497,7 +510,6 @@
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu datapath/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu datapath/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -506,7 +518,7 @@
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(srcdir)/Modules.mk $(srcdir)/linux/Modules.mk:
+$(srcdir)/Modules.mk $(srcdir)/linux/Modules.mk $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -794,6 +806,8 @@
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am
+.PRECIOUS: Makefile
+
# The following is based on commands for the Automake "distdir" target.
distfiles: Makefile
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/datapath/conntrack.c
^
|
@@ -360,6 +360,11 @@
return -EPFNOSUPPORT;
}
+ /* The key extracted from the fragment that completed this datagram
+ * likely didn't have an L4 header, so regenerate it.
+ */
+ ovs_flow_key_update_l3l4(skb, key);
+
key->ip.frag = OVS_FRAG_TYPE_NONE;
skb_clear_hash(skb);
skb->ignore_df = 1;
@@ -628,8 +633,8 @@
nla_for_each_nested(a, attr, rem) {
int type = nla_type(a);
- int maxlen = ovs_ct_attr_lens[type].maxlen;
- int minlen = ovs_ct_attr_lens[type].minlen;
+ int maxlen;
+ int minlen;
if (type > OVS_CT_ATTR_MAX) {
OVS_NLERR(log,
@@ -637,6 +642,9 @@
type, OVS_CT_ATTR_MAX);
return -EINVAL;
}
+
+ maxlen = ovs_ct_attr_lens[type].maxlen;
+ minlen = ovs_ct_attr_lens[type].minlen;
if (nla_len(a) < minlen || nla_len(a) > maxlen) {
OVS_NLERR(log,
"Conntrack attr type has unexpected length (type=%d, length=%d, expected=%d)",
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/datapath/flow.c
^
|
@@ -432,63 +432,14 @@
}
/**
- * key_extract - extracts a flow key from an Ethernet frame.
+ * key_extract_l3l4 - extracts L3/L4 header information.
* @skb: sk_buff that contains the frame, with skb->data pointing to the
- * Ethernet header
+ * L3 header
* @key: output flow key
- *
- * The caller must ensure that skb->len >= ETH_HLEN.
- *
- * Returns 0 if successful, otherwise a negative errno value.
- *
- * Initializes @skb header pointers as follows:
- *
- * - skb->mac_header: the Ethernet header.
- *
- * - skb->network_header: just past the Ethernet header, or just past the
- * VLAN header, to the first byte of the Ethernet payload.
- *
- * - skb->transport_header: If key->eth.type is ETH_P_IP or ETH_P_IPV6
- * on output, then just past the IP header, if one is present and
- * of a correct length, otherwise the same as skb->network_header.
- * For other key->eth.type values it is left untouched.
*/
-static int key_extract(struct sk_buff *skb, struct sw_flow_key *key)
+static int key_extract_l3l4(struct sk_buff *skb, struct sw_flow_key *key)
{
int error;
- struct ethhdr *eth;
-
- /* Flags are always used as part of stats */
- key->tp.flags = 0;
-
- skb_reset_mac_header(skb);
-
- /* Link layer. We are guaranteed to have at least the 14 byte Ethernet
- * header in the linear data area.
- */
- eth = eth_hdr(skb);
- ether_addr_copy(key->eth.src, eth->h_source);
- ether_addr_copy(key->eth.dst, eth->h_dest);
-
- __skb_pull(skb, 2 * ETH_ALEN);
- /* We are going to push all headers that we pull, so no need to
- * update skb->csum here.
- */
-
- key->eth.tci = 0;
- if (skb_vlan_tag_present(skb))
- key->eth.tci = htons(vlan_get_tci(skb));
- else if (eth->h_proto == htons(ETH_P_8021Q))
- if (unlikely(parse_vlan(skb, key)))
- return -ENOMEM;
-
- key->eth.type = parse_ethertype(skb);
- if (unlikely(key->eth.type == htons(0)))
- return -ENOMEM;
-
- skb_reset_network_header(skb);
- skb_reset_mac_len(skb);
- __skb_push(skb, skb->data - skb_mac_header(skb));
/* Network layer. */
if (key->eth.type == htons(ETH_P_IP)) {
@@ -517,6 +468,7 @@
offset = nh->frag_off & htons(IP_OFFSET);
if (offset) {
key->ip.frag = OVS_FRAG_TYPE_LATER;
+ memset(&key->tp, 0, sizeof(key->tp));
return 0;
}
if (nh->frag_off & htons(IP_MF) ||
@@ -636,8 +588,10 @@
return error;
}
- if (key->ip.frag == OVS_FRAG_TYPE_LATER)
+ if (key->ip.frag == OVS_FRAG_TYPE_LATER) {
+ memset(&key->tp, 0, sizeof(key->tp));
return 0;
+ }
if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP)
key->ip.frag = OVS_FRAG_TYPE_FIRST;
@@ -680,6 +634,79 @@
return 0;
}
+/**
+ * key_extract - extracts a flow key from an Ethernet frame.
+ * @skb: sk_buff that contains the frame, with skb->data pointing to the
+ * Ethernet header
+ * @key: output flow key
+ *
+ * The caller must ensure that skb->len >= ETH_HLEN.
+ *
+ * Returns 0 if successful, otherwise a negative errno value.
+ *
+ * Initializes @skb header fields as follows:
+ *
+ * - skb->mac_header: the L2 header.
+ *
+ * - skb->network_header: just past the L2 header, or just past the
+ * VLAN header, to the first byte of the L2 payload.
+ *
+ * - skb->transport_header: If key->eth.type is ETH_P_IP or ETH_P_IPV6
+ * on output, then just past the IP header, if one is present and
+ * of a correct length, otherwise the same as skb->network_header.
+ * For other key->eth.type values it is left untouched.
+ *
+ * - skb->protocol: the type of the data starting at skb->network_header.
+ * Equals to key->eth.type.
+ */
+static int key_extract(struct sk_buff *skb, struct sw_flow_key *key)
+{
+ struct ethhdr *eth;
+
+ /* Flags are always used as part of stats */
+ key->tp.flags = 0;
+
+ skb_reset_mac_header(skb);
+
+ /* Link layer. We are guaranteed to have at least the 14 byte Ethernet
+ * header in the linear data area.
+ */
+ eth = eth_hdr(skb);
+ ether_addr_copy(key->eth.src, eth->h_source);
+ ether_addr_copy(key->eth.dst, eth->h_dest);
+
+ __skb_pull(skb, 2 * ETH_ALEN);
+ /* We are going to push all headers that we pull, so no need to
+ * update skb->csum here.
+ */
+
+ key->eth.tci = 0;
+ if (skb_vlan_tag_present(skb))
+ key->eth.tci = htons(skb->vlan_tci);
+ else if (eth->h_proto == htons(ETH_P_8021Q))
+ if (unlikely(parse_vlan(skb, key)))
+ return -ENOMEM;
+
+ key->eth.type = parse_ethertype(skb);
+ if (unlikely(key->eth.type == htons(0)))
+ return -ENOMEM;
+
+ skb_reset_network_header(skb);
+ skb_reset_mac_len(skb);
+ __skb_push(skb, skb->data - skb_mac_header(skb));
+
+ /* Fill out L3/L4 key info, if any */
+ return key_extract_l3l4(skb, key);
+}
+
+/* In the case of conntrack fragment handling it expects L3 headers,
+ * add a helper.
+ */
+int ovs_flow_key_update_l3l4(struct sk_buff *skb, struct sw_flow_key *key)
+{
+ return key_extract_l3l4(skb, key);
+}
+
int ovs_flow_key_update(struct sk_buff *skb, struct sw_flow_key *key)
{
return key_extract(skb, key);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/datapath/flow.h
^
|
@@ -217,6 +217,7 @@
/* Update the non-metadata part of the flow key using skb. */
int ovs_flow_key_update(struct sk_buff *skb, struct sw_flow_key *key);
+int ovs_flow_key_update_l3l4(struct sk_buff *skb, struct sw_flow_key *key);
int ovs_flow_key_extract(const struct ip_tunnel_info *tun_info,
struct sk_buff *skb,
struct sw_flow_key *key);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/datapath/flow_netlink.c
^
|
@@ -1095,13 +1095,10 @@
/* The nlattr stream should already have been validated */
nla_for_each_nested(nla, attr, rem) {
- if (tbl[nla_type(nla)].len == OVS_ATTR_NESTED) {
- if (tbl[nla_type(nla)].next)
- tbl = tbl[nla_type(nla)].next;
- nlattr_set(nla, val, tbl);
- } else {
+ if (tbl[nla_type(nla)].len == OVS_ATTR_NESTED)
+ nlattr_set(nla, val, tbl[nla_type(nla)].next ? : tbl);
+ else
memset(nla_data(nla), val, nla_len(nla));
- }
if (nla_type(nla) == OVS_KEY_ATTR_CT_STATE)
*(u32 *)nla_data(nla) &= CT_SUPPORTED_MASK;
@@ -1698,14 +1695,14 @@
struct sw_flow_actions *acts;
int new_acts_size;
- int req_size = NLA_ALIGN(attr_len);
+ size_t req_size = NLA_ALIGN(attr_len);
int next_offset = offsetof(struct sw_flow_actions, actions) +
(*sfa)->actions_len;
if (req_size <= (ksize(*sfa) - next_offset))
goto out;
- new_acts_size = ksize(*sfa) * 2;
+ new_acts_size = max(next_offset + req_size, ksize(*sfa) * 2);
if (new_acts_size > MAX_ACTIONS_BUFSIZE) {
if ((MAX_ACTIONS_BUFSIZE - next_offset) < req_size)
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/datapath/linux/compat/ip_fragment.c
^
|
@@ -734,6 +734,9 @@
#ifdef HAVE_INET_FRAGS_WITH_FRAGS_WORK
ip4_frags.frags_cache_name = ip_frag_cache_name;
#endif
+#if RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(8,0)
+ ip4_frags.secret_interval = 10 * 60 * HZ;
+#endif
if (inet_frags_init(&ip4_frags)) {
pr_warn("IP: failed to allocate ip4_frags cache\n");
return -ENOMEM;
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/datapath/linux/compat/lisp.c
^
|
@@ -416,6 +416,7 @@
return PTR_ERR(lisp->sock);
/* Mark socket as an encapsulation socket */
+ memset(&tunnel_cfg, 0, sizeof(tunnel_cfg));
tunnel_cfg.sk_user_data = dev;
tunnel_cfg.encap_type = 1;
tunnel_cfg.encap_rcv = lisp_rcv;
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/datapath/linux/compat/nf_conntrack_reasm.c
^
|
@@ -634,6 +634,9 @@
#ifdef HAVE_INET_FRAGS_WITH_FRAGS_WORK
nf_frags.frags_cache_name = nf_frags_cache_name;
#endif
+#if RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(8,0)
+ nf_frags.secret_interval = 10 * 60 * HZ;
+#endif
ret = inet_frags_init(&nf_frags);
if (ret)
goto out;
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/datapath/linux/compat/stt.c
^
|
@@ -981,7 +981,7 @@
error:
kfree_skb(skb);
dev->stats.tx_errors++;
- return NETDEV_TX_OK;
+ return err;
}
EXPORT_SYMBOL(ovs_stt_xmit);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/debian/changelog
^
|
@@ -1,3 +1,58 @@
+openvswitch (2.5.9-1) unstable; urgency=low
+ [ Open vSwitch team ]
+ * New upstream version
+
+ -- Open vSwitch team <dev@openvswitch.org> Fri, 06 Sep 2019 13:23:22 -0700
+
+openvswitch (2.5.8-1) unstable; urgency=low
+ [ Open vSwitch team ]
+ * New upstream version
+
+ -- Open vSwitch team <dev@openvswitch.org> Sat, 30 Mar 2019 12:41:17 -0700
+
+openvswitch (2.5.7-1) unstable; urgency=low
+ [ Open vSwitch team ]
+ * New upstream version
+
+ -- Open vSwitch team <dev@openvswitch.org> Wed, 20 Feb 2019 16:40:48 -0800
+
+openvswitch (2.5.6-1) unstable; urgency=low
+ [ Open vSwitch team ]
+ * New upstream version
+
+ -- Open vSwitch team <dev@openvswitch.org> Fri, 19 Oct 2018 16:01:36 -0700
+
+openvswitch (2.5.5-1) unstable; urgency=low
+ [ Open vSwitch team ]
+ * New upstream version
+
+ -- Open vSwitch team <dev@openvswitch.org> Fri, 18 May 2018 14:22:54 -0700
+
+openvswitch (2.5.4-1) unstable; urgency=low
+ [ Open vSwitch team ]
+ * New upstream version
+
+ -- Open vSwitch team <dev@openvswitch.org> Sun, 03 Sep 2017 15:56:32 -0700
+
+openvswitch (2.5.3-1) unstable; urgency=low
+ [ Open vSwitch team ]
+ * New upstream version
+ - Bug fixes
+
+ -- Open vSwitch team <dev@openvswitch.org> Wed, 28 Jun 2017 09:49:43 -0700
+
+openvswitch (2.5.2-1) unstable; urgency=low
+ [ Open vSwitch team ]
+ * New upstream version
+ - ovs-ctl:
+ * Added the ability to selectively start the forwarding and database
+ functions (ovs-vswitchd and ovsdb-server, respectively).
+ - Fedora packaging:
+ * A package upgrade does not automatically restart OVS service.
+ - Bug fixes
+
+ -- Open vSwitch team <dev@openvswitch.org> Tue, 21 Feb 2017 14:36:44 -0700
+
openvswitch (2.5.1-1) unstable; urgency=low
[ Open vSwitch team ]
* New upstream version
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/debian/copyright
^
|
@@ -144,6 +144,7 @@
Mauricio Vásquez mauricio.vasquezbernal@studenti.polito.it
Mehak Mahajan mmahajan@nicira.com
Michal Weglicki michalx.weglicki@intel.com
+ Mika Vaisanen mika.vaisanen@gmail.com
Mijo Safradin mijo@linux.vnet.ibm.com
Minoru TAKAHASHI takahashi.minoru7@gmail.com
Murphy McCauley murphy.mccauley@gmail.com
@@ -212,6 +213,7 @@
Timo Puha timox.puha@intel.com
Todd Deshane deshantm@gmail.com
Tom Everman teverman@google.com
+ Torgny Lindberg torgny.lindberg@ericsson.com
Tsvi Slonim tsvi@toroki.com
Tuan Nguyen tuan.nguyen@veriksystems.com
Tyler Coumbes coumbes@gmail.com
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/debian/ifupdown.sh
^
|
@@ -60,7 +60,7 @@
ifconfig "${IFACE}" up
;;
OVSBond)
- ovs_vsctl -- --fake-iface add-bond "${IF_OVS_BRIDGE}"\
+ ovs_vsctl -- --fake-iface --may-exist add-bond "${IF_OVS_BRIDGE}"\
"${IFACE}" ${IF_OVS_BONDS} ${IF_OVS_OPTIONS} \
${OVS_EXTRA+-- $OVS_EXTRA}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/debian/openvswitch-switch.init
^
|
@@ -28,6 +28,7 @@
(test -x /usr/sbin/ovs-vswitchd && test -x /usr/sbin/ovsdb-server) || exit 0
_SYSTEMCTL_SKIP_REDIRECT=yes
+SYSTEMCTL_SKIP_REDIRECT=yes
. /usr/share/openvswitch/scripts/ovs-lib
test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/debian/openvswitch-switch.postinst
^
|
@@ -20,19 +20,28 @@
case "$1" in
configure)
- DEFAULT=/etc/default/openvswitch-switch
- TEMPLATE=/usr/share/openvswitch/switch/default.template
- if ! test -e $DEFAULT; then
- cp $TEMPLATE $DEFAULT
- else
- for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
- do
- if ! grep $var $DEFAULT >/dev/null 2>&1; then
- echo >> $DEFAULT
- sed -n "/$var:/,/$var=/p" $TEMPLATE >> $DEFAULT
- fi
- done
- fi
+ DEFAULT=/etc/default/openvswitch-switch
+ TEMPLATE=/usr/share/openvswitch/switch/default.template
+ if ! test -e $DEFAULT; then
+ cp $TEMPLATE $DEFAULT
+ else
+ for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
+ do
+ if ! grep $var $DEFAULT >/dev/null 2>&1; then
+ echo >> $DEFAULT
+ sed -n "/$var:/,/$var=/p" $TEMPLATE >> $DEFAULT
+ fi
+ done
+ fi
+ # Certain versions of upstream Ubuntu's openvswitch packages (which
+ # are forks) may install upstart files which are incompatible
+ # with the packages generated from this repo. Remove them.
+ if [ -e "/etc/init/openvswitch-switch.conf" ]; then
+ rm /etc/init/openvswitch-switch.conf
+ fi
+ if [ -e "/etc/init/openvswitch-force-reload-kmod.conf" ]; then
+ rm /etc/init/openvswitch-force-reload-kmod.conf
+ fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/debian/openvswitch-vtep.install
^
|
@@ -1,3 +1,3 @@
usr/share/openvswitch/scripts/ovs-vtep
usr/share/openvswitch/vtep.ovsschema
-vtep/vtep-ctl usr/bin
+usr/bin/vtep-ctl
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/debian/rules
^
|
@@ -34,8 +34,7 @@
override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
- if $(MAKE) check TESTSUITEFLAGS='$(PARALLEL)' || \
- $(MAKE) check TESTSUITEFLAGS='--recheck'; then :; \
+ if $(MAKE) check TESTSUITEFLAGS='$(PARALLEL)' RECHECK=yes; then :; \
else \
cat tests/testsuite.log; \
exit 1; \
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/include/openflow/openflow-1.4.h
^
|
@@ -39,6 +39,12 @@
#include <openflow/openflow-1.3.h>
+/* OpenFlow 1.4.1+ specific capabilities
+ * (struct ofp_switch_features, member capabilities). */
+enum ofp14_capabilities {
+ OFPC14_BUNDLES = 1 << 9, /* Switch supports bundles. */
+ OFPC14_FLOW_MONITORING = 1 << 10, /* Switch supports flow monitoring. */
+};
/* ## ---------- ## */
/* ## ofp14_port ## */
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/include/openvswitch/version.h
^
|
@@ -18,8 +18,8 @@
#ifndef OPENVSWITCH_VERSION_H
#define OPENVSWITCH_VERSION_H 1
-#define OVS_PACKAGE_STRING "openvswitch 2.5.1"
-#define OVS_PACKAGE_VERSION "2.5.1"
+#define OVS_PACKAGE_STRING "openvswitch 2.5.9"
+#define OVS_PACKAGE_VERSION "2.5.9"
#define OVS_LIB_VERSION 1
#define OVS_LIB_REVISION 0
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/cmap.c
^
|
@@ -490,7 +490,7 @@
{
struct cmap_impl *impl = cmap_get_impl(cmap);
uint32_t h1 = rehash(impl, hash);
- uint32_t h2 = other_hash(hash);
+ uint32_t h2 = other_hash(h1);
struct cmap_node *node;
node = cmap_find_bucket_protected(impl, hash, h1);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/csum.c
^
|
@@ -44,7 +44,11 @@
partial = csum_add16(partial, get_unaligned_be16(data));
}
if (n) {
+#ifdef WORDS_BIGENDIAN
+ partial += (*(uint8_t *) data) << 8;
+#else
partial += *(uint8_t *) data;
+#endif
}
return partial;
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/daemon-unix.c
^
|
@@ -361,11 +361,14 @@
(unsigned long int) daemon_pid, status_msg);
if (child_ready) {
+ int error;
do {
retval = waitpid(daemon_pid, &status, 0);
- } while (retval == -1 && errno == EINTR);
- if (retval == -1) {
- VLOG_FATAL("waitpid failed (%s)", ovs_strerror(errno));
+ error = retval == -1 ? errno : 0;
+ } while (error == EINTR);
+ vlog_reopen_log_file();
+ if (error) {
+ VLOG_FATAL("waitpid failed (%s)", ovs_strerror(error));
}
}
@@ -425,7 +428,7 @@
/* Running in new daemon process. */
ovs_cmdl_proctitle_restore();
- set_subprogram_name("");
+ set_subprogram_name(program_name);
}
/* If daemonization is configured, then starts daemonization, by forking and
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/db-ctl-base.c
^
|
@@ -288,6 +288,8 @@
if (uuid->n == 1) {
final = ovsdb_idl_get_row_for_uuid(ctx->idl, table->class,
&uuid->keys[0].uuid);
+ } else {
+ final = NULL;
}
} else {
final = referrer;
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/dpif-netdev.c
^
|
@@ -2392,6 +2392,9 @@
pmd = ovsthread_getspecific(dp->per_pmd_key);
if (!pmd) {
pmd = dp_netdev_get_pmd(dp, NON_PMD_CORE_ID);
+ if (!pmd) {
+ return EBUSY;
+ }
}
/* If the current thread is non-pmd thread, acquires
@@ -2798,7 +2801,8 @@
}
/* Finds and refs the dp_netdev_pmd_thread on core 'core_id'. Returns
- * the pointer if succeeds, otherwise, NULL.
+ * the pointer if succeeds, otherwise, NULL (it can return NULL even if
+ * 'core_id' is NON_PMD_CORE_ID).
*
* Caller must unrefs the returned reference. */
static struct dp_netdev_pmd_thread *
@@ -3193,7 +3197,7 @@
struct ofpbuf key;
struct odp_flow_key_parms odp_parms = {
.flow = flow,
- .mask = &wc->masks,
+ .mask = wc ? &wc->masks : NULL,
.odp_in_port = flow->in_port.odp_port,
.support = dp_netdev_support,
};
@@ -3522,7 +3526,6 @@
ofpbuf_uninit(&actions);
ofpbuf_uninit(&put_actions);
fat_rwlock_unlock(&dp->upcall_rwlock);
- dp_netdev_count_packet(pmd, DP_STAT_LOST, lost_cnt);
} else if (OVS_UNLIKELY(any_miss)) {
for (i = 0; i < cnt; i++) {
if (OVS_UNLIKELY(!rules[i])) {
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/dpif-netlink.c
^
|
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
+ * Copyright (c) 2008-2015, 2017 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1788,10 +1788,9 @@
error = dpif_netlink_handler_init(handler);
if (error) {
size_t j;
- struct dpif_handler *tmp = &dpif->handlers[i];
-
for (j = 0; j < i; j++) {
+ struct dpif_handler *tmp = &dpif->handlers[j];
dpif_netlink_handler_uninit(tmp);
}
free(dpif->handlers);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/dpif.c
^
|
@@ -1683,9 +1683,13 @@
&& !execute->probe) {
struct ds ds = DS_EMPTY_INITIALIZER;
char *packet;
+ uint64_t stub[1024 / 8];
+ struct ofpbuf md = OFPBUF_STUB_INITIALIZER(stub);
packet = ofp_packet_to_string(dp_packet_data(execute->packet),
dp_packet_size(execute->packet));
+ odp_key_from_pkt_metadata(&md, &execute->packet->md);
+
ds_put_format(&ds, "%s: %sexecute ",
dpif_name(dpif),
(subexecute ? "sub-"
@@ -1696,10 +1700,13 @@
ds_put_format(&ds, " failed (%s)", ovs_strerror(error));
}
ds_put_format(&ds, " on packet %s", packet);
+ ds_put_format(&ds, " with metadata ");
+ odp_flow_format(md.data, md.size, NULL, 0, NULL, &ds, true);
ds_put_format(&ds, " mtu %d", execute->mtu);
vlog(THIS_MODULE, error ? VLL_WARN : VLL_DBG, "%s", ds_cstr(&ds));
ds_destroy(&ds);
free(packet);
+ ofpbuf_uninit(&md);
}
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/flow.c
^
|
@@ -595,11 +595,6 @@
sizeof nh->ip6_dst / 8);
tc_flow = get_16aligned_be32(&nh->ip6_flow);
- {
- ovs_be32 label = tc_flow & htonl(IPV6_LABEL_MASK);
- miniflow_push_be32(mf, ipv6_label, label);
- }
-
nw_tos = ntohl(tc_flow) >> 20;
nw_ttl = nh->ip6_hlim;
nw_proto = nh->ip6_nxt;
@@ -667,6 +662,12 @@
}
}
}
+
+ /* This needs to be after the parse_ipv6_ext_hdrs__() call because it
+ * leaves the nw_frag word uninitialized. */
+ ASSERT_SEQUENTIAL(ipv6_label, nw_frag);
+ ovs_be32 label = tc_flow & htonl(IPV6_LABEL_MASK);
+ miniflow_push_be32(mf, ipv6_label, label);
} else {
if (dl_type == htons(ETH_TYPE_ARP) ||
dl_type == htons(ETH_TYPE_RARP)) {
@@ -1670,7 +1671,7 @@
const uint64_t *a = ALIGNED_CAST(uint64_t *, flow->ipv6_src.s6_addr);
const uint64_t *b = ALIGNED_CAST(uint64_t *, flow->ipv6_dst.s6_addr);
- for (int i = 0; i < 4; i++) {
+ for (int i = 0; i < sizeof flow->ipv6_src / sizeof *a; i++) {
hash = hash_add64(hash, a[i] ^ b[i]);
}
} else {
@@ -1996,7 +1997,7 @@
*/
void
flow_push_mpls(struct flow *flow, int n, ovs_be16 mpls_eth_type,
- struct flow_wildcards *wc)
+ struct flow_wildcards *wc, bool clear_flow_L3)
{
ovs_assert(eth_type_mpls(mpls_eth_type));
ovs_assert(n < FLOW_MAX_MPLS_LABELS);
@@ -2034,11 +2035,13 @@
flow->mpls_lse[0] = set_mpls_lse_values(ttl, tc, 1, htonl(label));
- /* Clear all L3 and L4 fields and dp_hash. */
- BUILD_ASSERT(FLOW_WC_SEQ == 35);
- memset((char *) flow + FLOW_SEGMENT_2_ENDS_AT, 0,
- sizeof(struct flow) - FLOW_SEGMENT_2_ENDS_AT);
- flow->dp_hash = 0;
+ if (clear_flow_L3) {
+ /* Clear all L3 and L4 fields and dp_hash. */
+ BUILD_ASSERT(FLOW_WC_SEQ == 35);
+ memset((char *) flow + FLOW_SEGMENT_2_ENDS_AT, 0,
+ sizeof(struct flow) - FLOW_SEGMENT_2_ENDS_AT);
+ flow->dp_hash = 0;
+ }
}
flow->dl_type = mpls_eth_type;
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/flow.h
^
|
@@ -223,7 +223,7 @@
const struct flow *b, int bn,
struct flow_wildcards *wc);
void flow_push_mpls(struct flow *, int n, ovs_be16 mpls_eth_type,
- struct flow_wildcards *);
+ struct flow_wildcards *, bool clear_flow_L3);
bool flow_pop_mpls(struct flow *, int n, ovs_be16 eth_type,
struct flow_wildcards *);
void flow_set_mpls_label(struct flow *, int idx, ovs_be32 label);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/lacp.c
^
|
@@ -535,6 +535,7 @@
if (lacp->update) {
lacp_update_attached(lacp);
+ seq_change(connectivity_seq_get());
}
HMAP_FOR_EACH (slave, node, &lacp->slaves) {
@@ -595,11 +596,13 @@
{
struct slave *lead, *slave;
struct lacp_info lead_pri;
+ bool lead_enable;
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 10);
lacp->update = false;
lead = NULL;
+ lead_enable = false;
HMAP_FOR_EACH (slave, node, &lacp->slaves) {
struct lacp_info pri;
@@ -622,9 +625,14 @@
slave->attached = true;
slave_get_priority(slave, &pri);
+ bool enable = slave_may_enable__(slave);
- if (!lead || memcmp(&pri, &lead_pri, sizeof pri) < 0) {
+ if (!lead
+ || enable > lead_enable
+ || (enable == lead_enable
+ && memcmp(&pri, &lead_pri, sizeof pri) < 0)) {
lead = slave;
+ lead_enable = enable;
lead_pri = pri;
}
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/learning-switch.c
^
|
@@ -307,7 +307,7 @@
rconn_run(sw->rconn);
if (sw->state == S_CONNECTING) {
- if (rconn_get_version(sw->rconn) != -1) {
+ if (rconn_is_connected(sw->rconn)) {
lswitch_handshake(sw);
sw->state = S_FEATURES_REPLY;
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/meta-flow.c
^
|
@@ -2163,7 +2163,7 @@
}
return xasprintf("%s: unknown fragment type (valid types are \"no\", "
- "\"yes\", \"first\", \"later\", \"not_first\"", s);
+ "\"yes\", \"first\", \"later\", \"not_later\"", s);
}
static char *
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/meta-flow.h
^
|
@@ -1326,7 +1326,7 @@
*/
MFF_IP_TTL,
- /* "ip_frag".
+ /* "ip_frag" (aka "nw_frag").
*
* IP fragment information.
*
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/netdev-dpdk.c
^
|
@@ -131,7 +131,6 @@
},
};
-enum { MAX_TX_QUEUE_LEN = 384 };
enum { DPDK_RING_SIZE = 256 };
BUILD_ASSERT_DECL(IS_POW2(DPDK_RING_SIZE));
enum { DRAIN_TSC = 200000ULL };
@@ -153,8 +152,7 @@
= OVS_LIST_INITIALIZER(&dpdk_mp_list);
/* This mutex must be used by non pmd threads when allocating or freeing
- * mbufs through mempools. Since dpdk_queue_pkts() and dpdk_queue_flush() may
- * use mempools, a non pmd thread should hold this mutex while calling them */
+ * mbufs through mempools. */
static struct ovs_mutex nonpmd_mempool_mutex = OVS_MUTEX_INITIALIZER;
struct dpdk_mp {
@@ -168,17 +166,12 @@
/* There should be one 'struct dpdk_tx_queue' created for
* each cpu core. */
struct dpdk_tx_queue {
- bool flush_tx; /* Set to true to flush queue everytime */
- /* pkts are queued. */
- int count;
rte_spinlock_t tx_lock; /* Protects the members and the NIC queue
* from concurrent access. It is used only
* if the queue is shared among different
* pmd threads (see 'txq_needs_locking'). */
int map; /* Mapping of configured vhost-user queues
* to enabled by guest. */
- uint64_t tsc;
- struct rte_mbuf *burst_pkts[MAX_TX_QUEUE_LEN];
};
/* dpdk has no way to remove dpdk ring ethernet devices
@@ -566,19 +559,6 @@
netdev->tx_q = dpdk_rte_mzalloc(n_txqs * sizeof *netdev->tx_q);
for (i = 0; i < n_txqs; i++) {
- int numa_id = ovs_numa_get_numa_id(i);
-
- if (!netdev->txq_needs_locking) {
- /* Each index is considered as a cpu core id, since there should
- * be one tx queue for each cpu core. If the corresponding core
- * is not on the same numa node as 'netdev', flags the
- * 'flush_tx'. */
- netdev->tx_q[i].flush_tx = netdev->socket_id == numa_id;
- } else {
- /* Queues are shared among CPUs. Always flush */
- netdev->tx_q[i].flush_tx = true;
- }
-
/* Initialize map for vhost devices. */
netdev->tx_q[i].map = OVS_VHOST_QUEUE_MAP_UNKNOWN;
rte_spinlock_init(&netdev->tx_q[i].tx_lock);
@@ -952,16 +932,15 @@
}
static inline void
-dpdk_queue_flush__(struct netdev_dpdk *dev, int qid)
+netdev_dpdk_eth_tx_burst(struct netdev_dpdk *dev, int qid,
+ struct rte_mbuf **pkts, int cnt)
{
- struct dpdk_tx_queue *txq = &dev->tx_q[qid];
uint32_t nb_tx = 0;
- while (nb_tx != txq->count) {
+ while (nb_tx != cnt) {
uint32_t ret;
- ret = rte_eth_tx_burst(dev->port_id, qid, txq->burst_pkts + nb_tx,
- txq->count - nb_tx);
+ ret = rte_eth_tx_burst(dev->port_id, qid, pkts + nb_tx, cnt - nb_tx);
if (!ret) {
break;
}
@@ -969,32 +948,18 @@
nb_tx += ret;
}
- if (OVS_UNLIKELY(nb_tx != txq->count)) {
+ if (OVS_UNLIKELY(nb_tx != cnt)) {
/* free buffers, which we couldn't transmit, one at a time (each
* packet could come from a different mempool) */
int i;
- for (i = nb_tx; i < txq->count; i++) {
- rte_pktmbuf_free(txq->burst_pkts[i]);
+ for (i = nb_tx; i < cnt; i++) {
+ rte_pktmbuf_free(pkts[i]);
}
rte_spinlock_lock(&dev->stats_lock);
- dev->stats.tx_dropped += txq->count-nb_tx;
+ dev->stats.tx_dropped += cnt - nb_tx;
rte_spinlock_unlock(&dev->stats_lock);
}
-
- txq->count = 0;
- txq->tsc = rte_get_timer_cycles();
-}
-
-static inline void
-dpdk_queue_flush(struct netdev_dpdk *dev, int qid)
-{
- struct dpdk_tx_queue *txq = &dev->tx_q[qid];
-
- if (txq->count == 0) {
- return;
- }
- dpdk_queue_flush__(dev, qid);
}
static bool
@@ -1076,19 +1041,8 @@
int *c)
{
struct netdev_rxq_dpdk *rx = netdev_rxq_dpdk_cast(rxq_);
- struct netdev *netdev = rx->up.netdev;
- struct netdev_dpdk *dev = netdev_dpdk_cast(netdev);
int nb_rx;
- /* There is only one tx queue for this core. Do not flush other
- * queues.
- * Do not flush tx queue which is shared among CPUs
- * since it is always flushed */
- if (rxq_->queue_id == rte_lcore_id() &&
- OVS_LIKELY(!dev->txq_needs_locking)) {
- dpdk_queue_flush(dev, rxq_->queue_id);
- }
-
nb_rx = rte_eth_rx_burst(rx->port_id, rxq_->queue_id,
(struct rte_mbuf **) packets,
NETDEV_MAX_BURST);
@@ -1175,35 +1129,6 @@
}
}
-inline static void
-dpdk_queue_pkts(struct netdev_dpdk *dev, int qid,
- struct rte_mbuf **pkts, int cnt)
-{
- struct dpdk_tx_queue *txq = &dev->tx_q[qid];
- uint64_t diff_tsc;
-
- int i = 0;
-
- while (i < cnt) {
- int freeslots = MAX_TX_QUEUE_LEN - txq->count;
- int tocopy = MIN(freeslots, cnt-i);
-
- memcpy(&txq->burst_pkts[txq->count], &pkts[i],
- tocopy * sizeof (struct rte_mbuf *));
-
- txq->count += tocopy;
- i += tocopy;
-
- if (txq->count == MAX_TX_QUEUE_LEN || txq->flush_tx) {
- dpdk_queue_flush__(dev, qid);
- }
- diff_tsc = rte_get_timer_cycles() - txq->tsc;
- if (diff_tsc >= DRAIN_TSC) {
- dpdk_queue_flush__(dev, qid);
- }
- }
-}
-
/* Tx function. Transmit packets indefinitely */
static void
dpdk_do_tx_copy(struct netdev *netdev, int qid, struct dp_packet **pkts,
@@ -1265,8 +1190,7 @@
if (dev->type == DPDK_DEV_VHOST) {
__netdev_dpdk_vhost_send(netdev, qid, (struct dp_packet **) mbufs, newcnt, true);
} else {
- dpdk_queue_pkts(dev, qid, mbufs, newcnt);
- dpdk_queue_flush(dev, qid);
+ netdev_dpdk_eth_tx_burst(dev, qid, mbufs, newcnt);
}
if (!dpdk_thread_is_pmd()) {
@@ -1324,7 +1248,7 @@
if (OVS_UNLIKELY(size > dev->max_packet_len)) {
if (next_tx_idx != i) {
- dpdk_queue_pkts(dev, qid,
+ netdev_dpdk_eth_tx_burst(dev, qid,
(struct rte_mbuf **)&pkts[next_tx_idx],
i-next_tx_idx);
}
@@ -1338,9 +1262,9 @@
}
}
if (next_tx_idx != cnt) {
- dpdk_queue_pkts(dev, qid,
- (struct rte_mbuf **)&pkts[next_tx_idx],
- cnt-next_tx_idx);
+ netdev_dpdk_eth_tx_burst(dev, qid,
+ (struct rte_mbuf **)&pkts[next_tx_idx],
+ cnt-next_tx_idx);
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/netdev-dpdk.h
^
|
@@ -1,3 +1,19 @@
+/*
+ * Copyright (c) 2014, 2015, 2016 Nicira, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
#ifndef NETDEV_DPDK_H
#define NETDEV_DPDK_H
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/netdev-linux.c
^
|
@@ -988,12 +988,14 @@
}
static ovs_be16
-auxdata_to_vlan_tpid(const struct tpacket_auxdata *aux)
+auxdata_to_vlan_tpid(const struct tpacket_auxdata *aux, bool double_tagged)
{
if (aux->tp_status & TP_STATUS_VLAN_TPID_VALID) {
return htons(aux->tp_vlan_tpid);
+ } else if (double_tagged) {
+ return htons(ETH_TYPE_VLAN_8021AD);
} else {
- return htons(ETH_TYPE_VLAN);
+ return htons(ETH_TYPE_VLAN_8021Q);
}
}
@@ -1053,11 +1055,17 @@
aux = ALIGNED_CAST(struct tpacket_auxdata *, CMSG_DATA(cmsg));
if (auxdata_has_vlan_tci(aux)) {
+ struct eth_header *eth;
+ bool double_tagged;
+
if (retval < ETH_HEADER_LEN) {
return EINVAL;
}
- eth_push_vlan(buffer, auxdata_to_vlan_tpid(aux),
+ eth = dp_packet_data(buffer);
+ double_tagged = eth->eth_type == htons(ETH_TYPE_VLAN_8021Q);
+
+ eth_push_vlan(buffer, auxdata_to_vlan_tpid(aux, double_tagged),
htons(aux->tp_vlan_tci));
break;
}
@@ -3524,7 +3532,7 @@
error = tc_parse_qdisc(nlmsg, &kind, &nlattr);
if (error == 0) {
sfq = nl_attr_get(nlattr);
- sfq_install__(netdev, sfq->perturb_period, sfq->quantum);
+ sfq_install__(netdev, sfq->quantum, sfq->perturb_period);
return 0;
}
@@ -4900,7 +4908,7 @@
VLOG_DBG("%s: psched parameters are: %u %u %u %u", fn, a, b, c, d);
fclose(stream);
- if (!a || !c) {
+ if (!a || !b || !c) {
VLOG_WARN("%s: invalid scheduler parameters", fn);
goto exit;
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/netdev-windows.c
^
|
@@ -159,7 +159,10 @@
/* Query the attributes and runtime status of the netdev. */
ret = query_netdev(netdev_get_name(&netdev->up), &info, &buf);
- if (ret) {
+ /* "Internal" netdevs do not exist in the kernel yet. They need to be
+ * transformed into a netdev object and passed to dpif_port_add(), which
+ * will add them to the kernel. */
+ if (strcmp(netdev_get_type(&netdev->up), "internal") && ret) {
return ret;
}
ofpbuf_delete(buf);
@@ -299,7 +302,7 @@
}
}
- return 0;
+ return error;
}
static void
@@ -395,12 +398,7 @@
return ENXIO;
}
- arp_table = (MIB_IPNETTABLE *) malloc(buffer_length);
-
- if (arp_table == NULL) {
- VLOG_ERR("Could not allocate memory for all the interfaces");
- return ENXIO;
- }
+ arp_table = (MIB_IPNETTABLE *) xmalloc(buffer_length);
ret_val = GetIpNetTable(arp_table, &buffer_length, false);
@@ -444,12 +442,7 @@
return ENXIO;
}
- all_addr = (IP_ADAPTER_ADDRESSES *) malloc(buffer_length);
-
- if (all_addr == NULL) {
- VLOG_ERR("Could not allocate memory for all the interfaces");
- return ENXIO;
- }
+ all_addr = (IP_ADAPTER_ADDRESSES *) xmalloc(buffer_length);
ret_val = GetAdaptersAddresses(AF_INET,
GAA_FLAG_INCLUDE_PREFIX |
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/netdev.c
^
|
@@ -827,7 +827,13 @@
int
netdev_get_etheraddr(const struct netdev *netdev, struct eth_addr *mac)
{
- return netdev->netdev_class->get_etheraddr(netdev, mac);
+ int error;
+
+ error = netdev->netdev_class->get_etheraddr(netdev, mac);
+ if (error) {
+ memset(mac, 0, sizeof *mac);
+ }
+ return error;
}
/* Returns the name of the network device that 'netdev' represents,
@@ -1631,8 +1637,9 @@
netdev_queue_dump_next(struct netdev_queue_dump *dump,
unsigned int *queue_id, struct smap *details)
{
- const struct netdev *netdev = dump->netdev;
+ smap_clear(details);
+ const struct netdev *netdev = dump->netdev;
if (dump->error) {
return false;
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/odp-util.c
^
|
@@ -453,7 +453,7 @@
const void *l4;
const struct udp_header *udp;
- eth = (const struct eth_header *)data->header;
+ eth = ALIGNED_CAST(const struct eth_header *, data->header);
l3 = eth + 1;
@@ -467,8 +467,7 @@
if (eth->eth_type == htons(ETH_TYPE_IP)) {
/* IPv4 */
- const struct ip_header *ip;
- ip = (const struct ip_header *) l3;
+ const struct ip_header *ip = l3;
ds_put_format(ds, "ipv4(src="IP_FMT",dst="IP_FMT",proto=%"PRIu8
",tos=%#"PRIx8",ttl=%"PRIu8",frag=0x%"PRIx16"),",
IP_ARGS(get_16aligned_be32(&ip->ip_src)),
@@ -478,16 +477,20 @@
ntohs(ip->ip_frag_off));
l4 = (ip + 1);
} else {
- const struct ip6_hdr *ip6;
- ip6 = (const struct ip6_hdr *) l3;
+ const struct ovs_16aligned_ip6_hdr *ip6 = l3;
+ struct in6_addr src, dst;
+ memcpy(&src, &ip6->ip6_src, sizeof src);
+ memcpy(&dst, &ip6->ip6_dst, sizeof dst);
+ uint32_t ipv6_flow = ntohl(get_16aligned_be32(&ip6->ip6_flow));
+
ds_put_format(ds, "ipv6(src=");
- ipv6_format_addr(&ip6->ip6_src, ds);
+ ipv6_format_addr(&src, ds);
ds_put_format(ds, ",dst=");
- ipv6_format_addr(&ip6->ip6_dst, ds);
- ds_put_format(ds, ",label=%i,proto=%"PRIu8",tclass=0x%"PRIx8
+ ipv6_format_addr(&dst, ds);
+ ds_put_format(ds, ",label=%i,proto=%"PRIu8",tclass=0x%"PRIx32
",hlimit=%"PRIu8"),",
- ntohl(ip6->ip6_flow) & IPV6_LABEL_MASK, ip6->ip6_nxt,
- (ntohl(ip6->ip6_flow) >> 20) & 0xff, ip6->ip6_hlim);
+ ipv6_flow & IPV6_LABEL_MASK, ip6->ip6_nxt,
+ (ipv6_flow >> 20) & 0xff, ip6->ip6_hlim);
l4 = (ip6 + 1);
}
@@ -891,7 +894,7 @@
if (!ovs_scan_len(s, &n, "tnl_push(tnl_port(%"SCNi32"),", &data->tnl_port)) {
return -EINVAL;
}
- eth = (struct eth_header *) data->header;
+ eth = ALIGNED_CAST(struct eth_header *, data->header);
l3 = (data->header + sizeof *eth);
ip = (struct ip_header *) l3;
ip6 = (struct ovs_16aligned_ip6_hdr *) l3;
@@ -1225,20 +1228,19 @@
if (!strncmp(s, "set(", 4)) {
size_t start_ofs;
int retval;
- struct nlattr mask[128 / sizeof(struct nlattr)];
- struct ofpbuf maskbuf;
+ struct nlattr mask[1024 / sizeof(struct nlattr)];
+ struct ofpbuf maskbuf = OFPBUF_STUB_INITIALIZER(mask);
struct nlattr *nested, *key;
size_t size;
- /* 'mask' is big enough to hold any key. */
- ofpbuf_use_stack(&maskbuf, mask, sizeof mask);
-
start_ofs = nl_msg_start_nested(actions, OVS_ACTION_ATTR_SET);
retval = parse_odp_key_mask_attr(s + 4, port_names, actions, &maskbuf);
if (retval < 0) {
+ ofpbuf_uninit(&maskbuf);
return retval;
}
if (s[retval + 4] != ')') {
+ ofpbuf_uninit(&maskbuf);
return -EINVAL;
}
@@ -1256,6 +1258,7 @@
nested->nla_type = OVS_ACTION_ATTR_SET_MASKED;
}
}
+ ofpbuf_uninit(&maskbuf);
nl_msg_end_nested(actions, start_ofs);
return retval + 5;
@@ -2603,8 +2606,9 @@
size_t nested_mask;
if (tbl[type].next) {
- tbl = tbl[type].next;
- max = tbl[type].next_max;
+ const struct attr_len_tbl *entry = &tbl[type];
+ tbl = entry->next;
+ max = entry->next_max;
}
nested_mask = nl_msg_start_nested(ofp, type);
@@ -2654,7 +2658,7 @@
error = parse_int_string(s, (uint8_t *)&be_mask,
sizeof be_mask, &s);
if (error) {
- return error;
+ return 0;
}
*mask = ntoh128(be_mask);
} else {
@@ -3760,6 +3764,10 @@
if (retval < 0) {
return retval;
}
+
+ if (nl_attr_oversized(key->size - encap - NLA_HDRLEN)) {
+ return -E2BIG;
+ }
s += retval;
}
s++;
@@ -4103,7 +4111,9 @@
size_t left;
uint32_t wanted_attrs = 1u << OVS_KEY_ATTR_PRIORITY |
1u << OVS_KEY_ATTR_SKB_MARK | 1u << OVS_KEY_ATTR_TUNNEL |
- 1u << OVS_KEY_ATTR_IN_PORT;
+ 1u << OVS_KEY_ATTR_IN_PORT | 1u << OVS_KEY_ATTR_CT_STATE |
+ 1u << OVS_KEY_ATTR_CT_ZONE | 1u << OVS_KEY_ATTR_CT_MARK |
+ 1u << OVS_KEY_ATTR_CT_LABELS;
pkt_metadata_init(md, ODPP_NONE);
@@ -5168,7 +5178,10 @@
sizeof *mpls);
mpls->mpls_ethertype = flow->dl_type;
mpls->mpls_lse = flow->mpls_lse[flow_n - base_n - 1];
- flow_push_mpls(base, base_n, mpls->mpls_ethertype, NULL);
+ /* Update base flow's MPLS stack, but do not clear L3. We need the L3
+ * headers if the flow is restored later due to returning from a patch
+ * port or group bucket. */
+ flow_push_mpls(base, base_n, mpls->mpls_ethertype, NULL, false);
flow_set_mpls_lse(base, 0, mpls->mpls_lse);
base_n++;
}
@@ -5262,6 +5275,7 @@
get_ipv6_key(&wc->masks, &mask, true);
mask.ipv6_proto = 0; /* Not writeable. */
mask.ipv6_frag = 0; /* Not writable. */
+ mask.ipv6_label &= htonl(IPV6_LABEL_MASK); /* Not writable. */
if (commit(OVS_KEY_ATTR_IPV6, use_masked, &key, &base, &mask, sizeof key,
odp_actions)) {
@@ -5531,12 +5545,21 @@
bool use_masked)
{
enum slow_path_reason slow1, slow2;
+ bool mpls_done = false;
commit_set_ether_addr_action(flow, base, odp_actions, wc, use_masked);
+ /* Make packet a non-MPLS packet before committing L3/4 actions,
+ * which would otherwise do nothing. */
+ if (eth_type_mpls(base->dl_type) && !eth_type_mpls(flow->dl_type)) {
+ commit_mpls_action(flow, base, odp_actions);
+ mpls_done = true;
+ }
slow1 = commit_set_nw_action(flow, base, odp_actions, wc, use_masked);
commit_set_port_action(flow, base, odp_actions, wc, use_masked);
slow2 = commit_set_icmp_action(flow, base, odp_actions, wc);
- commit_mpls_action(flow, base, odp_actions);
+ if (!mpls_done) {
+ commit_mpls_action(flow, base, odp_actions);
+ }
commit_vlan_action(flow->vlan_tci, base, odp_actions, wc);
commit_set_priority_action(flow, base, odp_actions, wc, use_masked);
commit_set_pkt_mark_action(flow, base, odp_actions, wc, use_masked);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/ofp-actions.c
^
|
@@ -1081,12 +1081,13 @@
load ? "bundle_load" : "bundle", slaves_size,
bundle->n_slaves * sizeof(ovs_be16), bundle->n_slaves);
error = OFPERR_OFPBAC_BAD_LEN;
- }
-
- for (i = 0; i < bundle->n_slaves; i++) {
- ofp_port_t ofp_port = u16_to_ofp(ntohs(((ovs_be16 *)(nab + 1))[i]));
- ofpbuf_put(ofpacts, &ofp_port, sizeof ofp_port);
- bundle = ofpacts->header;
+ } else {
+ for (i = 0; i < bundle->n_slaves; i++) {
+ ofp_port_t ofp_port
+ = u16_to_ofp(ntohs(((ovs_be16 *)(nab + 1))[i]));
+ ofpbuf_put(ofpacts, &ofp_port, sizeof ofp_port);
+ bundle = ofpacts->header;
+ }
}
ofpact_update_len(ofpacts, &bundle->ofpact);
@@ -3956,7 +3957,7 @@
min_len += sizeof(ovs_be32); /* src_field */
min_len += sizeof(ovs_be16); /* src_ofs */
} else {
- min_len += DIV_ROUND_UP(n_bits, 16);
+ min_len += 2 * DIV_ROUND_UP(n_bits, 16);
}
if (dst_type == NX_LEARN_DST_MATCH ||
dst_type == NX_LEARN_DST_LOAD) {
@@ -5595,7 +5596,7 @@
const char *
ovs_instruction_name_from_type(enum ovs_instruction_type type)
{
- return inst_info[type].name;
+ return type < ARRAY_SIZE(inst_info) ? inst_info[type].name : NULL;
}
int
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/ofp-print.c
^
|
@@ -443,6 +443,8 @@
case OFPUTIL_C_STP: return "STP";
case OFPUTIL_C_GROUP_STATS: return "GROUP_STATS";
case OFPUTIL_C_PORT_BLOCKED: return "PORT_BLOCKED";
+ case OFPUTIL_C_BUNDLES: return "BUNDLES";
+ case OFPUTIL_C_FLOW_MONITORING: return "FLOW_MONITORING";
}
return NULL;
@@ -1903,7 +1905,8 @@
break;
case OFPCRR_N_REASONS:
default:
- OVS_NOT_REACHED();
+ ds_put_cstr(string, "(unknown)");
+ break;
}
}
@@ -2733,7 +2736,13 @@
for (i = 0; i < 32; i++) {
if (tif->instructions & (1u << i)) {
- ds_put_format(s, "%s,", ovs_instruction_name_from_type(i));
+ const char *name = ovs_instruction_name_from_type(i);
+ if (name) {
+ ds_put_cstr(s, name);
+ } else {
+ ds_put_format(s, "%d", i);
+ }
+ ds_put_char(s, ',');
}
}
ds_chomp(s, ',');
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/ofp-util.c
^
|
@@ -309,6 +309,7 @@
/* Initialize match->wc. */
memset(&match->flow, 0, sizeof match->flow);
ofputil_wildcard_from_ofpfw10(ofpfw, &match->wc);
+ memset(&match->tun_md, 0, sizeof match->tun_md);
/* Initialize most of match->flow. */
match->flow.nw_src = ofmatch->nw_src;
@@ -1954,12 +1955,12 @@
mm->meter.flags & OFPMF13_PKTPS) {
return OFPERR_OFPMMFC_BAD_FLAGS;
}
- mm->meter.bands = bands->data;
error = ofputil_pull_bands(&b, b.size, &mm->meter.n_bands, bands);
if (error) {
return error;
}
+ mm->meter.bands = bands->data;
}
return 0;
}
@@ -2694,7 +2695,7 @@
hdr = ofpbuf_at_assert(reply, 0, sizeof *hdr);
prop_len = ntohs(hdr->len);
- if (prop_len < sizeof *hdr || prop_len > reply->size || prop_len % 8) {
+ if (prop_len < sizeof *hdr || prop_len > len || prop_len % 8) {
return OFPERR_OFPBRC_BAD_LEN;
}
@@ -4079,6 +4080,9 @@
BUILD_ASSERT_DECL((int) OFPUTIL_C_IP_REASM == OFPC_IP_REASM);
BUILD_ASSERT_DECL((int) OFPUTIL_C_QUEUE_STATS == OFPC_QUEUE_STATS);
BUILD_ASSERT_DECL((int) OFPUTIL_C_ARP_MATCH_IP == OFPC_ARP_MATCH_IP);
+BUILD_ASSERT_DECL((int) OFPUTIL_C_PORT_BLOCKED == OFPC12_PORT_BLOCKED);
+BUILD_ASSERT_DECL((int) OFPUTIL_C_BUNDLES == OFPC14_BUNDLES);
+BUILD_ASSERT_DECL((int) OFPUTIL_C_FLOW_MONITORING == OFPC14_FLOW_MONITORING);
static uint32_t
ofputil_capabilities_mask(enum ofp_version ofp_version)
@@ -4090,9 +4094,11 @@
return OFPC_COMMON | OFPC_ARP_MATCH_IP;
case OFP12_VERSION:
case OFP13_VERSION:
+ return OFPC_COMMON | OFPC12_PORT_BLOCKED;
case OFP14_VERSION:
case OFP15_VERSION:
- return OFPC_COMMON | OFPC12_PORT_BLOCKED;
+ return OFPC_COMMON | OFPC12_PORT_BLOCKED | OFPC14_BUNDLES
+ | OFPC14_FLOW_MONITORING;
default:
/* Caller needs to check osf->header.version itself */
return 0;
@@ -4222,7 +4228,6 @@
osf->n_buffers = htonl(features->n_buffers);
osf->n_tables = features->n_tables;
- osf->capabilities = htonl(features->capabilities & OFPC_COMMON);
osf->capabilities = htonl(features->capabilities &
ofputil_capabilities_mask(version));
switch (version) {
@@ -8034,6 +8039,7 @@
if (!ob) {
VLOG_WARN_RL(&bad_ofmsg_rl, "buckets end with %"PRIuSIZE" leftover bytes",
buckets_length);
+ ofputil_bucket_list_destroy(buckets);
return OFPERR_OFPGMFC_BAD_BUCKET;
}
@@ -8041,11 +8047,13 @@
if (ob_len < sizeof *ob) {
VLOG_WARN_RL(&bad_ofmsg_rl, "OpenFlow message bucket length "
"%"PRIuSIZE" is not valid", ob_len);
+ ofputil_bucket_list_destroy(buckets);
return OFPERR_OFPGMFC_BAD_BUCKET;
} else if (ob_len > buckets_length) {
VLOG_WARN_RL(&bad_ofmsg_rl, "OpenFlow message bucket length "
"%"PRIuSIZE" exceeds remaining buckets data size %"PRIuSIZE,
ob_len, buckets_length);
+ ofputil_bucket_list_destroy(buckets);
return OFPERR_OFPGMFC_BAD_BUCKET;
}
buckets_length -= ob_len;
@@ -8065,6 +8073,7 @@
if (error) {
ofpbuf_uninit(&ofpacts);
ofputil_bucket_list_destroy(buckets);
+ free(bucket);
return OFPERR_OFPGMFC_BAD_WATCH;
}
bucket->watch_group = ntohl(ob->watch_group);
@@ -8271,7 +8280,7 @@
"for select groups");
return OFPERR_OFPBPC_BAD_VALUE;
default:
- OVS_NOT_REACHED();
+ return OFPERR_OFPGMFC_BAD_TYPE;
}
switch (group_cmd) {
@@ -8285,7 +8294,7 @@
"for add and delete group modifications");
return OFPERR_OFPBPC_BAD_VALUE;
default:
- OVS_NOT_REACHED();
+ return OFPERR_OFPGMFC_BAD_COMMAND;
}
if (payload->size < sizeof *prop) {
@@ -8525,8 +8534,13 @@
* Such properties are valid for group desc replies so
* claim that the group mod command is OFPGC15_ADD to
* satisfy the check in parse_group_prop_ntr_selection_method() */
- return parse_ofp15_group_properties(msg, gd->type, OFPGC15_ADD, &gd->props,
- length - sizeof *ogds - bucket_list_len);
+ error = parse_ofp15_group_properties(
+ msg, gd->type, OFPGC15_ADD, &gd->props,
+ length - sizeof *ogds - bucket_list_len);
+ if (error) {
+ ofputil_bucket_list_destroy(&gd->buckets);
+ }
+ return error;
}
/* Converts a group description reply in 'msg' into an abstract
@@ -8758,6 +8772,7 @@
&& gm->command == OFPGC11_DELETE
&& !list_is_empty(&gm->buckets)) {
error = OFPERR_OFPGMFC_INVALID_GROUP;
+ ofputil_bucket_list_destroy(&gm->buckets);
}
return error;
@@ -8808,54 +8823,26 @@
}
bucket_list_len = ntohs(ogm->bucket_array_len);
+ if (bucket_list_len > msg->size) {
+ return OFPERR_OFPBRC_BAD_LEN;
+ }
error = ofputil_pull_ofp15_buckets(msg, bucket_list_len, ofp_version,
gm->type, &gm->buckets);
if (error) {
return error;
}
- return parse_ofp15_group_properties(msg, gm->type, gm->command, &gm->props,
- msg->size);
+ error = parse_ofp15_group_properties(msg, gm->type, gm->command,
+ &gm->props, msg->size);
+ if (error) {
+ ofputil_bucket_list_destroy(&gm->buckets);
+ }
+ return error;
}
-/* Converts OpenFlow group mod message 'oh' into an abstract group mod in
- * 'gm'. Returns 0 if successful, otherwise an OpenFlow error code. */
-enum ofperr
-ofputil_decode_group_mod(const struct ofp_header *oh,
- struct ofputil_group_mod *gm)
+static enum ofperr
+ofputil_check_group_mod(const struct ofputil_group_mod *gm)
{
- enum ofp_version ofp_version = oh->version;
- struct ofpbuf msg;
- struct ofputil_bucket *bucket;
- enum ofperr err;
-
- ofpbuf_use_const(&msg, oh, ntohs(oh->length));
- ofpraw_pull_assert(&msg);
-
- ofputil_init_group_properties(&gm->props);
-
- switch (ofp_version)
- {
- case OFP11_VERSION:
- case OFP12_VERSION:
- case OFP13_VERSION:
- case OFP14_VERSION:
- err = ofputil_pull_ofp11_group_mod(&msg, ofp_version, gm);
- break;
-
- case OFP15_VERSION:
- err = ofputil_pull_ofp15_group_mod(&msg, ofp_version, gm);
- break;
-
- case OFP10_VERSION:
- default:
- OVS_NOT_REACHED();
- }
-
- if (err) {
- return err;
- }
-
switch (gm->type) {
case OFPGT11_INDIRECT:
if (!list_is_singleton(&gm->buckets)) {
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/ofp-util.h
^
|
@@ -537,7 +537,7 @@
};
enum ofputil_capabilities {
- /* OpenFlow 1.0, 1.1, 1.2, and 1.3 share these capability values. */
+ /* All OpenFlow versions share these capability values. */
OFPUTIL_C_FLOW_STATS = 1 << 0, /* Flow statistics. */
OFPUTIL_C_TABLE_STATS = 1 << 1, /* Table statistics. */
OFPUTIL_C_PORT_STATS = 1 << 2, /* Port statistics. */
@@ -550,11 +550,16 @@
/* OpenFlow 1.0 only. */
OFPUTIL_C_STP = 1 << 3, /* 802.1d spanning tree. */
- /* OpenFlow 1.1, 1.2, and 1.3 share this capability. */
+ /* OpenFlow 1.1+ only. Note that this bit value does not match the one
+ * in the OpenFlow message. */
OFPUTIL_C_GROUP_STATS = 1 << 4, /* Group statistics. */
- /* OpenFlow 1.2 and 1.3 share this capability */
+ /* OpenFlow 1.2+ only. */
OFPUTIL_C_PORT_BLOCKED = 1 << 8, /* Switch will block looping ports */
+
+ /* OpenFlow 1.4+ only. */
+ OFPUTIL_C_BUNDLES = 1 << 9, /* Switch supports bundles. */
+ OFPUTIL_C_FLOW_MONITORING = 1 << 10, /* Switch supports flow monitoring. */
};
/* Abstract ofp_switch_features. */
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/ovs-router.c
^
|
@@ -355,7 +355,7 @@
if (ovs_router_lookup(&ip6, iface, &gw)) {
struct ds ds = DS_EMPTY_INITIALIZER;
ds_put_format(&ds, "gateway ");
- ipv6_format_mapped(&ip6, &ds);
+ ipv6_format_mapped(&gw, &ds);
ds_put_format(&ds, "\ndev %s\n", iface);
unixctl_command_reply(conn, ds_cstr(&ds));
ds_destroy(&ds);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/ovsdb-types.c
^
|
@@ -363,6 +363,7 @@
error = ovsdb_atomic_type_from_json(&base->type, type);
if (error) {
+ ovsdb_error_destroy(ovsdb_parser_destroy(&parser));
return error;
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/packets.h
^
|
@@ -389,12 +389,11 @@
#define ETH_TOTAL_MIN (ETH_HEADER_LEN + ETH_PAYLOAD_MIN)
#define ETH_TOTAL_MAX (ETH_HEADER_LEN + ETH_PAYLOAD_MAX)
#define ETH_VLAN_TOTAL_MAX (ETH_HEADER_LEN + VLAN_HEADER_LEN + ETH_PAYLOAD_MAX)
-OVS_PACKED(
struct eth_header {
struct eth_addr eth_dst;
struct eth_addr eth_src;
ovs_be16 eth_type;
-});
+};
BUILD_ASSERT_DECL(ETH_HEADER_LEN == sizeof(struct eth_header));
#define LLC_DSAP_SNAP 0xaa
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/pcap-file.c
^
|
@@ -162,7 +162,7 @@
if (swap) {
len = uint32_byteswap(len);
if (len > 0xffff) {
- VLOG_WARN("bad packet length %"PRIuSIZE" or %"PRIu32
+ VLOG_WARN("bad packet length %"PRIuSIZE" or %"PRIu32" "
"reading pcap file",
len, uint32_byteswap(len));
return EPROTO;
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/rconn.c
^
|
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2019 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -139,7 +139,8 @@
struct vconn *monitors[MAXIMUM_MONITORS];
size_t n_monitors;
- uint32_t allowed_versions;
+ uint32_t allowed_versions; /* Acceptable OpenFlow versions. */
+ int version; /* Current or most recent version. */
};
uint32_t rconn_get_allowed_versions(const struct rconn *rconn)
@@ -172,8 +173,6 @@
static bool is_admitted_msg(const struct ofpbuf *);
static bool rconn_logging_connection_attempts__(const struct rconn *rc)
OVS_REQUIRES(rc->mutex);
-static int rconn_get_version__(const struct rconn *rconn)
- OVS_REQUIRES(rconn->mutex);
/* The following prototypes duplicate those in rconn.h, but there we weren't
* able to add the OVS_EXCLUDED annotations because the definition of struct
@@ -274,7 +273,9 @@
rconn_set_dscp(rc, dscp);
rc->n_monitors = 0;
+
rc->allowed_versions = allowed_versions;
+ rc->version = -1;
return rc;
}
@@ -363,8 +364,7 @@
rconn_set_target__(rc, vconn_get_name(vconn), name);
rc->reliable = false;
rc->vconn = vconn;
- rc->last_connected = time_now();
- state_transition(rc, S_ACTIVE);
+ state_transition(rc, S_CONNECTING);
ovs_mutex_unlock(&rc->mutex);
}
@@ -489,7 +489,7 @@
timeout_CONNECTING(const struct rconn *rc)
OVS_REQUIRES(rc->mutex)
{
- return MAX(1, rc->backoff);
+ return MAX(2, rc->backoff);
}
static void
@@ -498,9 +498,10 @@
{
int retval = vconn_connect(rc->vconn);
if (!retval) {
- VLOG_INFO("%s: connected", rc->name);
+ VLOG(rc->reliable ? VLL_INFO : VLL_DBG, "%s: connected", rc->name);
rc->n_successful_connections++;
state_transition(rc, S_ACTIVE);
+ rc->version = vconn_get_version(rc->vconn);
rc->last_connected = rc->state_entered;
} else if (retval != EAGAIN) {
if (rconn_logging_connection_attempts__(rc)) {
@@ -554,19 +555,17 @@
{
if (timed_out(rc)) {
unsigned int base = MAX(rc->last_activity, rc->state_entered);
- int version;
-
VLOG_DBG("%s: idle %u seconds, sending inactivity probe",
rc->name, (unsigned int) (time_now() - base));
- version = rconn_get_version__(rc);
- ovs_assert(version >= 0 && version <= 0xff);
-
/* Ordering is important here: rconn_send() can transition to BACKOFF,
* and we don't want to transition back to IDLE if so, because then we
* can end up queuing a packet with vconn == NULL and then *boom*. */
state_transition(rc, S_IDLE);
- rconn_send__(rc, make_echo_request(version), NULL);
+
+ /* Send an echo request. */
+ rconn_send__(rc, make_echo_request(rc->version), NULL);
+
return;
}
@@ -927,23 +926,19 @@
return duration;
}
-static int
-rconn_get_version__(const struct rconn *rconn)
- OVS_REQUIRES(rconn->mutex)
-{
- return rconn->vconn ? vconn_get_version(rconn->vconn) : -1;
-}
-
-/* Returns the OpenFlow version negotiated with the peer, or -1 if there is
- * currently no connection or if version negotiation is not yet complete. */
+/* Returns the OpenFlow version most recently negotiated with a peer, or -1 if
+ * no version has ever been negotiated.
+ *
+ * If 'rconn' is connected (that is, if 'rconn_is_connected(rconn)' would
+ * return true), then the return value is guaranteed to be the OpenFlow version
+ * in use for the connection. The converse is not true: when the return value
+ * is not -1, 'rconn' might be disconnected. */
int
rconn_get_version(const struct rconn *rconn)
OVS_EXCLUDED(rconn->mutex)
{
- int version;
-
ovs_mutex_lock(&rconn->mutex);
- version = rconn_get_version__(rconn);
+ int version = rconn->version;
ovs_mutex_unlock(&rconn->mutex);
return version;
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/stream-ssl.c
^
|
@@ -670,7 +670,7 @@
case EAGAIN:
return n;
default:
- sslv->txbuf = NULL;
+ ssl_clear_txbuf(sslv);
return -error;
}
}
@@ -1108,7 +1108,7 @@
const char *certificate_file)
{
if (update_ssl_config(&private_key, private_key_file)
- || update_ssl_config(&certificate, certificate_file)) {
+ && update_ssl_config(&certificate, certificate_file)) {
stream_ssl_set_certificate_file__(certificate_file);
stream_ssl_set_private_key_file__(private_key_file);
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/tnl-neigh-cache.c
^
|
@@ -122,8 +122,8 @@
return;
}
tnl_neigh_delete(neigh);
- seq_change(tnl_conf_seq);
}
+ seq_change(tnl_conf_seq);
neigh = xmalloc(sizeof *neigh);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/tnl-ports.c
^
|
@@ -368,12 +368,14 @@
ip_dev->change_seq = netdev_get_change_seq(dev);
error = netdev_get_etheraddr(ip_dev->dev, &ip_dev->mac);
if (error) {
+ netdev_close(dev);
free(ip_dev);
return;
}
error4 = netdev_get_in4(ip_dev->dev, (struct in_addr *)&ip_dev->addr4, NULL);
error6 = netdev_get_in6(ip_dev->dev, &ip_dev->addr6);
if (error4 && error6) {
+ netdev_close(dev);
free(ip_dev);
return;
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/tun-metadata.c
^
|
@@ -32,7 +32,7 @@
struct tun_meta_entry {
struct hmap_node node; /* In struct tun_table's key_hmap. */
- uint32_t key; /* (class << 16) | type. */
+ uint32_t key; /* (class << 8) | type. */
struct tun_metadata_loc loc;
bool valid; /* True if allocated to a class and type. */
};
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/lib/vconn.c
^
|
@@ -569,6 +569,7 @@
break;
case VCS_DISCONNECTED:
+ ovs_assert(vconn->error != 0);
return vconn->error;
default:
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/m4/libtool.m4
^
|
@@ -1,8 +1,6 @@
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is free software; the Free Software Foundation gives
@@ -10,36 +8,30 @@
# modifications, as long as this notice is preserved.
m4_define([_LT_COPYING], [dnl
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# Written by Gordon Matzigkeit, 1996
-#
-# This file is part of GNU Libtool.
-#
-# GNU Libtool 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 2 of
-# the License, or (at your option) any later version.
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool 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 2 of of the License, or
+# (at your option) any later version.
#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the same
+# distribution terms that you use for the rest of that program.
#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
])
-# serial 57 LT_INIT
+# serial 58 LT_INIT
# LT_PREREQ(VERSION)
@@ -67,7 +59,7 @@
# LT_INIT([OPTIONS])
# ------------------
AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
AC_BEFORE([$0], [LT_LANG])dnl
AC_BEFORE([$0], [LT_OUTPUT])dnl
@@ -91,7 +83,7 @@
_LT_SET_OPTIONS([$0], [$1])
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
+LIBTOOL_DEPS=$ltmain
# Always use our own libtool.
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -111,26 +103,43 @@
dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+# _LT_PREPARE_CC_BASENAME
+# -----------------------
+m4_defun([_LT_PREPARE_CC_BASENAME], [
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+ for cc_temp in @S|@*""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+ done
+ func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+])# _LT_PREPARE_CC_BASENAME
+
+
# _LT_CC_BASENAME(CC)
# -------------------
-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME,
+# but that macro is also expanded into generated libtool script, which
+# arranges for $SED and $ECHO to be set by different means.
m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
- case $cc_temp in
- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
- \-*) ;;
- *) break;;
- esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+[m4_require([_LT_PREPARE_CC_BASENAME])dnl
+AC_REQUIRE([_LT_DECL_SED])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+func_cc_basename $1
+cc_basename=$func_cc_basename_result
])
# _LT_FILEUTILS_DEFAULTS
# ----------------------
# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'.
m4_defun([_LT_FILEUTILS_DEFAULTS],
[: ${CP="cp -f"}
: ${MV="mv -f"}
@@ -177,15 +186,16 @@
m4_require([_LT_CMD_OLD_ARCHIVE])dnl
m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
m4_require([_LT_WITH_SYSROOT])dnl
+m4_require([_LT_CMD_TRUNCATE])dnl
_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
+# See if we are running on zsh, and set the options that allow our
# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
+if test -n "\${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
])
-if test -n "${ZSH_VERSION+set}" ; then
+if test -n "${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
@@ -198,7 +208,7 @@
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
# vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
+ if test set != "${COLLECT_NAMES+set}"; then
COLLECT_NAMES=
export COLLECT_NAMES
fi
@@ -209,14 +219,14 @@
ofile=libtool
can_build_shared=yes
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
-with_gnu_ld="$lt_cv_prog_gnu_ld"
+with_gnu_ld=$lt_cv_prog_gnu_ld
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
+old_CC=$CC
+old_CFLAGS=$CFLAGS
# Set sane defaults for various variables
test -z "$CC" && CC=cc
@@ -269,14 +279,14 @@
# _LT_PROG_LTMAIN
# ---------------
-# Note that this code is called both from `configure', and `config.status'
+# Note that this code is called both from 'configure', and 'config.status'
# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# 'config.status' has no value for ac_aux_dir unless we are using Automake,
# so we pass a copy along to make sure it has a sensible value anyway.
m4_defun([_LT_PROG_LTMAIN],
[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
])# _LT_PROG_LTMAIN
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/m4/ltoptions.m4
^
|
@@ -1,14 +1,14 @@
# Helper functions for option handling. -*- Autoconf -*-
#
-# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
+# Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
# This file is free software; the Free Software Foundation gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
-# serial 7 ltoptions.m4
+# serial 8 ltoptions.m4
# This is to help aclocal find these macros, as it can't see m4_define.
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
@@ -29,7 +29,7 @@
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
_LT_MANGLE_DEFUN([$1], [$2]),
- [m4_warning([Unknown $1 option `$2'])])[]dnl
+ [m4_warning([Unknown $1 option '$2'])])[]dnl
])
@@ -75,13 +75,15 @@
dnl
dnl If no reference was made to various pairs of opposing options, then
dnl we run the default mode handler for the pair. For example, if neither
- dnl `shared' nor `disable-shared' was passed, we enable building of shared
+ dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
dnl archives by default:
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
- [_LT_ENABLE_FAST_INSTALL])
+ [_LT_ENABLE_FAST_INSTALL])
+ _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
+ [_LT_WITH_AIX_SONAME([aix])])
])
])# _LT_SET_OPTIONS
@@ -112,7 +114,7 @@
[_LT_SET_OPTION([LT_INIT], [dlopen])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
+put the 'dlopen' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
@@ -148,7 +150,7 @@
_LT_SET_OPTION([LT_INIT], [win32-dll])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
+put the 'win32-dll' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
@@ -157,9 +159,9 @@
# _LT_ENABLE_SHARED([DEFAULT])
# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# implement the --enable-shared flag, and supports the 'shared' and
+# 'disable-shared' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_SHARED],
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([shared],
@@ -172,14 +174,14 @@
*)
enable_shared=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_shared=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
@@ -211,9 +213,9 @@
# _LT_ENABLE_STATIC([DEFAULT])
# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# implement the --enable-static flag, and support the 'static' and
+# 'disable-static' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_STATIC],
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([static],
@@ -226,14 +228,14 @@
*)
enable_static=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_static=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
@@ -265,9 +267,9 @@
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+# implement the --enable-fast-install flag, and support the 'fast-install'
+# and 'disable-fast-install' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
m4_define([_LT_ENABLE_FAST_INSTALL],
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
AC_ARG_ENABLE([fast-install],
@@ -280,14 +282,14 @@
*)
enable_fast_install=no
# Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
for pkg in $enableval; do
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
if test "X$pkg" = "X$p"; then
enable_fast_install=yes
fi
done
- IFS="$lt_save_ifs"
+ IFS=$lt_save_ifs
;;
esac],
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
@@ -304,14 +306,14 @@
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
+the 'fast-install' option into LT_INIT's first parameter.])
])
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
AC_DIAGNOSE([obsolete],
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
+the 'disable-fast-install' option into LT_INIT's first parameter.])
])
dnl aclocal-1.4 backwards compatibility:
@@ -319,11 +321,64 @@
dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+# _LT_WITH_AIX_SONAME([DEFAULT])
+# ----------------------------------
+# implement the --with-aix-soname flag, and support the `aix-soname=aix'
+# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
+# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'.
+m4_define([_LT_WITH_AIX_SONAME],
+[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
+shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[[5-9]]*,yes)
+ AC_MSG_CHECKING([which variant of shared library versioning to provide])
+ AC_ARG_WITH([aix-soname],
+ [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
+ [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
+ [case $withval in
+ aix|svr4|both)
+ ;;
+ *)
+ AC_MSG_ERROR([Unknown argument to --with-aix-soname])
+ ;;
+ esac
+ lt_cv_with_aix_soname=$with_aix_soname],
+ [AC_CACHE_VAL([lt_cv_with_aix_soname],
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/m4/ltsugar.m4
^
|
@@ -1,6 +1,7 @@
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
+# Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
# This file is free software; the Free Software Foundation gives
@@ -33,7 +34,7 @@
# ------------
# Manipulate m4 lists.
# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
+# Autoconf-2.59, which quotes differently.
m4_define([lt_car], [[$1]])
m4_define([lt_cdr],
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
@@ -44,7 +45,7 @@
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
# Note that neither SEPARATOR nor STRING are expanded; they are appended
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/m4/ltversion.m4
^
|
@@ -1,6 +1,6 @@
# ltversion.m4 -- version numbers -*- Autoconf -*-
#
-# Copyright (C) 2004 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
# Written by Scott James Remnant, 2004
#
# This file is free software; the Free Software Foundation gives
@@ -9,15 +9,15 @@
# @configure_input@
-# serial 3337 ltversion.m4
+# serial 4179 ltversion.m4
# This file is part of GNU Libtool
-m4_define([LT_PACKAGE_VERSION], [2.4.2])
-m4_define([LT_PACKAGE_REVISION], [1.3337])
+m4_define([LT_PACKAGE_VERSION], [2.4.6])
+m4_define([LT_PACKAGE_REVISION], [2.4.6])
AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.2'
-macro_revision='1.3337'
+[macro_version='2.4.6'
+macro_revision='2.4.6'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/m4/lt~obsolete.m4
^
|
@@ -1,6 +1,7 @@
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
#
-# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
+# Foundation, Inc.
# Written by Scott James Remnant, 2004.
#
# This file is free software; the Free Software Foundation gives
@@ -11,7 +12,7 @@
# These exist entirely to fool aclocal when bootstrapping libtool.
#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
# which have later been changed to m4_define as they aren't part of the
# exported API, or moved to Autoconf or Automake where they belong.
#
@@ -25,7 +26,7 @@
# included after everything else. This provides aclocal with the
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
#
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
# Yes, that means every name once taken will need to remain here until
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/bond.c
^
|
@@ -187,6 +187,8 @@
struct flow_wildcards *,
uint16_t vlan)
OVS_REQ_RDLOCK(rwlock);
+static void update_recirc_rules__(struct bond *bond);
+static bool bond_is_falling_back_to_ab(const struct bond *);
/* Attempts to parse 's' as the name of a bond balancing mode. If successful,
* stores the mode in '*balance' and returns true. Otherwise returns false
@@ -241,6 +243,9 @@
bond->recirc_id = 0;
hmap_init(&bond->pr_rule_ops);
+ bond->active_slave_mac = eth_addr_zero;
+ bond->active_slave_changed = false;
+
bond_reconfigure(bond, s);
return bond;
}
@@ -261,7 +266,6 @@
bond_unref(struct bond *bond)
{
struct bond_slave *slave, *next_slave;
- struct bond_pr_rule_op *pr_op, *next_op;
if (!bond || ovs_refcount_unref_relaxed(&bond->ref_cnt) != 1) {
return;
@@ -280,19 +284,18 @@
hmap_destroy(&bond->slaves);
ovs_mutex_destroy(&bond->mutex);
- free(bond->hash);
- free(bond->name);
-
- HMAP_FOR_EACH_SAFE(pr_op, next_op, hmap_node, &bond->pr_rule_ops) {
- hmap_remove(&bond->pr_rule_ops, &pr_op->hmap_node);
- free(pr_op);
- }
- hmap_destroy(&bond->pr_rule_ops);
+ /* Free bond resources. Remove existing post recirc rules. */
if (bond->recirc_id) {
recirc_free_id(bond->recirc_id);
+ bond->recirc_id = 0;
}
+ free(bond->hash);
+ bond->hash = NULL;
+ update_recirc_rules__(bond);
+ hmap_destroy(&bond->pr_rule_ops);
+ free(bond->name);
free(bond);
}
@@ -320,9 +323,17 @@
hmap_insert(&bond->pr_rule_ops, &pr_op->hmap_node, hash);
}
+/* This function should almost never be called directly.
+ * 'update_recirc_rules()' should be called instead. Since
+ * this function modifies 'bond->pr_rule_ops', it is only
+ * safe when 'rwlock' is held.
+ *
+ * However, when the 'bond' is the only reference in the system,
+ * calling this function avoid acquiring lock only to satisfy
+ * lock annotation. Currently, only 'bond_unref()' calls
+ * this function directly. */
static void
-update_recirc_rules(struct bond *bond)
- OVS_REQ_WRLOCK(rwlock)
+update_recirc_rules__(struct bond *bond)
{
struct match match;
struct bond_pr_rule_op *pr_op, *next_op;
@@ -383,7 +394,9 @@
}
hmap_remove(&bond->pr_rule_ops, &pr_op->hmap_node);
- *pr_op->pr_rule = NULL;
+ if (bond->hash) {
+ *pr_op->pr_rule = NULL;
+ }
free(pr_op);
break;
}
@@ -392,6 +405,12 @@
ofpbuf_uninit(&ofpacts);
}
+static void
+update_recirc_rules(struct bond *bond)
+ OVS_REQ_RDLOCK(rwlock)
+{
+ update_recirc_rules__(bond);
+}
/* Updates 'bond''s overall configuration to 's'.
*
@@ -458,9 +477,6 @@
bond_entry_reset(bond);
}
- bond->active_slave_mac = s->active_slave_mac;
- bond->active_slave_changed = false;
-
ovs_rwlock_unlock(&rwlock);
return revalidate;
}
@@ -489,10 +505,13 @@
static void
bond_active_slave_changed(struct bond *bond)
{
- struct eth_addr mac;
-
- netdev_get_etheraddr(bond->active_slave->netdev, &mac);
- bond->active_slave_mac = mac;
+ if (bond->active_slave) {
+ struct eth_addr mac;
+ netdev_get_etheraddr(bond->active_slave->netdev, &mac);
+ bond->active_slave_mac = mac;
+ } else {
+ bond->active_slave_mac = eth_addr_zero;
+ }
bond->active_slave_changed = true;
seq_change(connectivity_seq_get());
}
@@ -635,6 +654,13 @@
if (bond->lacp_status != lacp_status) {
bond->lacp_status = lacp_status;
bond->bond_revalidate = true;
+
+ /* Change in LACP status can affect whether the bond is falling back to
+ * active-backup. Make sure to create or destroy buckets if
+ * necessary. */
+ if (bond_is_falling_back_to_ab(bond) || !bond->hash) {
+ bond_entry_reset(bond);
+ }
}
/* Enable slaves based on link status and LACP feedback. */
@@ -743,6 +769,15 @@
return packet;
}

+
+static bool
+bond_is_falling_back_to_ab(const struct bond *bond)
+{
+ return (bond->lacp_fallback_ab
+ && (bond->balance == BM_SLB || bond->balance == BM_TCP)
+ && bond->lacp_status == LACP_CONFIGURED);
+}
+
/* Checks whether a packet that arrived on 'slave_' within 'bond', with an
* Ethernet destination address of 'eth_dst', should be admitted.
*
@@ -910,17 +945,17 @@
bond_may_recirc(const struct bond *bond, uint32_t *recirc_id,
uint32_t *hash_bias)
{
- if (bond->balance == BM_TCP && bond->recirc_id) {
- if (recirc_id) {
- *recirc_id = bond->recirc_id;
- }
- if (hash_bias) {
- *hash_bias = bond->basis;
- }
- return true;
- } else {
- return false;
+ bool may_recirc = (bond->balance == BM_TCP && bond->recirc_id
+ && !bond_is_falling_back_to_ab(bond));
+
+ if (recirc_id) {
+ *recirc_id = may_recirc ? bond->recirc_id : 0;
+ }
+ if (hash_bias) {
+ *hash_bias = may_recirc ? bond->basis : 0;
}
+
+ return may_recirc;
}
static void
@@ -948,12 +983,16 @@
}
void
-bond_update_post_recirc_rules(struct bond* bond, const bool force)
+bond_update_post_recirc_rules(struct bond *bond, uint32_t *recirc_id,
+ uint32_t *hash_basis)
{
ovs_rwlock_wrlock(&rwlock);
- bond_update_post_recirc_rules__(bond, force);
+ if (bond_may_recirc(bond, recirc_id, hash_basis)) {
+ bond_update_post_recirc_rules__(bond, false);
+ }
ovs_rwlock_unlock(&rwlock);
}
+
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/bond.h
^
|
@@ -120,7 +120,8 @@
* Bond module pulls stats from those post recirculation rules. If rebalancing
* is needed, those rules are updated with new output actions.
*/
-void bond_update_post_recirc_rules(struct bond *, const bool force);
+void bond_update_post_recirc_rules(struct bond *, uint32_t *recirc_id,
+ uint32_t *hash_basis);
bool bond_may_recirc(const struct bond *, uint32_t *recirc_id,
uint32_t *hash_bias);
#endif /* bond.h */
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/connmgr.c
^
|
@@ -501,7 +501,7 @@
for (i = 0; i < N_SCHEDULERS; i++) {
if (ofconn->schedulers[i]) {
- const char *name = i ? "miss" : "action";
+ const char *name = i == 0 ? "miss" : "action";
struct pinsched_stats stats;
pinsched_get_stats(ofconn->schedulers[i], &stats);
@@ -754,12 +754,12 @@
if (!mgr->in_band) {
in_band_create(mgr->ofproto, mgr->local_port_name, &mgr->in_band);
}
- in_band_set_queue(mgr->in_band, mgr->in_band_queue);
} else {
/* in_band_run() needs a chance to delete any existing in-band flows.
* We will destroy mgr->in_band after it's done with that. */
}
if (mgr->in_band) {
+ in_band_set_queue(mgr->in_band, mgr->in_band_queue);
in_band_set_remotes(mgr->in_band, addrs, n_addrs);
}
@@ -2342,22 +2342,22 @@
struct ofconn *ofconn;
LIST_FOR_EACH (ofconn, node, &mgr->all_conns) {
- struct ofpbuf *msg;
+ struct rconn_packet_counter *counter = ofconn->monitor_counter;
+ struct ofpbuf *msg;
LIST_FOR_EACH_POP (msg, list_node, &ofconn->updates) {
- unsigned int n_bytes;
+ ofconn_send(ofconn, msg, counter);
+ }
- ofconn_send(ofconn, msg, ofconn->monitor_counter);
- n_bytes = rconn_packet_counter_n_bytes(ofconn->monitor_counter);
- if (!ofconn->monitor_paused && n_bytes > 128 * 1024) {
- struct ofpbuf *pause;
-
- COVERAGE_INC(ofmonitor_pause);
- ofconn->monitor_paused = monitor_seqno++;
- pause = ofpraw_alloc_xid(OFPRAW_NXT_FLOW_MONITOR_PAUSED,
- OFP10_VERSION, htonl(0), 0);
- ofconn_send(ofconn, pause, ofconn->monitor_counter);
- }
+ if (!ofconn->monitor_paused
+ && rconn_packet_counter_n_bytes(counter) > 128 * 1024) {
+ struct ofpbuf *pause;
+
+ COVERAGE_INC(ofmonitor_pause);
+ ofconn->monitor_paused = monitor_seqno++;
+ pause = ofpraw_alloc_xid(OFPRAW_NXT_FLOW_MONITOR_PAUSED,
+ OFP10_VERSION, htonl(0), 0);
+ ofconn_send(ofconn, pause, counter);
}
}
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/ofproto-dpif-ipfix.c
^
|
@@ -801,6 +801,15 @@
return true;
}
+static void
+remove_flow_exporter(struct dpif_ipfix *di,
+ struct dpif_ipfix_flow_exporter_map_node *node)
+{
+ hmap_remove(&di->flow_exporter_map, &node->node);
+ dpif_ipfix_flow_exporter_destroy(&node->exporter);
+ free(node);
+}
+
void
dpif_ipfix_set_options(
struct dpif_ipfix *di,
@@ -811,7 +820,6 @@
int i;
struct ofproto_ipfix_flow_exporter_options *options;
struct dpif_ipfix_flow_exporter_map_node *node, *next;
- size_t n_broken_flow_exporters_options = 0;
ovs_mutex_lock(&mutex);
dpif_ipfix_bridge_exporter_set_options(&di->bridge_exporter,
@@ -830,38 +838,29 @@
hash_int(options->collector_set_id, 0));
}
if (!dpif_ipfix_flow_exporter_set_options(&node->exporter, options)) {
- n_broken_flow_exporters_options++;
+ remove_flow_exporter(di, node);
}
options++;
}
- ovs_assert(hmap_count(&di->flow_exporter_map) >=
- (n_flow_exporters_options - n_broken_flow_exporters_options));
-
/* Remove dropped flow exporters, if any needs to be removed. */
- if (hmap_count(&di->flow_exporter_map) > n_flow_exporters_options) {
- HMAP_FOR_EACH_SAFE (node, next, node, &di->flow_exporter_map) {
- /* This is slow but doesn't take any extra memory, and
- * this table is not supposed to contain many rows anyway. */
- options = (struct ofproto_ipfix_flow_exporter_options *)
- flow_exporters_options;
- for (i = 0; i < n_flow_exporters_options; i++) {
- if (node->exporter.options->collector_set_id
- == options->collector_set_id) {
- break;
- }
- options++;
- }
- if (i == n_flow_exporters_options) { // Not found.
- hmap_remove(&di->flow_exporter_map, &node->node);
- dpif_ipfix_flow_exporter_destroy(&node->exporter);
- free(node);
+ HMAP_FOR_EACH_SAFE (node, next, node, &di->flow_exporter_map) {
+ /* This is slow but doesn't take any extra memory, and
+ * this table is not supposed to contain many rows anyway. */
+ options = (struct ofproto_ipfix_flow_exporter_options *)
+ flow_exporters_options;
+ for (i = 0; i < n_flow_exporters_options; i++) {
+ if (node->exporter.options->collector_set_id
+ == options->collector_set_id) {
+ break;
}
+ options++;
+ }
+ if (i == n_flow_exporters_options) { // Not found.
+ remove_flow_exporter(di, node);
}
}
- ovs_assert(hmap_count(&di->flow_exporter_map) ==
- (n_flow_exporters_options - n_broken_flow_exporters_options));
ovs_mutex_unlock(&mutex);
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/ofproto-dpif-sflow.c
^
|
@@ -884,7 +884,8 @@
{
/* Modeled on lib/odp-util.c: format_odp_tnl_push_header */
const struct ovs_action_push_tnl *data = nl_attr_get(attr);
- const struct eth_header *eth = (const struct eth_header *) data->header;
+ const struct eth_header *eth = ALIGNED_CAST(const struct eth_header *,
+ data->header);
const struct ip_header *ip
= ALIGNED_CAST(const struct ip_header *, eth + 1);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/ofproto-dpif-upcall.c
^
|
@@ -973,6 +973,7 @@
odp_port_t port;
uint32_t pid;
+ memset(&cookie, 0, sizeof cookie);
cookie.type = USER_ACTION_COOKIE_SLOW_PATH;
cookie.slow_path.unused = 0;
cookie.slow_path.reason = xout->slow;
@@ -1175,7 +1176,7 @@
upcall.put_actions.size);
}
- if (OVS_UNLIKELY(!megaflow)) {
+ if (OVS_UNLIKELY(!megaflow && wc)) {
flow_wildcards_init_for_packet(wc, flow);
}
@@ -1503,7 +1504,7 @@
bool megaflow;
struct odp_flow_key_parms odp_parms = {
.flow = upcall->flow,
- .mask = &wc->masks,
+ .mask = wc ? &wc->masks : NULL,
};
odp_parms.support = ofproto_dpif_get_support(upcall->ofproto)->odp;
@@ -1519,7 +1520,7 @@
atomic_read_relaxed(&enable_megaflows, &megaflow);
ofpbuf_use_stack(&maskbuf, &maskstub, sizeof maskstub);
- if (megaflow) {
+ if (megaflow && wc) {
odp_parms.odp_in_port = wc->masks.in_port.odp_port;
odp_parms.key_buf = &keybuf;
@@ -1566,20 +1567,20 @@
* relies on OVS userspace internal state, we need to delete all old
* datapath flows with either a non-zero recirc_id in the key, or any
* recirculation actions upon OVS restart. */
- NL_ATTR_FOR_EACH_UNSAFE (a, left, flow->key, flow->key_len) {
+ NL_ATTR_FOR_EACH (a, left, flow->key, flow->key_len) {
if (nl_attr_type(a) == OVS_KEY_ATTR_RECIRC_ID
&& nl_attr_get_u32(a) != 0) {
return EINVAL;
}
}
- NL_ATTR_FOR_EACH_UNSAFE (a, left, flow->actions, flow->actions_len) {
+ NL_ATTR_FOR_EACH (a, left, flow->actions, flow->actions_len) {
if (nl_attr_type(a) == OVS_ACTION_ATTR_RECIRC) {
return EINVAL;
}
}
dump_seq = seq_read(udpif->dump_seq);
- reval_seq = seq_read(udpif->reval_seq);
+ reval_seq = seq_read(udpif->reval_seq) - 1; /* Ensure revalidation. */
ofpbuf_use_const(&actions, &flow->actions, flow->actions_len);
*ukey = ukey_create__(flow->key, flow->key_len,
flow->mask, flow->mask_len, flow->ufid_present,
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/ofproto-dpif-xlate.c
^
|
@@ -948,6 +948,7 @@
mbridge_unref(xbridge->mbridge);
dpif_sflow_unref(xbridge->sflow);
dpif_ipfix_unref(xbridge->ipfix);
+ netflow_unref(xbridge->netflow);
stp_unref(xbridge->stp);
rstp_unref(xbridge->rstp);
hmap_destroy(&xbridge->xports);
@@ -1815,15 +1816,23 @@
struct flow_wildcards *wc = ctx->wc;
struct ofport_dpif *ofport;
- if (ctx->xbridge->support.odp.recirc) {
- use_recirc = bond_may_recirc(
- out_xbundle->bond, &xr.recirc_id, &xr.hash_basis);
-
- if (use_recirc) {
- /* Only TCP mode uses recirculation. */
+ if (ctx->xbridge->support.odp.recirc
+ && bond_may_recirc(out_xbundle->bond, NULL, NULL)) {
+ /* To avoid unnecessary locking, bond_may_recirc() is first
+ * called outside of the 'rwlock'. After acquiring the lock,
+ * bond_update_post_recirc_rules() will check again to make
+ * sure bond configuration has not been changed.
+ *
+ * In case recirculation is not actually in use, 'xr.recirc_id'
+ * will be set to '0', Since a valid 'recirc_id' can
+ * not be zero. */
+ bond_update_post_recirc_rules(out_xbundle->bond,
+ &xr.recirc_id,
+ &xr.hash_basis);
+ if (xr.recirc_id) {
+ /* Use recirculation instead of output. */
+ use_recirc = true;
xr.hash_alg = OVS_HASH_ALG_L4;
- bond_update_post_recirc_rules(out_xbundle->bond, false);
-
/* Recirculation does not require unmasking hash fields. */
wc = NULL;
}
@@ -2239,11 +2248,14 @@
xcfg = ovsrcu_get(struct xlate_cfg *, &xcfgp);
LIST_FOR_EACH(mrouter, mrouter_node, &ms->mrouter_lru) {
mcast_xbundle = xbundle_lookup(xcfg, mrouter->port);
- if (mcast_xbundle && mcast_xbundle != in_xbundle) {
+ if (mcast_xbundle && mcast_xbundle != in_xbundle
+ && mrouter->vlan == vlan) {
xlate_report(ctx, "forwarding to mcast router port");
output_normal(ctx, mcast_xbundle, vlan);
} else if (!mcast_xbundle) {
xlate_report(ctx, "mcast router port is unknown, dropping");
+ } else if (mrouter->vlan != vlan) {
+ xlate_report(ctx, "mcast router is on another vlan, dropping");
} else {
xlate_report(ctx, "mcast router port is input port, dropping");
}
@@ -2415,6 +2427,13 @@
struct mcast_group *grp = NULL;
if (is_igmp(flow, wc)) {
+ /*
+ * IGMP packets need to take the slow path, in order to be
+ * processed for mdb updates. That will prevent expires
+ * firing off even after hosts have sent reports.
+ */
+ ctx->xout->slow |= SLOW_ACTION;
+
memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src);
if (mcast_snooping_is_membership(flow->tp_src) ||
mcast_snooping_is_query(flow->tp_src)) {
@@ -2422,12 +2441,6 @@
update_mcast_snooping_table(ctx->xbridge, flow, vlan,
in_xbundle, ctx->xin->packet);
}
- /*
- * IGMP packets need to take the slow path, in order to be
- * processed for mdb updates. That will prevent expires
- * firing off even after hosts have sent reports.
- */
- ctx->xout->slow |= SLOW_ACTION;
}
if (mcast_snooping_is_membership(flow->tp_src)) {
@@ -2572,7 +2585,11 @@
return 0;
}
- union user_action_cookie cookie = { .type = USER_ACTION_COOKIE_SFLOW };
+ union user_action_cookie cookie;
+
+ memset(&cookie, 0, sizeof cookie);
+ cookie.type = USER_ACTION_COOKIE_SFLOW;
+
return compose_sample_action(ctx, dpif_sflow_get_probability(sflow),
&cookie, sizeof cookie.sflow, ODPP_NONE,
true);
@@ -2611,12 +2628,12 @@
}
}
- union user_action_cookie cookie = {
- .ipfix = {
- .type = USER_ACTION_COOKIE_IPFIX,
- .output_odp_port = output_odp_port,
- }
- };
+ union user_action_cookie cookie;
+
+ memset(&cookie, 0, sizeof cookie);
+ cookie.ipfix.type = USER_ACTION_COOKIE_IPFIX;
+ cookie.ipfix.output_odp_port = output_odp_port;
+
compose_sample_action(ctx,
dpif_ipfix_get_bridge_exporter_probability(ipfix),
&cookie, sizeof cookie.ipfix, tunnel_out_port,
@@ -2949,6 +2966,10 @@
}
return;
}
+ } else if ((xport->cfm && cfm_should_process_flow(xport->cfm, flow, wc))
+ || (xport->bfd && bfd_should_process_flow(xport->bfd, flow,
+ wc))) {
+ /* Pass; STP should not block link health detection. */
} else if (!xport_stp_forward_state(xport) ||
!xport_rstp_forward_state(xport)) {
if (ctx->xbridge->stp != NULL) {
@@ -3740,7 +3761,8 @@
return;
}
- flow_push_mpls(flow, n, mpls->ethertype, ctx->wc);
+ /* Update flow's MPLS stack, and clear L3/4 fields to mark them invalid. */
+ flow_push_mpls(flow, n, mpls->ethertype, ctx->wc, true);
}
static void
@@ -4080,15 +4102,15 @@
xlate_commit_actions(ctx);
- union user_action_cookie cookie = {
- .flow_sample = {
- .type = USER_ACTION_COOKIE_FLOW_SAMPLE,
- .probability = os->probability,
- .collector_set_id = os->collector_set_id,
- .obs_domain_id = os->obs_domain_id,
- .obs_point_id = os->obs_point_id,
- }
- };
+ union user_action_cookie cookie;
+
+ memset(&cookie, 0, sizeof cookie);
+ cookie.flow_sample.type = USER_ACTION_COOKIE_FLOW_SAMPLE;
+ cookie.flow_sample.probability = os->probability;
+ cookie.flow_sample.collector_set_id = os->collector_set_id;
+ cookie.flow_sample.obs_domain_id = os->obs_domain_id;
+ cookie.flow_sample.obs_point_id = os->obs_point_id;
+
compose_sample_action(ctx, probability, &cookie, sizeof cookie.flow_sample,
ODPP_NONE, false);
}
@@ -4330,9 +4352,9 @@
static void
compose_conntrack_action(struct xlate_ctx *ctx, struct ofpact_conntrack *ofc)
{
- ovs_u128 old_ct_label = ctx->base_flow.ct_label;
+ ovs_u128 old_ct_label = ctx->xin->flow.ct_label;
ovs_u128 old_ct_label_mask = ctx->wc->masks.ct_label;
- uint32_t old_ct_mark = ctx->base_flow.ct_mark;
+ uint32_t old_ct_mark = ctx->xin->flow.ct_mark;
uint32_t old_ct_mark_mask = ctx->wc->masks.ct_mark;
size_t ct_offset;
uint16_t zone;
@@ -4364,9 +4386,9 @@
/* Restore the original ct fields in the key. These should only be exposed
* after recirculation to another table. */
- ctx->base_flow.ct_mark = old_ct_mark;
+ ctx->xin->flow.ct_mark = old_ct_mark;
ctx->wc->masks.ct_mark = old_ct_mark_mask;
- ctx->base_flow.ct_label = old_ct_label;
+ ctx->xin->flow.ct_label = old_ct_label;
ctx->wc->masks.ct_label = old_ct_label_mask;
if (ofc->recirc_table == NX_CT_RECIRC_NONE) {
@@ -4377,6 +4399,7 @@
/* Use ct_* fields from datapath during recirculation upcall. */
ctx->conntracked = true;
compose_recirculate_and_fork(ctx, ofc->recirc_table);
+ ctx->conntracked = false;
}
}
@@ -5175,6 +5198,7 @@
ctx.table_id = state->table_id;
xlate_report(&ctx, "- Resuming from table %"PRIu8, ctx.table_id);
+ ctx.conntracked = state->conntracked;
if (!state->conntracked) {
clear_conntrack(flow);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/ofproto-dpif.c
^
|
@@ -97,6 +97,8 @@
* 'rule->new_rule->stats_mutex' must be held together, acquire them in that
* order, */
struct rule_dpif *new_rule OVS_GUARDED;
+ bool forward_counts OVS_GUARDED; /* Forward counts? 'used' time will be
+ * forwarded in all cases. */
/* If non-zero then the recirculation id that has
* been allocated for use with this rule.
@@ -1482,6 +1484,8 @@
hmap_destroy(&ofproto->bundles);
mac_learning_unref(ofproto->ml);
mcast_snooping_unref(ofproto->ms);
+ stp_unref(ofproto->stp);
+ rstp_unref(ofproto->rstp);
hmap_destroy(&ofproto->vlandev_map);
hmap_destroy(&ofproto->realdev_vid_map);
@@ -1691,7 +1695,12 @@
{
struct ofproto_dpif *ofproto = ofproto_dpif_cast(ofproto_);
- atomic_store_relaxed(&ofproto->tables_version, version);
+ /* Use memory_order_release to signify that any prior memory accesses can
+ * not be reordered to happen after this atomic store. This makes sure the
+ * new version is properly set up when the readers can read this 'version'
+ * value. */
+ atomic_store_explicit(&ofproto->tables_version, version,
+ memory_order_release);
}
@@ -3770,17 +3779,30 @@
ofpacts_len, 0, 0, packet);
}
+static void
+rule_dpif_credit_stats__(struct rule_dpif *rule,
+ const struct dpif_flow_stats *stats,
+ bool credit_counts)
+ OVS_REQUIRES(rule->stats_mutex)
+{
+ if (credit_counts) {
+ rule->stats.n_packets += stats->n_packets;
+ rule->stats.n_bytes += stats->n_bytes;
+ }
+ rule->stats.used = MAX(rule->stats.used, stats->used);
+}
+
void
rule_dpif_credit_stats(struct rule_dpif *rule,
const struct dpif_flow_stats *stats)
{
ovs_mutex_lock(&rule->stats_mutex);
if (OVS_UNLIKELY(rule->new_rule)) {
- rule_dpif_credit_stats(rule->new_rule, stats);
+ ovs_mutex_lock(&rule->new_rule->stats_mutex);
+ rule_dpif_credit_stats__(rule->new_rule, stats, rule->forward_counts);
+ ovs_mutex_unlock(&rule->new_rule->stats_mutex);
} else {
- rule->stats.n_packets += stats->n_packets;
- rule->stats.n_bytes += stats->n_bytes;
- rule->stats.used = MAX(rule->stats.used, stats->used);
+ rule_dpif_credit_stats__(rule, stats, true);
}
ovs_mutex_unlock(&rule->stats_mutex);
}
@@ -3837,8 +3859,12 @@
{
cls_version_t version;
- atomic_read_relaxed(&ofproto->tables_version, &version);
-
+ /* Use memory_order_acquire to signify that any following memory accesses
+ * can not be reordered to happen before this atomic read. This makes sure
+ * all following reads relate to this or a newer version, but never to an
+ * older version. */
+ atomic_read_explicit(&ofproto->tables_version, &version,
+ memory_order_acquire);
return version;
}
@@ -4111,17 +4137,18 @@
rule->stats.used = rule->up.modified;
rule->recirc_id = 0;
rule->new_rule = NULL;
+ rule->forward_counts = false;
return 0;
}
static void
-rule_insert(struct rule *rule_, struct rule *old_rule_, bool forward_stats)
+rule_insert(struct rule *rule_, struct rule *old_rule_, bool forward_counts)
OVS_REQUIRES(ofproto_mutex)
{
struct rule_dpif *rule = rule_dpif_cast(rule_);
- if (old_rule_ && forward_stats) {
+ if (old_rule_) {
struct rule_dpif *old_rule = rule_dpif_cast(old_rule_);
ovs_assert(!old_rule->new_rule);
@@ -4133,7 +4160,15 @@
ovs_mutex_lock(&old_rule->stats_mutex);
ovs_mutex_lock(&rule->stats_mutex);
old_rule->new_rule = rule; /* Forward future stats. */
- rule->stats = old_rule->stats; /* Transfer stats to the new rule. */
+ old_rule->forward_counts = forward_counts;
+
+ if (forward_counts) {
+ rule->stats = old_rule->stats; /* Transfer stats to the new
+ * rule. */
+ } else {
+ /* Used timestamp must be forwarded whenever a rule is modified. */
+ rule->stats.used = old_rule->stats.used;
+ }
ovs_mutex_unlock(&rule->stats_mutex);
ovs_mutex_unlock(&old_rule->stats_mutex);
}
@@ -5703,6 +5738,8 @@
ofm.fm.cookie_mask = htonll(0);
ofm.fm.modify_cookie = false;
ofm.fm.table_id = TBL_INTERNAL;
+ ofm.fm.out_port = OFPP_ANY;
+ ofm.fm.out_group = OFPG_ANY;
ofm.fm.flags = OFPUTIL_FF_HIDDEN_FIELDS | OFPUTIL_FF_NO_READONLY;
ofm.fm.command = OFPFC_DELETE_STRICT;
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/ofproto-provider.h
^
|
@@ -1198,8 +1198,9 @@
* must add the new rule to the datapath flow table and return only after
* this is complete. The 'new_rule' may be a duplicate of an 'old_rule'.
* In this case the 'old_rule' is non-null, and the implementation should
- * forward rule statistics from the 'old_rule' to the 'new_rule' if
- * 'forward_stats' is 'true'. This may not fail.
+ * forward rule statistics counts from the 'old_rule' to the 'new_rule' if
+ * 'forward_counts' is 'true', 'used' timestamp is always forwarded. This
+ * may not fail.
*
*
* Deletion
@@ -1222,7 +1223,7 @@
enum ofperr (*rule_construct)(struct rule *rule)
/* OVS_REQUIRES(ofproto_mutex) */;
void (*rule_insert)(struct rule *rule, struct rule *old_rule,
- bool forward_stats)
+ bool forward_counts)
/* OVS_REQUIRES(ofproto_mutex) */;
void (*rule_delete)(struct rule *rule) /* OVS_REQUIRES(ofproto_mutex) */;
void (*rule_destruct)(struct rule *rule);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/ofproto-unixctl.man
^
|
@@ -135,10 +135,3 @@
OpenFlow version. One exception is that, when \fIactions\fR includes
an action that only OpenFlow 1.1 and later supports (such as
\fBpush_vlan\fR), \fB\-consistent\fR is automatically enabled.
-.IP "\fBofproto/self\-check\fR [\fIswitch\fR]"
-Runs an internal consistency check on \fIswitch\fR, if specified,
-otherwise on all ofproto instances, and responds with a brief summary
-of the results. If the summary reports any errors, then the Open
-vSwitch logs should contain more detailed information. Please pass
-along errors reported by this command to the Open vSwitch developers
-as bugs.
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/ofproto.c
^
|
@@ -3241,7 +3241,7 @@
features.n_tables = ofproto_get_n_visible_tables(ofproto);
features.capabilities = (OFPUTIL_C_FLOW_STATS | OFPUTIL_C_TABLE_STATS |
OFPUTIL_C_PORT_STATS | OFPUTIL_C_QUEUE_STATS |
- OFPUTIL_C_GROUP_STATS);
+ OFPUTIL_C_GROUP_STATS | OFPUTIL_C_BUNDLES);
if (arp_match_ip) {
features.capabilities |= OFPUTIL_C_ARP_MATCH_IP;
}
@@ -4824,17 +4824,18 @@
struct ovs_list *dead_cookies)
OVS_REQUIRES(ofproto_mutex)
{
- bool forward_stats = !(fm->flags & OFPUTIL_FF_RESET_COUNTS);
+ bool forward_counts = !(fm->flags & OFPUTIL_FF_RESET_COUNTS);
struct rule *replaced_rule;
replaced_rule = fm->delete_reason != OFPRR_EVICTION ? old_rule : NULL;
/* Insert the new flow to the ofproto provider. A non-NULL 'replaced_rule'
* is a duplicate rule the 'new_rule' is replacing. The provider should
- * link the stats from the old rule to the new one if 'forward_stats' is
- * 'true'. The 'replaced_rule' will be deleted right after this call. */
+ * link the packet and byte counts from the old rule to the new one if
+ * 'forward_counts' is 'true'. The 'replaced_rule' will be deleted right
+ * after this call. */
ofproto->ofproto_class->rule_insert(new_rule, replaced_rule,
- forward_stats);
+ forward_counts);
learned_cookies_inc(ofproto, rule_get_actions(new_rule));
if (old_rule) {
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/pinsched.c
^
|
@@ -94,6 +94,12 @@
static void
pinqueue_destroy(struct pinsched *ps, struct pinqueue *q)
{
+ if (ps->next_txq == q) {
+ advance_txq(ps);
+ if (ps->next_txq == q) {
+ ps->next_txq = NULL;
+ }
+ }
hmap_remove(&ps->queues, &q->node);
free(q);
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ofproto/tunnel.c
^
|
@@ -435,6 +435,7 @@
goto out;
}
+ flow->tunnel.tp_dst = cfg->dst_port;
flow->pkt_mark |= tnl_port->match.pkt_mark;
wc->masks.pkt_mark |= tnl_port->match.pkt_mark;
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ovn/lib/lex.c
^
|
@@ -275,13 +275,15 @@
if (hexit < 0) {
lex_error(token, "Invalid syntax in hexadecimal constant.");
return;
+ } else if (hexit) {
+ /* Check within loop to ignore any number of leading zeros. */
+ if (i / 2 >= sizeof token->value.u8) {
+ lex_error(token, "Hexadecimal constant requires more than "
+ "%"PRIuSIZE" bits.", 8 * sizeof token->value.u8);
+ return;
+ }
+ out[-(i / 2)] |= i % 2 ? hexit << 4 : hexit;
}
- if (hexit && i / 2 >= sizeof token->value.u8) {
- lex_error(token, "Hexadecimal constant requires more than "
- "%"PRIuSIZE" bits.", 8 * sizeof token->value.u8);
- return;
- }
- out[-(i / 2)] |= i % 2 ? hexit << 4 : hexit;
}
token->format = LEX_F_HEXADECIMAL;
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ovn/northd/ovn-northd.c
^
|
@@ -210,11 +210,17 @@
}
static uint32_t
+next_tnlid(uint32_t tnlid, uint32_t max)
+{
+ return tnlid + 1 <= max ? tnlid + 1 : 1;
+}
+
+static uint32_t
allocate_tnlid(struct hmap *set, const char *name, uint32_t max,
uint32_t *hint)
{
- for (uint32_t tnlid = *hint + 1; tnlid != *hint;
- tnlid = tnlid + 1 <= max ? tnlid + 1 : 1) {
+ for (uint32_t tnlid = next_tnlid(*hint, max); tnlid != *hint;
+ tnlid = next_tnlid(tnlid, max)) {
if (!tnlid_in_use(set, tnlid)) {
add_tnlid(set, tnlid);
*hint = tnlid;
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ovn/ovn-sb.xml
^
|
@@ -501,7 +501,7 @@
</p>
<p>
- Any use of a nominal field may specify a single bit or a range of
+ Any use of a ordinal field may specify a single bit or a range of
bits, e.g. <code>vlan.tci[13..15]</code> refers to the PCP field
within the VLAN TCI, and <code>eth.dst[40]</code> refers to the
multicast bit in the Ethernet destination address.
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/ovsdb/ovsdb-client.c
^
|
@@ -1072,9 +1072,9 @@
for (i = 1; i < argc; i++) {
node = shash_find(&tschema->columns, argv[i]);
if (!node) {
- ovs_fatal(0, "Table \"%s\" has no column %s.", argv[0], argv[1]);
+ ovs_fatal(0, "Table \"%s\" has no column %s.", argv[0], argv[i]);
}
- shash_add(&custom_columns, argv[1], node->data);
+ shash_add(&custom_columns, argv[i], node->data);
}
} else {
tables = shash_sort(&schema->tables);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/package.m4
^
|
@@ -1,6 +1,6 @@
# Signature of the current package.
m4_define([AT_PACKAGE_NAME], [openvswitch])
m4_define([AT_PACKAGE_TARNAME], [openvswitch])
-m4_define([AT_PACKAGE_VERSION], [2.5.1])
-m4_define([AT_PACKAGE_STRING], [openvswitch 2.5.1])
+m4_define([AT_PACKAGE_VERSION], [2.5.9])
+m4_define([AT_PACKAGE_STRING], [openvswitch 2.5.9])
m4_define([AT_PACKAGE_BUGREPORT], [bugs@openvswitch.org])
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/python/ovs/stream.py
^
|
@@ -361,6 +361,10 @@
error, sock = ovs.socket_util.inet_open_active(socket.SOCK_STREAM,
suffix, 0, dscp)
if not error:
- sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
+ try:
+ sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
+ except socket.error as e:
+ sock.close()
+ return ovs.socket_util.get_exception_errno(e), None
return error, sock
Stream.register_method("tcp", TCPStream)
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/python/ovs/version.py
^
|
@@ -1,2 +1,2 @@
# Generated automatically -- do not modify! -*- buffer-read-only: t -*-
-VERSION = "2.5.1"
+VERSION = "2.5.9"
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/python/ovs/vlog.py
^
|
@@ -136,7 +136,7 @@
min_width = int(matches.group(2))
if len(replace) < min_width:
replace = replace.center(min_width)
- return re.sub(match, replace, tmp)
+ return re.sub(match, replace.replace('\\', r'\\'), tmp)
def _format_time(self, tmp):
date_regex = re.compile('(%(0?[1-9]?[dD])(\{(.*)\})?)')
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/automake.mk
^
|
@@ -26,7 +26,8 @@
rhel/usr_share_openvswitch_scripts_sysconfig.template \
rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
rhel/usr_lib_systemd_system_openvswitch.service \
- rhel/usr_lib_systemd_system_openvswitch-nonetwork.service \
+ rhel/usr_lib_systemd_system_ovsdb-server.service \
+ rhel/usr_lib_systemd_system_ovs-vswitchd.service \
rhel/usr_lib_systemd_system_ovn-controller.service \
rhel/usr_lib_systemd_system_ovn-controller-vtep.service \
rhel/usr_lib_systemd_system_ovn-northd.service
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/etc_sysconfig_network-scripts_ifdown-ovs
^
|
@@ -34,10 +34,10 @@
OTHERSCRIPT="/etc/sysconfig/network-scripts/ifdown-eth"
fi
-SERVICE_UNIT=/usr/lib/systemd/system/openvswitch-nonetwork.service
+SERVICE_UNIT=/usr/lib/systemd/system/ovsdb-server.service
if [ -f $SERVICE_UNIT ] && [ -x /usr/bin/systemctl ]; then
- if ! systemctl --quiet is-active openvswitch-nonetwork.service; then
- systemctl start openvswitch-nonetwork.service
+ if ! systemctl --quiet is-active ovsdb-server.service; then
+ systemctl start ovsdb-server.service
fi
else
if [ ! -f /var/lock/subsys/openvswitch ]; then
@@ -59,7 +59,7 @@
OVSPatchPort|OVSTunnel)
ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
;;
- OVSDPDKPort|OVSDPDKRPort|OVSDPDKVhostPort|OVSDPDKVhostUserPort)
+ OVSDPDKPort|OVSDPDKRPort|OVSDPDKVhostPort|OVSDPDKVhostUserPort|OVSDPDKBond)
ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
;;
*)
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/etc_sysconfig_network-scripts_ifup-ovs
^
|
@@ -60,10 +60,10 @@
fi
done
-SERVICE_UNIT=/usr/lib/systemd/system/openvswitch-nonetwork.service
+SERVICE_UNIT=/usr/lib/systemd/system/openvswitch.service
if [ -f $SERVICE_UNIT ] && [ -x /usr/bin/systemctl ]; then
- if ! systemctl --quiet is-active openvswitch-nonetwork.service; then
- systemctl start openvswitch-nonetwork.service
+ if ! systemctl --quiet is-active openvswitch.service; then
+ systemctl start openvswitch.service
fi
else
if [ ! -f /var/lock/subsys/openvswitch ]; then
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/openvswitch-dkms.spec
^
|
@@ -11,7 +11,7 @@
%define oname openvswitch
Name: %{oname}-dkms
-Version: 2.5.1
+Version: 2.5.9
Release: 1%{?dist}
Summary: Open vSwitch kernel module
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/openvswitch-fedora.spec
^
|
@@ -33,7 +33,7 @@
Summary: Open vSwitch
Group: System Environment/Daemons
URL: http://www.openvswitch.org/
-Version: 2.5.1
+Version: 2.5.9
# Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the
# lib/sflow*.[ch] files are SISSL
@@ -153,7 +153,7 @@
install -p -D -m 0644 \
rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
$RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/openvswitch
-for service in openvswitch openvswitch-nonetwork \
+for service in openvswitch ovsdb-server ovs-vswitchd \
ovn-controller ovn-controller-vtep ovn-northd; do
install -p -D -m 0644 \
rhel/usr_lib_systemd_system_${service}.service \
@@ -201,8 +201,7 @@
%check
%if %{with check}
- if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
- make check TESTSUITEFLAGS='--recheck'; then :;
+ if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :;
else
cat tests/testsuite.log
exit 1
@@ -266,14 +265,10 @@
/usr/sbin/semodule -i %{_datadir}/selinux/packages/%{name}/openvswitch-custom.pp &> /dev/null || :
%postun
-%if 0%{?systemd_postun_with_restart:1}
- %systemd_postun_with_restart %{name}.service
+%if 0%{?systemd_postun:1}
+ %systemd_postun %{name}.service
%else
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
- if [ "$1" -ge "1" ] ; then
- # Package upgrade, not uninstall
- /bin/systemctl try-restart %{name}.service >/dev/null 2>&1 || :
- fi
%endif
%postun ovn
@@ -330,7 +325,8 @@
%config(noreplace) %{_sysconfdir}/sysconfig/openvswitch
%config(noreplace) %{_sysconfdir}/logrotate.d/openvswitch
%{_unitdir}/openvswitch.service
-%{_unitdir}/openvswitch-nonetwork.service
+%{_unitdir}/ovsdb-server.service
+%{_unitdir}/ovs-vswitchd.service
%{_datadir}/openvswitch/scripts/openvswitch.init
%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/openvswitch-fedora.spec.in
^
|
@@ -152,7 +152,7 @@
install -p -D -m 0644 \
rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
$RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/openvswitch
-for service in openvswitch openvswitch-nonetwork \
+for service in openvswitch ovsdb-server ovs-vswitchd \
ovn-controller ovn-controller-vtep ovn-northd; do
install -p -D -m 0644 \
rhel/usr_lib_systemd_system_${service}.service \
@@ -200,8 +200,7 @@
%check
%if %{with check}
- if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
- make check TESTSUITEFLAGS='--recheck'; then :;
+ if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :;
else
cat tests/testsuite.log
exit 1
@@ -265,14 +264,10 @@
/usr/sbin/semodule -i %{_datadir}/selinux/packages/%{name}/openvswitch-custom.pp &> /dev/null || :
%postun
-%if 0%{?systemd_postun_with_restart:1}
- %systemd_postun_with_restart %{name}.service
+%if 0%{?systemd_postun:1}
+ %systemd_postun %{name}.service
%else
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
- if [ "$1" -ge "1" ] ; then
- # Package upgrade, not uninstall
- /bin/systemctl try-restart %{name}.service >/dev/null 2>&1 || :
- fi
%endif
%postun ovn
@@ -329,7 +324,8 @@
%config(noreplace) %{_sysconfdir}/sysconfig/openvswitch
%config(noreplace) %{_sysconfdir}/logrotate.d/openvswitch
%{_unitdir}/openvswitch.service
-%{_unitdir}/openvswitch-nonetwork.service
+%{_unitdir}/ovsdb-server.service
+%{_unitdir}/ovs-vswitchd.service
%{_datadir}/openvswitch/scripts/openvswitch.init
%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/openvswitch-kmod-fedora.spec
^
|
@@ -17,7 +17,7 @@
Group: System Environment/Daemons
URL: http://www.openvswitch.org/
Vendor: OpenSource Security Ralf Spenneberg <ralf@os-s.net>
-Version: 2.5.1
+Version: 2.5.9
# The entire source code is ASL 2.0 except datapath/ which is GPLv2
License: GPLv2
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/openvswitch-kmod-rhel6.spec
^
|
@@ -12,7 +12,7 @@
%define oname openvswitch
Name: %{oname}-kmod
-Version: 2.5.1
+Version: 2.5.9
Release: 1%{?dist}
Summary: Open vSwitch kernel module
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/openvswitch.spec
^
|
@@ -17,7 +17,7 @@
Group: System Environment/Daemons
URL: http://www.openvswitch.org/
Vendor: Nicira, Inc.
-Version: 2.5.1
+Version: 2.5.9
License: ASL 2.0
Release: 1
@@ -77,8 +77,7 @@
%check
%if %{with check}
- if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
- make check TESTSUITEFLAGS='--recheck'; then :;
+ if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :;
else
cat tests/testsuite.log
exit 1
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/openvswitch.spec.in
^
|
@@ -76,8 +76,7 @@
%check
%if %{with check}
- if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
- make check TESTSUITEFLAGS='--recheck'; then :;
+ if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :;
else
cat tests/testsuite.log
exit 1
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/rhel/usr_lib_systemd_system_openvswitch.service
^
|
@@ -1,11 +1,15 @@
[Unit]
Description=Open vSwitch
-After=syslog.target network.target openvswitch-nonetwork.service
-Requires=openvswitch-nonetwork.service
+Before=network.target network.service
+After=network-pre.target
+PartOf=network.target
+BindsTo=ovsdb-server.service
+BindsTo=ovs-vswitchd.service
[Service]
Type=oneshot
ExecStart=/bin/true
+ExecReload=/bin/true
ExecStop=/bin/true
RemainAfterExit=yes
|
[-]
[+]
|
Added |
openvswitch-2.5.9.tar.gz/rhel/usr_lib_systemd_system_ovs-vswitchd.service
^
|
@@ -0,0 +1,19 @@
+[Unit]
+Description=Open vSwitch Forwarding Unit
+After=ovsdb-server.service network-pre.target
+Before=network.target network.service
+Requires=ovsdb-server.service
+ReloadPropagatedFrom=ovsdb-server.service
+AssertPathIsReadWrite=/var/run/openvswitch/db.sock
+PartOf=openvswitch.service
+
+[Service]
+Type=forking
+EnvironmentFile=-/etc/sysconfig/openvswitch
+ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
+ --no-ovsdb-server --no-monitor --system-id=random \
+ start $OPTIONS
+ExecStop=/usr/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server stop
+ExecReload=/usr/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server \
+ --no-monitor --system-id=random \
+ restart $OPTIONS
|
[-]
[+]
|
Added |
openvswitch-2.5.9.tar.gz/rhel/usr_lib_systemd_system_ovsdb-server.service
^
|
@@ -0,0 +1,18 @@
+[Unit]
+Description=Open vSwitch Database Unit
+After=syslog.target network-pre.target
+Before=network.target network.service
+ReloadPropagatedFrom=openvswitch.service
+PartOf=openvswitch.service
+
+[Service]
+Type=forking
+EnvironmentFile=-/etc/sysconfig/openvswitch
+ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
+ --no-ovs-vswitchd --no-monitor --system-id=random \
+ start $OPTIONS
+ExecStop=/usr/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd stop
+ExecReload=/usr/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd \
+ --no-monitor restart $OPTIONS
+RuntimeDirectory=openvswitch
+RuntimeDirectoryMode=0755
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/atlocal.in
^
|
@@ -98,7 +98,12 @@
esac
# Check whether to run IPv6 tests.
-if perl -e 'use Socket; socket(FH, PF_INET6, SOCK_STREAM, 0) || exit 1;'; then
+if perl -e '
+ use Socket qw(PF_INET6 SOCK_STREAM pack_sockaddr_in6 IN6ADDR_LOOPBACK);
+
+ socket(S, PF_INET6, SOCK_STREAM, 0) || exit 1;
+ bind(S, pack_sockaddr_in6(0, IN6ADDR_LOOPBACK)) || exit 1;
+'; then
HAVE_IPV6=yes
else
HAVE_IPV6=no
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/automake.mk
^
|
@@ -92,7 +92,8 @@
tests/ovn-nbctl.at \
tests/ovn-sbctl.at \
tests/ovn-controller.at \
- tests/ovn-controller-vtep.at
+ tests/ovn-controller-vtep.at \
+ tests/mcast-snooping.at
SYSTEM_KMOD_TESTSUITE_AT = \
tests/system-common-macros.at \
@@ -116,7 +117,8 @@
AUTOTEST_PATH = utilities:vswitchd:ovsdb:vtep:tests:$(PTHREAD_WIN32_DIR_DLL):ovn/controller-vtep:ovn/northd:ovn/utilities:ovn/controller
check-local: tests/atconfig tests/atlocal $(TESTSUITE)
- $(SHELL) '$(TESTSUITE)' -C tests AUTOTEST_PATH=$(AUTOTEST_PATH) $(TESTSUITEFLAGS)
+ set $(SHELL) '$(TESTSUITE)' -C tests AUTOTEST_PATH=$(AUTOTEST_PATH) $(TESTSUITEFLAGS); \
+ "$$@" || (test X'$(RECHECK)' = Xyes && "$$@" --recheck)

# Python Coverage support.
# Requires coverage.py http://nedbatchelder.com/code/coverage/.
@@ -175,7 +177,7 @@
tests/valgrind/test-vconn
$(valgrind_wrappers): tests/valgrind-wrapper.in
- @test -d tests/valgrind || mkdir tests/valgrind
+ @$(MKDIR_P) tests/valgrind
$(AM_V_GEN) sed -e 's,[@]wrap_program[@],$@,' \
$(top_srcdir)/tests/valgrind-wrapper.in > $@.tmp && \
chmod +x $@.tmp && \
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/bfd.at
^
|
@@ -794,3 +794,39 @@
OVS_VSWITCHD_STOP
AT_CLEANUP
+
+AT_SETUP([bfd - check that BFD works together with RSTP])
+# Create br0 with interfaces p1
+# and br1 with interfaces p2
+# with p1 and p2 connected via unix domain socket
+OVS_VSWITCHD_START(
+ [set bridge br0 rstp_enable=true -- \
+ add-br br1 -- \
+ set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \
+ set bridge br1 datapath-type=dummy -- \
+ set bridge br1 rstp_enable=true -- \
+])
+
+AT_CHECK([ovs-vsctl add-port br0 p1 -- \
+ set interface p1 type=dummy options:pstream=punix:$OVS_RUNDIR/p0.sock bfd:enable=true -- \
+])
+
+AT_CHECK([ovs-vsctl add-port br1 p2 -- \
+ set interface p2 type=dummy options:stream=unix:$OVS_RUNDIR/p0.sock bfd:enable=true -- \
+])
+
+ovs-appctl time/stop
+ovs-appctl time/warp 4100 100
+
+# Forwarding should be true
+BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+BFD_CHECK([p2], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+
+# Disable bfd on p2, forwarding on p1 should go to false
+AT_CHECK([ovs-vsctl set interface p2 bfd:enable=false])
+
+ovs-appctl time/warp 5000 100
+BFD_CHECK([p1], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
+
+OVS_VSWITCHD_STOP
+AT_CLEANUP
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/cfm.at
^
|
@@ -283,3 +283,39 @@
OVS_VSWITCHD_STOP
AT_CLEANUP
+
+AT_SETUP([cfm - check that CFM works together with RSTP])
+# Create br0 with interfaces p1
+# and br1 with interfaces p2
+# with p1 and p2 connected via unix domain socket
+OVS_VSWITCHD_START(
+ [set bridge br0 rstp_enable=true -- \
+ add-br br1 -- \
+ set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \
+ set bridge br1 datapath-type=dummy -- \
+ set bridge br1 rstp_enable=true -- \
+])
+
+AT_CHECK([ovs-vsctl add-port br0 p0 -- \
+ set interface p0 type=dummy options:pstream=punix:$OVS_RUNDIR/p0.sock cfm_mpid=1 other_config:cfm_interval=300 other_config:cfm_extended=true -- \
+])
+
+AT_CHECK([ovs-vsctl add-port br1 p1 -- \
+ set interface p1 type=dummy options:stream=unix:$OVS_RUNDIR/p0.sock cfm_mpid=2 other_config:cfm_interval=300 other_config:cfm_extended=true -- \
+])
+
+ovs-appctl time/stop
+ovs-appctl time/warp 10100 100
+
+# Forwarding should be true
+CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [300ms], [2], [up])
+CFM_CHECK_EXTENDED([p1], [2], [100], [up], [up], [300ms], [1], [up])
+
+# Disable cfm on p1, cfm should receive fault.
+AT_CHECK([ovs-vsctl set interface p1 other_config:cfm_extended=false])
+
+ovs-appctl time/warp 5000 100
+CFM_CHECK_EXTENDED_FAULT([p0], [1], [recv], [0], [up], [up], [300ms])
+
+OVS_VSWITCHD_STOP
+AT_CLEANUP
|
[-]
[+]
|
Added |
openvswitch-2.5.9.tar.gz/tests/mcast-snooping.at
^
|
@@ -0,0 +1,67 @@
+AT_BANNER([mcast snooping])
+
+AT_SETUP([mcast - check multicasts to trunk ports are not duplicated])
+
+OVS_VSWITCHD_START([])
+
+AT_CHECK([
+ ovs-vsctl set bridge br0 \
+ datapath_type=dummy \
+ mcast_snooping_enable=true \
+ other-config:mcast-snooping-disable-flood-unregistered=true
+], [0])
+
+AT_CHECK([ovs-ofctl add-flow br0 action=normal])
+
+# Create an access port p1 on vlan 1725, and a trunk port p2.
+AT_CHECK([
+ ovs-vsctl add-port br0 p1 tag=1725 -- set Interface p1 type=dummy \
+ other-config:hwaddr=aa:55:aa:55:00:01 ofport_request=1 \
+ -- add-port br0 p2 -- set Interface p2 type=dummy \
+ other-config:hwaddr=aa:55:aa:55:00:02 ofport_request=2
+], [0])
+
+AT_CHECK([ovs-appctl dpif/show], [0], [dnl
+dummy@ovs-dummy: hit:0 missed:0
+ br0:
+ br0 65534/100: (dummy)
+ p1 1/1: (dummy)
+ p2 2/2: (dummy)
+])
+
+# Send IGMPv3 query on p2 with vlan 1725
+# 5c:8a:38:55:25:52 > 01:00:5e:00:00:01, ethertype 802.1Q (0x8100), length 64: vlan 1725, p 0, ethertype IPv4,
+# 172.17.25.1 > 224.0.0.1: igmp query v3
+AT_CHECK([ovs-appctl netdev-dummy/receive p2 \
+'01005e0000015c8a38552552810006bd080046c000240000000001027f00ac111901e0000001940400001164ec1e00000000027d000000000000000000000000'])
+
+# Send IGMPv3 query on p2 with vlan 1728
+# 5c:8a:38:55:25:52 > 01:00:5e:00:00:01, ethertype 802.1Q (0x8100), length 64: vlan 1728, p 0, ethertype IPv4,
+# 172.17.28.1 > 224.0.0.1: igmp query v3
+AT_CHECK([ovs-appctl netdev-dummy/receive p2 \
+'01005e0000015c8a38552552810006c0080046c000240000000001027c00ac111c01e0000001940400001164ec1e00000000027d000000000000000000000000'])
+
+AT_CHECK([ovs-appctl mdb/show br0], [0], [dnl
+ port VLAN GROUP Age
+ 2 1725 querier 0
+ 2 1728 querier 0
+])
+
+AT_CHECK([ovs-vsctl set Interface p2 options:tx_pcap=p2.pcap])
+
+# Send a multicast packet on p1
+AT_CHECK([
+ ovs-appctl netdev-dummy/receive p1 \
+ 'in_port(1),eth(src=aa:55:aa:55:00:01,dst=01:00:5e:5e:01:01),eth_type(0x0800),ipv4(src=10.0.0.1,dst=239.94.1.1,proto=17,tos=0,ttl=64,frag=no),udp(src=0,dst=8000)'
+])
+
+# Check this packet was forwarded exactly once to p2 and has vlan tag 1725
+# aa:55:aa:55:00:01 > 01:00:5e:5e:01:01, ethertype 802.1Q (0x8100), length 46: vlan 1725, p 0, ethertype IPv4,
+# 10.0.0.1.0 > 239.94.1.1.8000: UDP, length 0
+AT_CHECK([ovs-pcap p2.pcap > p2.pcap.txt 2>&1])
+AT_CHECK([cat p2.pcap.txt], [0], [dnl
+01005e5e0101aa55aa550001810006bd08004500001c00000000401180710a000001ef5e010100001f4000000000000000000000000000000000000000000000
+])
+
+OVS_VSWITCHD_STOP
+AT_CLEANUP
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/mpls-xlate.at
^
|
@@ -62,3 +62,67 @@
OVS_VSWITCHD_STOP
AT_CLEANUP
+
+AT_SETUP([MPLS xlate action - patch-port])
+
+OVS_VSWITCHD_START(
+ [add-port br0 p0 -- set Interface p0 type=dummy ofport_request=1 -- \
+ add-port br0 p1 -- set Interface p1 type=patch \
+ options:peer=p2 ofport_request=2 -- \
+ add-br br1 -- \
+ set bridge br1 other-config:hwaddr=aa:66:aa:66:00:00 -- \
+ set bridge br1 datapath-type=dummy other-config:datapath-id=1234 \
+ fail-mode=secure -- \
+ add-port br1 p2 -- set Interface p2 type=patch \
+ options:peer=p1 -- \
+ add-port br1 p3 -- set Interface p3 type=dummy ofport_request=3])
+
+AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg ofproto_dpif_upcall:dbg])
+
+AT_CHECK([ovs-appctl dpif/show], [0], [dnl
+dummy@ovs-dummy: hit:0 missed:0
+ br0:
+ br0 65534/100: (dummy)
+ p0 1/1: (dummy)
+ p1 2/none: (patch: peer=p2)
+ br1:
+ br1 65534/101: (dummy)
+ p2 1/none: (patch: peer=p1)
+ p3 3/3: (dummy)
+])
+
+dnl MPLS PUSH + POP.
+AT_CHECK([ovs-ofctl del-flows br0])
+
+AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 in_port=local,ip,actions=2,1,1])
+
+AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br1 in_port=1,ip,actions=dec_ttl,push_mpls:0x8847,3])
+
+dnl MPLS push+pop
+AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(100),eth(src=f8:bc:12:44:34:b6,dst=f8:bc:12:46:58:e0),eth_type(0x0800),ipv4(src=10.1.1.22,dst=10.0.0.3,proto=6,tos=0,ttl=64,frag=no),tcp(src=53295,dst=8080)'], [0], [stdout])
+AT_CHECK([tail -1 stdout], [0],
+ [Datapath actions: set(ipv4(ttl=63)),push_mpls(label=0,tc=0,ttl=63,bos=1,eth_type=0x8847),3,pop_mpls(eth_type=0x800),set(ipv4(tos=0/0xfc,ttl=64)),1,1
+])
+
+OVS_VSWITCHD_STOP
+AT_CLEANUP
+
+AT_SETUP([MPLS xlate action - group bucket])
+
+OVS_VSWITCHD_START
+ADD_OF_PORTS([br0], [1])
+
+AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg ofproto_dpif_upcall:dbg])
+
+AT_CHECK([ovs-ofctl del-flows br0])
+AT_CHECK([ovs-ofctl -O OpenFlow13 add-group br0 'group_id=1234,type=all,bucket=push_mpls:0x8847,output:1'])
+AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 in_port=local,ip,actions=group:1234,output:1,output:1])
+
+dnl MPLS push in a bucket
+AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(100),eth(src=f8:bc:12:44:34:b6,dst=f8:bc:12:46:58:e0),eth_type(0x0800),ipv4(src=10.1.1.22,dst=10.0.0.3,proto=6,tos=0,ttl=64,frag=no),tcp(src=53295,dst=8080)'], [0], [stdout])
+AT_CHECK([tail -1 stdout], [0],
+ [Datapath actions: push_mpls(label=0,tc=0,ttl=64,bos=1,eth_type=0x8847),1,pop_mpls(eth_type=0x800),1,1
+])
+
+OVS_VSWITCHD_STOP
+AT_CLEANUP
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/ofp-print.at
^
|
@@ -403,6 +403,30 @@
])
AT_CLEANUP
+AT_SETUP([OFPT_FEATURES_REPLY - OF1.4])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 06 00 20 00 00 00 01 00 00 50 54 00 00 00 01 \
+00 00 01 00 ff 00 00 00 00 00 07 6f 00 00 00 00 \
+"], [0], [dnl
+OFPT_FEATURES_REPLY (OF1.4) (xid=0x1): dpid:0000505400000001
+n_tables:255, n_buffers:256
+capabilities: FLOW_STATS TABLE_STATS PORT_STATS GROUP_STATS IP_REASM QUEUE_STATS PORT_BLOCKED BUNDLES FLOW_MONITORING
+])
+AT_CLEANUP
+
+AT_SETUP([OFPT_FEATURES_REPLY - OF1.5])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+06 06 00 20 00 00 00 01 00 00 50 54 00 00 00 01 \
+00 00 01 00 ff 00 00 00 00 00 07 6f 00 00 00 00 \
+"], [0], [dnl
+OFPT_FEATURES_REPLY (OF1.5) (xid=0x1): dpid:0000505400000001
+n_tables:255, n_buffers:256
+capabilities: FLOW_STATS TABLE_STATS PORT_STATS GROUP_STATS IP_REASM QUEUE_STATS PORT_BLOCKED BUNDLES FLOW_MONITORING
+])
+AT_CLEANUP
+
AT_SETUP([OFPT_FEATURES_REPLY - with auxiliary_id - OF1.3])
AT_KEYWORDS([ofp-print])
AT_CHECK([ovs-ofctl ofp-print "\
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/ofproto-dpif.at
^
|
@@ -1542,6 +1542,40 @@
OVS_VSWITCHD_STOP
AT_CLEANUP
+AT_SETUP([ofproto-dpif - controller action without megaflows])
+OVS_VSWITCHD_START
+ADD_OF_PORTS([br0], [1])
+
+AT_CHECK([ovs-ofctl add-flow br0 in_port=1,action=controller])
+AT_CHECK([ovs-appctl upcall/disable-megaflows], [0], [dnl
+megaflows disabled
+])
+
+AT_CAPTURE_FILE([ofctl_monitor.log])
+AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
+
+for i in 1 2; do
+ AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x1234)'])
+done
+
+OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 4])
+OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
+
+AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/.*\(packets:\)/\1/' | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
+flow-dump from non-dpdk interfaces:
+packets:1, bytes:60, used:0.001s, actions:userspace(pid=0,slow_path(controller))
+])
+
+AT_CHECK([cat ofctl_monitor.log], [0], [dnl
+NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
+vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
+NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via action) data_len=60 (unbuffered)
+vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
+])
+
+OVS_VSWITCHD_STOP
+AT_CLEANUP
+
AT_SETUP([ofproto-dpif - MPLS handling])
OVS_VSWITCHD_START([dnl
add-port br0 p1 -- set Interface p1 type=dummy
@@ -3690,11 +3724,11 @@
OVS_VSWITCHD_START
ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])
AT_DATA([flows.txt], [dnl
-priority=75 tcp ip_frag=no tp_dst=80 actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:1
-priority=75 tcp ip_frag=first tp_dst=80 actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:2
-priority=50 tcp ip_frag=no actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:4
-priority=50 tcp ip_frag=first actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:5
-priority=50 tcp ip_frag=later actions=output:6
+priority=75 tcp nw_frag=no tp_dst=80 actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:1
+priority=75 tcp nw_frag=first tp_dst=80 actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:2
+priority=50 tcp nw_frag=no actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:4
+priority=50 tcp nw_frag=first actions=move:OXM_OF_TCP_DST[[]]->OXM_OF_TCP_SRC[[]],output:5
+priority=50 tcp nw_frag=later actions=output:6
])
AT_CHECK([ovs-ofctl replace-flows br0 flows.txt])
@@ -5648,6 +5682,180 @@
OVS_VSWITCHD_STOP
AT_CLEANUP
+AT_SETUP([ofproto-dpif - flow stats reset_counts])
+OVS_VSWITCHD_START
+flow="ip,actions=NORMAL"
+
+ovs-appctl time/stop
+
+AT_CHECK([ovs-ofctl add-flow br0 $flow])
+
+warp_and_dump_NXM () {
+ AT_CHECK([ovs-appctl time/warp 1000], [0], [ignore])
+ AT_CHECK([ovs-appctl revalidator/purge], [0])
+
+ AT_CHECK_UNQUOTED([ovs-ofctl dump-flows br0], [0], [stdout])
+ if [[ $5 -gt 0 ]]; then
+ expected=" cookie=0x0, duration=$1s, table=0, n_packets=$2, n_bytes=$3, idle_age=$4, hard_age=$5, ip actions=NORMAL"
+ else
+ expected=" cookie=0x0, duration=$1s, table=0, n_packets=$2, n_bytes=$3, idle_age=$4, ip actions=NORMAL"
+ fi
+ AT_CHECK_UNQUOTED([STRIP_XIDS stdout | sed -n 's/duration=\([[0-9]]*\)\.*[[0-9]]*s/duration=\1s/p' | sort], [0], [dnl
+$expected
+])
+}
+
+warp_and_dump_OF () {
+ AT_CHECK([ovs-appctl time/warp 1000], [0], [ignore])
+ AT_CHECK([ovs-appctl revalidator/purge], [0])
+
+ AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 dump-flows br0], [0], [stdout])
+ if [[ $1 -lt 13 -o "$5X" = "X" ]]; then
+ expected=" cookie=0x0, duration=$2s, table=0, n_packets=$3, n_bytes=$4, ip actions=NORMAL"
+ else
+ expected=" cookie=0x0, duration=$2s, table=0, n_packets=$3, n_bytes=$4, $5 ip actions=NORMAL"
+ fi
+ AT_CHECK_UNQUOTED([STRIP_XIDS stdout | sed -n 's/duration=\([[0-9]]*\)\.*[[0-9]]*s/duration=\1s/p' | sort], [0], [dnl
+$expected
+])
+}
+
+send_packet () {
+ ovs-appctl netdev-dummy/receive br0 'in_port(0),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no)'
+}
+
+# OpenFlow 1.0, implicit reset_counts
+send_packet
+warp_and_dump_NXM 1 1 60 1
+AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow10 add-flow br0 $flow])
+# add-flow resets duration and counts,
+# but idle age is inherited from the old flow
+warp_and_dump_NXM 1 0 0 2
+
+send_packet
+warp_and_dump_NXM 2 1 60 1
+AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow10 mod-flows br0 $flow])
+# mod-flows resets hard_age, but not counts
+# but duration and idle_age is inherited from the old flow
+warp_and_dump_NXM 3 1 60 2 1
+
+# OpenFlow 1.1, implicit reset_counts
+send_packet
+warp_and_dump_OF 11 4 2 120
+AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow11 add-flow br0 $flow])
+# add-flow resets duration and counts,
+# but idle age is inherited from the old flow
+warp_and_dump_NXM 1 0 0 2
+warp_and_dump_OF 11 2 0 0
+
+send_packet
+warp_and_dump_OF 11 3 1 60
+AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow11 mod-flows br0 $flow])
+# mod-flows resets hard_age, but not counts
+# but duration and idle_age is inherited from the old flow
+warp_and_dump_NXM 4 1 60 2 1
+warp_and_dump_OF 11 5 1 60
+
+# OpenFlow 1.2, explicit reset_counts
+send_packet
+warp_and_dump_OF 12 6 2 120
+AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow12 add-flow br0 $flow])
+# add-flow without flags resets duration, but not counts,
+# idle age is inherited from the old flow
+warp_and_dump_NXM 1 2 120 2
+warp_and_dump_OF 12 2 2 120
+
+send_packet
+warp_and_dump_OF 12 3 3 180
+AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow12 mod-flows br0 $flow])
+# mod-flows without flags does not reset duration nor counts,
+# idle age is inherited from the old flow
+warp_and_dump_NXM 4 3 180 2 1
+warp_and_dump_OF 12 5 3 180
+
+send_packet
+warp_and_dump_OF 12 6 4 240
+AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow12 add-flow br0 reset_counts,$flow])
+# add-flow with reset_counts resets both duration and counts,
+# idle age is inherited from the old flow
+warp_and_dump_NXM 1 0 0 2
+warp_and_dump_OF 12 2 0 0
+
+send_packet
+warp_and_dump_OF 12 3 1 60
+AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow12 mod-flows br0 reset_counts,$flow])
+# mod-flows with reset_counts resets counts, but not duration,
+# idle age is inherited from the old flow
+warp_and_dump_NXM 4 0 0 2 1
+warp_and_dump_OF 12 5 0 0
+
+# OpenFlow > 1.3, explicit reset_counts
+flow_mods_reset_counts () {
+ # Reset to a known state
+ AT_CHECK([ovs-ofctl add-flow br0 $flow])
+
+ send_packet
+ warp_and_dump_OF $1 1 1 60 reset_counts
+ AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 add-flow br0 $flow])
+ # add-flow without flags resets duration, but not counts,
+ # idle age is inherited from the old flow
+ warp_and_dump_NXM 1 1 60 2
+ warp_and_dump_OF $1 2 1 60
+
+ send_packet
+ warp_and_dump_OF $1 3 2 120
+ AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 mod-flows br0 $flow])
+ # mod-flows without flags does not reset duration nor counts,
+ # idle age is inherited from the old flow
+ warp_and_dump_NXM 4 2 120 2 1
+ warp_and_dump_OF $1 5 2 120
+
+ send_packet
+ warp_and_dump_OF $1 6 3 180
+ AT_CHECK_UNQUOTED([ovs-ofctl -O OpenFlow$1 add-flow br0 reset_counts,$flow])
+ # add-flow with reset_counts resets both duration and counts,
+ # idle age is inherited from the old flow
+ warp_and_dump_NXM 1 0 0 2
+ warp_and_dump_OF $1 2 0 0 reset_counts
+
+ send_packet
+ warp_and_dump_OF $1 3 1 60 reset_counts
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/ofproto.at
^
|
@@ -822,7 +822,7 @@
AT_CHECK_UNQUOTED([STRIP_XIDS stdout], [0], [dnl
OFPT_FEATURES_REPLY (OF1.4): dpid:fedcba9876543210
n_tables:254, n_buffers:256
-capabilities: FLOW_STATS TABLE_STATS PORT_STATS GROUP_STATS QUEUE_STATS
+capabilities: FLOW_STATS TABLE_STATS PORT_STATS GROUP_STATS QUEUE_STATS BUNDLES
OFPST_PORT_DESC reply (OF1.4):
LOCAL(br0): addr:aa:55:aa:55:00:00
config: $config
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/ovs-vsctl.at
^
|
@@ -552,6 +552,23 @@
CHECK_IFACES([xapi1], [eth0.$1])
OVS_VSCTL_CLEANUP
AT_CLEANUP
+
+AT_SETUP([simple fake bridge + del-port from parent (VLAN $1)])
+AT_KEYWORDS([ovs-vsctl fake-bridge del-port])
+OVS_VSCTL_SETUP
+OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF([$1])
+AT_CHECK([RUN_OVS_VSCTL([del-port xenbr0 eth0.$1])], [1], [],
+ [ovs-vsctl: bridge xenbr0 does not have a port eth0.$1 (although its child bridge xapi1 does)
+])
+CHECK_PORTS([xenbr0], [eth0])
+CHECK_IFACES([xenbr0], [eth0])
+CHECK_PORTS([xapi1], [eth0.$1])
+CHECK_IFACES([xapi1], [eth0.$1])
+AT_CHECK([RUN_OVS_VSCTL([del-port xapi1 eth0.$1])])
+CHECK_PORTS([xenbr0], [eth0])
+CHECK_IFACES([xenbr0], [eth0])
+OVS_VSCTL_CLEANUP
+AT_CLEANUP
]) # OVS_VSCTL_FAKE_BRIDGE_TESTS
OVS_VSCTL_FAKE_BRIDGE_TESTS([9])
@@ -762,6 +779,9 @@
[0], [ignore], [], [OVS_VSCTL_CLEANUP])
AT_CHECK([RUN_OVS_VSCTL([set-controller br1 tcp:127.0.0.1])],
[0], [ignore], [], [OVS_VSCTL_CLEANUP])
+AT_CHECK([RUN_OVS_VSCTL([list netflow br0])], [1], [],
+ [ovs-vsctl: no row "br0" in table NetFlow
+], [OVS_VSCTL_CLEANUP])
AT_CHECK([
RUN_OVS_VSCTL_TOGETHER([--id=@n create netflow targets='"1.2.3.4:567"'],
[set bridge br0 netflow=@n])],
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/system-kmod-testsuite
^
|
@@ -952,7 +952,7 @@
# List of tests.
if $at_list_p; then
cat <<_ATEOF || at_write_fail=1
-openvswitch 2.5.1 test suite test groups:
+openvswitch 2.5.9 test suite test groups:
NUM: FILE-NAME:LINE TEST-GROUP-NAME
KEYWORDS
@@ -993,7 +993,7 @@
exit $at_write_fail
fi
if $at_version_p; then
- $as_echo "$as_me (openvswitch 2.5.1)" &&
+ $as_echo "$as_me (openvswitch 2.5.9)" &&
cat <<\_ATEOF || at_write_fail=1
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1187,11 +1187,11 @@
# Banners and logs.
$as_echo "## ----------------------------- ##
-## openvswitch 2.5.1 test suite. ##
+## openvswitch 2.5.9 test suite. ##
## ----------------------------- ##"
{
$as_echo "## ----------------------------- ##
-## openvswitch 2.5.1 test suite. ##
+## openvswitch 2.5.9 test suite. ##
## ----------------------------- ##"
echo
@@ -2381,7 +2381,7 @@
$as_echo "Please send $at_msg and all information you think might help:
To: <bugs@openvswitch.org>
- Subject: [openvswitch 2.5.1] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
+ Subject: [openvswitch 2.5.9] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
You may investigate any problem if you feel able to do so, in which
case the test suite provides a good starting point. Its output may
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/system-userspace-testsuite
^
|
@@ -952,7 +952,7 @@
# List of tests.
if $at_list_p; then
cat <<_ATEOF || at_write_fail=1
-openvswitch 2.5.1 test suite test groups:
+openvswitch 2.5.9 test suite test groups:
NUM: FILE-NAME:LINE TEST-GROUP-NAME
KEYWORDS
@@ -993,7 +993,7 @@
exit $at_write_fail
fi
if $at_version_p; then
- $as_echo "$as_me (openvswitch 2.5.1)" &&
+ $as_echo "$as_me (openvswitch 2.5.9)" &&
cat <<\_ATEOF || at_write_fail=1
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1187,11 +1187,11 @@
# Banners and logs.
$as_echo "## ----------------------------- ##
-## openvswitch 2.5.1 test suite. ##
+## openvswitch 2.5.9 test suite. ##
## ----------------------------- ##"
{
$as_echo "## ----------------------------- ##
-## openvswitch 2.5.1 test suite. ##
+## openvswitch 2.5.9 test suite. ##
## ----------------------------- ##"
echo
@@ -2381,7 +2381,7 @@
$as_echo "Please send $at_msg and all information you think might help:
To: <bugs@openvswitch.org>
- Subject: [openvswitch 2.5.1] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
+ Subject: [openvswitch 2.5.9] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
You may investigate any problem if you feel able to do so, in which
case the test suite provides a good starting point. Its output may
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/test-hash.c
^
|
@@ -153,14 +153,13 @@
OVS_PACKED(struct offset_ovs_u128 {
uint32_t a;
ovs_u128 b;
- }) in0_data;
- ovs_u128 *in0, in1;
+ }) in0;
+ ovs_u128 in1;
ovs_u128 out0, out1;
- in0 = &in0_data.b;
- set_bit128(in0, i, n_bits);
set_bit128(&in1, i, n_bits);
- hash(in0, sizeof(ovs_u128), 0, &out0);
+ in0.b = in1;
+ hash(&in0.b, sizeof(ovs_u128), 0, &out0);
hash(&in1, sizeof(ovs_u128), 0, &out1);
if (!ovs_u128_equals(&out0, &out1)) {
printf("%s hash not the same for non-64 aligned data "
@@ -205,14 +204,15 @@
OVS_PACKED(struct offset_ovs_u128 {
uint32_t a;
ovs_u128 b[16];
- }) in0_data;
- ovs_u128 *in0, in1[16];
+ }) in0;
+ ovs_u128 in1[16];
ovs_u128 out0, out1;
- in0 = in0_data.b;
- set_bit128(in0, i, n_bits);
set_bit128(in1, i, n_bits);
- hash(in0, sizeof(ovs_u128) * 16, 0, &out0);
+ for (j = 0; j < 16; j++) {
+ in0.b[j] = in1[j];
+ }
+ hash(&in0.b, sizeof(ovs_u128) * 16, 0, &out0);
hash(in1, sizeof(ovs_u128) * 16, 0, &out1);
if (!ovs_u128_equals(&out0, &out1)) {
printf("%s hash not the same for non-64 aligned data "
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/testsuite
^
|
@@ -626,1731 +626,1742 @@
18;bfd.at:519;bfd - bfd forwarding_if_rx - with bfd decay;;
19;bfd.at:607;bfd - bfd forwarding_if_rx - demand_rx_bfd;;
20;bfd.at:678;bfd - flap_count;;
-21;cfm.at:49;cfm - check update ovsdb 1;;
-22;cfm.at:78;cfm - check update ovsdb 2;;
-23;cfm.at:112;cfm - demand mode;;
-24;cfm.at:154;cfm - demand_rx_ccm;;
-25;cfm.at:216;cfm - flap_count;;
-26;cfm.at:249;cfm - fault_override;;
-27;lacp.at:13;lacp - config;;
-28;lacp.at:53;lacp - multi port config;;
-29;lacp.at:139;lacp - negotiation;;
-30;library.at:3;test flow extractor;;
-31;library.at:9;test TCP/IP checksumming;;
-32;library.at:14;test hash functions;;
-33;library.at:18;test hash map;hmap;
-34;library.at:24;test hash index;hindex;
-35;library.at:30;test cuckoo hash;cmap;
-36;library.at:36;test atomic operations;;
-37;library.at:40;test linked lists;;
-38;library.at:45;test packet library;;
-39;library.at:49;test SHA-1;;
-40;library.at:54;test type properties;;
-41;library.at:58;test strtok_r bug fix;;
-42;library.at:63;test byte order conversion;byte order;
-43;library.at:68;test random number generator;;
-44;library.at:120;ctz() function;ctz;
-45;library.at:120;clz() function;clz;
-46;library.at:120;round_up_pow2() function;round_up_pow2;
-47;library.at:120;round_down_pow2() function;round_down_pow2;
-48;library.at:120;count_1bits() function;count_1bits;
-49;library.at:120;log_2_floor() function;log_2_floor;
-50;library.at:120;bitwise_copy() function;bitwise_copy;
-51;library.at:120;bitwise_zero() function;bitwise_zero;
-52;library.at:120;bitwise_one() function;bitwise_one;
-53;library.at:120;bitwise_is_all_zeros() function;bitwise_is_all_zeros;
-54;library.at:120;ovs_scan() function;ovs_scan;
-55;library.at:138;test unix socket, short pathname - C;;
-56;library.at:148;test unix socket, long pathname - C;;
-57;library.at:157;test unix socket, short pathname - Python;;
-58;library.at:167;test unix socket, long pathname - Python;;
-59;library.at:176;ovs_assert;;
-60;library.at:199;snprintf;;
-61;library.at:203;test bitmap functions;;
-62;library.at:208;use of public headers;;
-63;library.at:212;test ofpbuf module;;
-64;library.at:216;test rcu;;
-65;heap.at:8;heap library -- insert delete same order;;
-66;heap.at:9;heap library -- insert delete reverse order;;
-67;heap.at:10;heap library -- insert delete every order;;
-68;heap.at:11;heap library -- insert delete same order with dups;;
-69;heap.at:12;heap library -- raw insert;;
-70;heap.at:13;heap library -- raw delete;;
-71;bundle.at:10;hrw bundle link selection;;
-72;bundle.at:80;active_backup bundle link selection;;
-73;bundle.at:151;hrw bundle single link selection;;
-74;bundle.at:159;hrw bundle no link selection;;
-75;bundle.at:166;bundle action missing argument;;
-76;bundle.at:172;bundle action bad fields;;
-77;bundle.at:178;bundle action bad algorithm;;
-78;bundle.at:184;bundle action bad slave type;;
-79;bundle.at:190;bundle action bad slave delimiter;;
-80;classifier.at:2;flow classifier - empty;;
-81;classifier.at:2;flow classifier - destroy null;;
-82;classifier.at:2;flow classifier - single rule;;
-83;classifier.at:2;flow classifier - rule replacement;;
-84;classifier.at:2;flow classifier - many rules in one list;;
-85;classifier.at:2;flow classifier - versioned many rules in one list;;
-86;classifier.at:2;flow classifier - many rules in one table;;
-87;classifier.at:2;flow classifier - versioned many rules in one table;;
-88;classifier.at:2;flow classifier - many rules in two tables;;
-89;classifier.at:2;flow classifier - versioned many rules in two tables;;
-90;classifier.at:2;flow classifier - many rules in five tables;;
-91;classifier.at:2;flow classifier - versioned many rules in five tables;;
-92;classifier.at:21;miniflow - miniflow;;
-93;classifier.at:21;miniflow - minimask_has_extra;;
-94;classifier.at:21;miniflow - minimask_combine;;
-95;classifier.at:31;flow classifier - lookup segmentation;;
-96;classifier.at:69;flow classifier - prefix lookup;;
-97;classifier.at:134;single conjunctive match;;
-98;classifier.at:171;multiple conjunctive match;;
-99;classifier.at:247;conjunctive match priority fallback;;
-100;classifier.at:293;conjunctive match and other actions;;
-101;check-structs.at:11;check struct tail padding;check-structs;
-102;check-structs.at:21;check struct internal alignment;check-structs;
-103;check-structs.at:32;check struct declared size;check-structs;
-104;check-structs.at:44;check wrong struct's declared size;check-structs;
-105;daemon.at:3;daemon;;
-106;daemon.at:22;daemon --monitor;;
-107;daemon.at:71;daemon --detach;;
-108;daemon.at:94;daemon --detach --monitor;;
-109;daemon.at:144;daemon --detach startup errors;;
-110;daemon.at:153;daemon --detach --monitor startup errors;;
-111;daemon.at:163;daemon --service;windows-service;
-112;daemon-py.at:3;daemon - Python;;
-113;daemon-py.at:21;daemon --monitor - Python;;
-114;daemon-py.at:64;daemon --monitor restart exit code - Python;;
-115;daemon-py.at:107;daemon --detach - Python;;
-116;daemon-py.at:123;daemon --detach --monitor - Python;;
-117;daemon-py.at:172;daemon --detach startup errors - Python;;
-118;daemon-py.at:181;daemon --detach --monitor startup errors - Python;;
-119;daemon-py.at:190;daemon --detach closes standard fds - Python;;
-120;daemon-py.at:210;daemon --detach --monitor closes standard fds;;
-121;ofp-actions.at:3;OpenFlow 1.0 action translation;ofp-actions of1.0;
-122;ofp-actions.at:202;OpenFlow 1.0 \"instruction\" translations;ofp-actions of1.0 instruction;
-123;ofp-actions.at:232;OpenFlow 1.1 action translation;ofp-actions of1.1;
-124;ofp-actions.at:369;OpenFlow 1.1 instruction translation;of1.1 instruction ofp-actions;
-125;ofp-actions.at:580;OpenFlow 1.2 action translation;ofp-actions of1.2;
-126;ofp-actions.at:606;OpenFlow 1.3 action translation;ofp-actions of1.3;
-127;ofp-actions.at:634;OpenFlow 1.5 action translation;ofp-actions of1.5;
-128;ofp-actions.at:658;ofp-actions - inconsistent MPLS actions;;
-129;ofp-actions.at:670;reg_load <-> set_field translation corner case;ofp-actions;
-130;ofp-print.at:3;empty;ofp-print;
-131;ofp-print.at:9;too short;ofp-print;
-132;ofp-print.at:17;wrong OpenFlow version;ofp-print;
-133;ofp-print.at:27;truncated message;ofp-print;
-134;ofp-print.at:35;message only uses part of buffer;ofp-print;
-135;ofp-print.at:44;OFPT_HELLO - ordinary;ofp-print;
-136;ofp-print.at:52;OFPT_HELLO with extra data;ofp-print;
-137;ofp-print.at:64;OFPT_HELLO with version bitmap;ofp-print;
-138;ofp-print.at:73;OFPT_HELLO with version bitmap and extra data;ofp-print;
-139;ofp-print.at:87;OFPT_HELLO with higher than supported version;ofp-print;
-140;ofp-print.at:106;OFPT_HELLO with contradictory version bitmaps;ofp-print;
-141;ofp-print.at:148;OFPT_ECHO_REQUEST, empty payload;ofp-print;
-142;ofp-print.at:155;OFPT_ECHO_REQUEST, 5-byte payload;ofp-print;
-143;ofp-print.at:163;OFPT_ECHO_REPLY, empty payload;ofp-print;
-144;ofp-print.at:170;OFPT_ECHO_REPLY, 5-byte payload;ofp-print;
-145;ofp-print.at:178;OFPT_FEATURES_REQUEST;ofp-print;
-146;ofp-print.at:185;OFPT_FEATURES_REPLY - OF1.0;ofp-print;
-147;ofp-print.at:235;OFPT_FEATURES_REPLY cut off mid-port - OF1.0;ofp-print;
-148;ofp-print.at:274;OFPT_FEATURES_REPLY - OF1.1;ofp-print;
-149;ofp-print.at:305;OFPT_FEATURES_REPLY cut off mid-port - OF1.1;ofp-print;
-150;ofp-print.at:334;OFPT_FEATURES_REPLY - OF1.2;ofp-print;
-151;ofp-print.at:365;OFPT_FEATURES_REPLY cut off mid-port - OF1.2;ofp-print;
-152;ofp-print.at:394;OFPT_FEATURES_REPLY - OF1.3;ofp-print;
-153;ofp-print.at:406;OFPT_FEATURES_REPLY - with auxiliary_id - OF1.3;ofp-print;
-154;ofp-print.at:418;OFPT_GET_CONFIG_REQUEST;ofp-print;
-155;ofp-print.at:425;OFPT_GET_CONFIG_REPLY, most common form;ofp-print;
-156;ofp-print.at:433;OFPT_GET_CONFIG_REPLY, frags and miss_send_len;ofp-print;
-157;ofp-print.at:440;OFPT_PACKET_IN - OF1.0;ofp-print;
-158;ofp-print.at:454;OFPT_PACKET_IN - OF1.0, with hex output of packet data;ofp-print;
-159;ofp-print.at:472;OFPT_PACKET_IN - OF1.1;ofp-print;
-160;ofp-print.at:487;OFPT_PACKET_IN - OF1.2;ofp-print;
-161;ofp-print.at:501;OFPT_PACKET_IN - OF1.2, with hex output of packet data;ofp-print;
-162;ofp-print.at:518;OFPT_PACKET_IN - OF1.3;ofp-print;
-163;ofp-print.at:533;OFPT_PACKET_IN - OF1.4;ofp-print;
-164;ofp-print.at:548;OFPT_PACKET_IN - OF1.5;ofp-print;
-165;ofp-print.at:563;OFPT_PACKET_IN - OF1.3, with hex output of packet data;ofp-print;
-166;ofp-print.at:581;OFPT_FLOW_REMOVED - OF1.0;ofp-print;
-167;ofp-print.at:595;OFPT_FLOW_REMOVED - OF1.2;ofp-print;
-168;ofp-print.at:606;OFPT_FLOW_REMOVED - OF1.3;ofp-print;
-169;ofp-print.at:617;OFPT_PORT_STATUS - OF1.0;ofp-print;
-170;ofp-print.at:635;OFPT_PORT_STATUS - OF1.1;ofp-print;
-171;ofp-print.at:654;OFPT_PORT_STATUS - OF1.4;ofp-print;
-172;ofp-print.at:674;OFPT_PACKET_OUT - OF1.0;ofp-print;
-173;ofp-print.at:688;OFPT_PACKET_OUT - OF1.0, with packet;ofp-print;
-174;ofp-print.at:703;OFPT_PACKET_OUT - OF1.0, with hex output of packet data;ofp-print;
-175;ofp-print.at:722;OFPT_PACKET_OUT - OF1.1;ofp-print;
-176;ofp-print.at:733;OFPT_PACKET_OUT - OF1.1, with packet;ofp-print;
-177;ofp-print.at:750;OFPT_FLOW_MOD - OF1.0 - low verbosity;ofp-print;
-178;ofp-print.at:768;OFPT_FLOW_MOD - OF1.1 - low verbosity;ofp-print;
-179;ofp-print.at:788;OFPT_FLOW_MOD - OF1.2 - low verbosity;ofp-print;
-180;ofp-print.at:808;OFPT_FLOW_MOD - OF1.0 - high verbosity;ofp-print;
-181;ofp-print.at:826;OFPT_FLOW_MOD - OF1.2 - low verbosity;ofp-print;
-182;ofp-print.at:845;OFPT_FLOW_MOD - OF1.3 - flags - low verbosity;ofp-print;
-183;ofp-print.at:863;OFPT_FLOW_MOD - OF1.2 - set-field ip_src;ofp-print;
-184;ofp-print.at:878;OFPT_FLOW_MOD - OF1.2 - set-field ip_dst;ofp-print;
-185;ofp-print.at:893;OFPT_FLOW_MOD - OF1.2 - set-field sctp_src;ofp-print;
-186;ofp-print.at:908;OFPT_FLOW_MOD - OF1.2 - set-field sctp_dst;ofp-print;
-187;ofp-print.at:923;OFPT_FLOW_MOD - OF1.2 - experimenter OXM;ofp-print;
-188;ofp-print.at:937;OFPT_FLOW_MOD - OF1.2 - set-field nd_target, nd_sll;ofp-print;
-189;ofp-print.at:955;OFPT_FLOW_MOD - OF1.3 - meter;ofp-print;
-190;ofp-print.at:966;OFPT_FLOW reply - OF1.2 - set-field ip_src;ofp-print;
-191;ofp-print.at:983;OFPT_FLOW reply - OF1.2 - set-field ip_dst;ofp-print;
-192;ofp-print.at:1000;OFPT_FLOW reply - OF1.2 - set-field sctp_src;ofp-print;
-193;ofp-print.at:1017;OFPT_FLOW reply - OF1.2 - set-field sctp_dst;ofp-print;
-194;ofp-print.at:1034;OFPT_PORT_MOD - OF1.0;ofp-print;
-195;ofp-print.at:1047;OFPT_PORT_MOD - OF1.1;ofp-print;
-196;ofp-print.at:1061;OFPT_PORT_MOD - OF1.2;ofp-print;
-197;ofp-print.at:1075;OFPT_PORT_MOD - OF1.3;ofp-print;
-198;ofp-print.at:1089;OFPT_PORT_MOD - OF1.4;ofp-print;
-199;ofp-print.at:1103;OFPT_TABLE_MOD - OF1.1;ofp-print;
-200;ofp-print.at:1112;OFPT_TABLE_MOD - OF1.2;ofp-print;
-201;ofp-print.at:1121;OFPT_TABLE_MOD - OF1.3;ofp-print;
-202;ofp-print.at:1130;OFPT_TABLE_MOD - OF1.4;ofp-print;
-203;ofp-print.at:1139;OFPST_DESC request;ofp-print ofpt_stats_request;
-204;ofp-print.at:1146;OFPST_DESC reply;ofp-print ofpt_stats_reply;
-205;ofp-print.at:1226;OFPST_FLOW request - OF1.0;ofp-print ofpt_stats_request;
-206;ofp-print.at:1238;OFPST_FLOW request - OF1.2;ofp-print ofpt_stats_request;
-207;ofp-print.at:1250;OFPST_FLOW request - OF1.3;ofp-print ofpt_stats_request;
-208;ofp-print.at:1262;OFPST_FLOW reply - OF1.0;ofp-print ofpt_stats_reply;
-209;ofp-print.at:1306;OFPST_FLOW reply - OF1.2;ofp-print ofpt_stats_reply;
-210;ofp-print.at:1341;OFPST_AGGREGATE request - OF1.0;ofp-print ofpt_stats_request;
-211;ofp-print.at:1353;OFPST_AGGREGATE request - OF1.2;ofp-print ofpt_stats_request;
-212;ofp-print.at:1365;OFPST_AGGREGATE request - OF1.3;ofp-print ofpt_stats_request;
-213;ofp-print.at:1377;OFPST_AGGREGATE reply - OF1.0;ofp-print ofpt_stats_reply;
-214;ofp-print.at:1388;OFPST_AGGREGATE reply - OF1.2;ofp-print ofpt_stats_reply;
-215;ofp-print.at:1399;OFPST_AGGREGATE reply - OF1.3;ofp-print ofpt_stats_reply;
-216;ofp-print.at:1410;OFPST_TABLE request - OF1.0;ofp-print ofpt_stats_request;
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/testsuite.at
^
|
@@ -74,3 +74,4 @@
m4_include([tests/ovn-sbctl.at])
m4_include([tests/ovn-controller.at])
m4_include([tests/ovn-controller-vtep.at])
+m4_include([tests/mcast-snooping.at])
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/tests/tunnel.at
^
|
@@ -550,7 +550,7 @@
dnl Option generation
AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], [0], [stdout])
AT_CHECK([tail -1 stdout], [0],
- [Datapath actions: set(tunnel(dst=1.1.1.1,ttl=64,geneve({class=0xffff,type=0,len=4,0xa}{class=0xffff,type=0x1,len=8,0x1234567890abcdef}),flags(df))),6081
+ [Datapath actions: set(tunnel(dst=1.1.1.1,ttl=64,tp_dst=6081,geneve({class=0xffff,type=0,len=4,0xa}{class=0xffff,type=0x1,len=8,0x1234567890abcdef}),flags(df))),6081
])
dnl Option match
@@ -639,7 +639,7 @@
AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'recirc_id(0),tunnel(tun_id=0x0,src=1.1.1.1,dst=1.1.1.2,ttl=64,geneve({class=0xffff,type=1,len=0}),flags(df|key)),in_port(6081),skb_mark(0),eth_type(0x0800),ipv4(frag=no)'], [0], [stdout])
AT_CHECK([tail -2 stdout], [0],
[Megaflow: pkt_mark=0,recirc_id=0,ip,tun_id=0,tun_src=1.1.1.1,tun_dst=1.1.1.2,tun_tos=0,tun_ttl=64,tun_flags=+df-csum+key,tun_metadata1,tun_metadata2=NP,in_port=1,nw_ecn=0,nw_frag=no
-Datapath actions: set(tunnel(tun_id=0x0,dst=1.1.1.1,ttl=64,geneve({class=0xffff,type=0x1,len=0}),flags(df|key))),6081
+Datapath actions: set(tunnel(tun_id=0x0,dst=1.1.1.1,ttl=64,tp_dst=6081,geneve({class=0xffff,type=0x1,len=0}),flags(df|key))),6081
])
OVS_VSWITCHD_STOP
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/utilities/ovs-appctl-bashcomp.bash
^
|
@@ -1,4 +1,3 @@
-#!/bin/bash
#
# A bash command completion script for ovs-appctl.
#
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/utilities/ovs-ctl.8
^
|
@@ -81,7 +81,8 @@
upgrades it to the latest schema.
.
.IP 3.
-Starts \fBovsdb-server\fR.
+Starts \fBovsdb-server\fR, unless the \fB\-\-no\-ovsdb\-server\fR command
+option is given.
.
.IP 4.
Initializes a few values inside the database.
@@ -96,7 +97,8 @@
.
.PP
The \fBstart\fR command skips the following step if
-\fBovs\-vswitchd\fR is already running:
+\fBovs\-vswitchd\fR is already running, or if the \fB\-\-no\-ovs\-vswitchd\fR
+command option is given:
.IP 7.
Starts \fBovs\-vswitchd\fR.
.
@@ -160,6 +162,11 @@
.PP
The following options are less important:
.
+.IP "\fB\-\-no\-monitor\fR"
+By default \fBovs\-ctl\fR passes \fB\-\-monitor\fR to \fBovs\-vswitchd\fR and
+\fBovsdb\-server\fR, requesting that it spawn a process monitor which will
+restart the daemon if it crashes. This option suppresses that behavior.
+.
.IP "\fB\-\-daemon-cwd=\fIdirectory\fR"
Specifies the current working directory that the OVS daemons should
run from. The default is \fB/\fR (the root directory) if this option
@@ -238,7 +245,9 @@
.
.PP
The \fBstop\fR command does not unload the Open vSwitch kernel
-modules.
+modules. It can take the same \fB\-\-no\-ovsdb\-server\fR and
+\fB\-\-no\-ovs\-vswitchd\fR options as that of the \fBstart\fR
+command.
.
.PP
This command does nothing and finishes successfully if the OVS daemons
@@ -314,7 +323,8 @@
.
.PP
\fBforce\-kmod\-reload\fR internally stops and starts OVS, so it
-accepts all of the options accepted by the \fBstart\fR command.
+accepts all of the options accepted by the \fBstart\fR command except
+for the \fB\-\-no\-ovs\-vswitchd\fR option.
.
.SH "The ``load\-kmod'' command"
.
@@ -377,8 +387,23 @@
.
.SH "OPTIONS"
.PP
-In addition to the options listed for each command above, this option
-controls the behavior of several of \fBovs\-ctl\fR's commands.
+In addition to the options listed for each command above, these options
+control the behavior of several of \fBovs\-ctl\fR's commands.
+.
+.PP
+By default, \fBovs\-ctl\fR will control the \fBovsdb\-server\fR, and
+the \fBovs\-vswitchd\fR daemons. The following options restrict that control
+to exclude one or the other:
+.
+.IP "\fB\-\-no\-ovsdb-server\fR"
+Specifies that the \fBovs\-ctl\fR commands \fBstart\fR, \fBstop\fR, and
+\fBrestart\fR should not modify the running status of \fBovsdb\-server\fR.
+.
+.IP "\fB\-\-no\-ovs\-vswitchd\fR"
+Specifies that the \fBovs\-ctl\fR commands \fBstart\fR, \fBstop\fR, and
+\fBrestart\fR should not modify the running status of \fBovs\-vswitchd\fR.
+It is an error to include this option with the \fBforce\-reload\-kmod\fR
+command.
.
.SH "EXIT STATUS"
.
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/utilities/ovs-ctl.in
^
|
@@ -1,5 +1,5 @@
#! /bin/sh
-# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc.
+# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2016 Nicira, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -136,7 +136,7 @@
done
}
-start_ovsdb () {
+do_start_ovsdb () {
check_force_cores
if daemon_is_running ovsdb-server; then
@@ -184,6 +184,12 @@
fi
}
+start_ovsdb() {
+ if test X"$OVSDB_SERVER" = Xyes; then
+ do_start_ovsdb
+ fi
+}
+
add_managers () {
# Now that ovs-vswitchd has started and completed its initial
# configuration, tell ovsdb-server to conenct to the remote managers. We
@@ -192,12 +198,17 @@
# churn in the database at startup or restart. (For example, managers
# won't briefly see empty datapath-id or ofport columns for records that
# exist at startup.)
- action "Enabling remote OVSDB managers" \
- ovs-appctl -t ovsdb-server ovsdb-server/add-remote \
- db:Open_vSwitch,Open_vSwitch,manager_options
+ if test X"$OVSDB_SERVER" = Xyes || test X"$OVS_VSWITCHD" = Xyes; then
+ if daemon_is_running ovsdb-server \
+ && daemon_is_running ovs-vswitchd; then
+ action "Enabling remote OVSDB managers" \
+ ovs-appctl -t ovsdb-server ovsdb-server/add-remote \
+ db:Open_vSwitch,Open_vSwitch,manager_options
+ fi
+ fi
}
-start_forwarding () {
+do_start_forwarding () {
check_force_cores
insert_mod_if_required || return 1
@@ -224,16 +235,26 @@
fi
}
+start_forwarding () {
+ if test X"$OVS_VSWITCHD" = Xyes; then
+ do_start_forwarding
+ fi
+}
+
## ---- ##
## stop ##
## ---- ##
stop_ovsdb () {
- stop_daemon ovsdb-server
+ if test X"$OVSDB_SERVER" = Xyes; then
+ stop_daemon ovsdb-server
+ fi
}
stop_forwarding () {
- stop_daemon ovs-vswitchd
+ if test X"$OVS_VSWITCHD" = Xyes; then
+ stop_daemon ovs-vswitchd
+ fi
}
## ----------------- ##
@@ -271,19 +292,6 @@
[ -z "${bridges}" ] && return 0
}
-save_ofports_if_required () {
- # Save OpenFlow port numbers if we are upgrading from a pre-1.10 branch.
- #
- # (Versions 1.10 and later save OpenFlow port numbers without assistance,
- # so we don't have to do anything for them.
- case `ovs-appctl version | sed 1q` in
- "ovs-vswitchd (Open vSwitch) 1."[0-9].*)
- action "Saving ofport values" ovs_save save-ofports \
- "${script_ofports}"
- ;;
- esac
-}
-
save_flows_if_required () {
if test X"$DELETE_BRIDGES" != Xyes; then
action "Saving flows" ovs_save save-flows "${script_flows}"
@@ -295,18 +303,17 @@
> "${script_interfaces}"
}
-restore_ofports () {
- [ -x "${script_ofports}" ] && \
- action "Restoring ofport values" "${script_ofports}"
-}
-
flow_restore_wait () {
- ovs_vsctl set open_vswitch . other_config:flow-restore-wait="true"
+ if test X"$OVS_VSWITCHD" = Xyes; then
+ ovs_vsctl set open_vswitch . other_config:flow-restore-wait="true"
+ fi
}
flow_restore_complete () {
- ovs_vsctl --if-exists remove open_vswitch . other_config \
- flow-restore-wait="true"
+ if test X"$OVS_VSWITCHD" = Xyes; then
+ ovs_vsctl --if-exists remove open_vswitch . other_config \
+ flow-restore-wait="true"
+ fi
}
restore_flows () {
@@ -331,26 +338,27 @@
init_restore_scripts () {
script_interfaces=`mktemp`
script_flows=`mktemp`
- script_ofports=`mktemp`
- trap 'rm -f "${script_interfaces}" "${script_flows}" "${script_ofports}"' 0
+ trap 'rm -f "${script_interfaces}" "${script_flows}"' 0
}
force_reload_kmod () {
+
+ if test X"$OVS_VSWITCHD" != Xyes; then
+ log_failure_msg "Reloading of kmod without ovs-vswitchd is an error"
+ exit 1
+ fi
+
ifaces=`internal_interfaces`
action "Detected internal interfaces: $ifaces" true
init_restore_scripts
save_flows_if_required
- save_ofports_if_required
# Restart the database first, since a large database may take a
# while to load, and we want to minimize forwarding disruption.
stop_ovsdb
start_ovsdb
- # Restore of ofports should happen before vswitchd is restarted.
- restore_ofports
-
stop_forwarding
if action "Saving interface configuration" save_interfaces; then
@@ -399,25 +407,12 @@
## restart ##
## ------- ##
-save_interfaces_if_required () {
- # Save interfaces if we are upgrading from a pre-1.10 branch.
- case `ovs-appctl version | sed 1q` in
- "ovs-vswitchd (Open vSwitch) 1."[0-9].*)
- ifaces=`internal_interfaces`
- action "Detected internal interfaces: $ifaces" true
- if action "Saving interface configuration" save_interfaces; then
- chmod +x "$script_interfaces"
- fi
- ;;
- esac
-}
-
restart () {
if daemon_is_running ovsdb-server && daemon_is_running ovs-vswitchd; then
init_restore_scripts
- save_interfaces_if_required
- save_flows_if_required
- save_ofports_if_required
+ if test X"$OVS_VSWITCHD" = Xyes; then
+ save_flows_if_required
+ fi
fi
# Restart the database first, since a large database may take a
@@ -425,10 +420,6 @@
stop_ovsdb
start_ovsdb
- # Restore of ofports, if required, should happen before vswitchd is
- # restarted.
- restore_ofports
-
stop_forwarding
# Start vswitchd by asking it to wait till flow restore is finished.
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/utilities/ovs-lib.in
^
|
@@ -151,7 +151,8 @@
# pidfile and monitoring
test -d "$rundir" || install -d -m 755 -o root -g root "$rundir"
set "$@" --pidfile="$rundir/$daemon.pid"
- set "$@" --detach --monitor
+ set "$@" --detach
+ test X"$MONITOR" = Xno || set "$@" --monitor
# wrapper
case $wrapper in
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/utilities/ovs-save
^
|
@@ -1,6 +1,6 @@
#! /bin/sh
-# Copyright (c) 2011, 2013 Nicira, Inc.
+# Copyright (c) 2011, 2013, 2016 Nicira, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -33,8 +33,6 @@
configuration.
save-flows Outputs a shell script on stdout that will restore
OpenFlow flows of each Open vSwitch bridge.
- save-ofports Outputs a shell script on stdout that will restore
- the ofport value across a force-reload-kmod.
This script is meant as a helper for the Open vSwitch init script commands.
EOF
}
@@ -121,33 +119,6 @@
done
}
-ovs_vsctl () {
- ovs-vsctl --no-wait "$@"
-}
-
-save_ofports ()
-{
- if (ovs-vsctl --version) > /dev/null 2>&1; then :; else
- echo "$0: ovs-vsctl not found in $PATH" >&2
- exit 1
- fi
-
- for bridge in "$@"; do
- count=0
- for iface in `ovs_vsctl list-ifaces ${bridge}`; do
- ofport=`ovs_vsctl get interface ${iface} ofport`
- [ "${count}" -eq 0 ] && cmd="ovs-vsctl --no-wait"
- cmd="${cmd} -- --if-exists set interface "${iface}" \
- ofport_request="${ofport}""
-
- # Run set interface command on 50 ports at a time.
- count=`expr ${count} + 1`
- [ "${count}" -eq 50 ] && count=0 && echo "${cmd}" && cmd=""
- done
- echo "${cmd}"
- done
-}
-
while [ $# -ne 0 ]
do
case $1 in
@@ -161,11 +132,6 @@
save_interfaces "$@"
exit 0
;;
- "save-ofports")
- shift
- save_ofports "$@"
- exit 0
- ;;
-h | --help)
usage
exit 0
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/utilities/ovs-tcpundump.in
^
|
@@ -61,7 +61,7 @@
break
m = regex.match(line)
- if m is None or int(m.group(1)) == 0:
+ if m is None or int(m.group(1), 16) == 0:
if packet != '':
print packet
packet = ''
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/utilities/ovs-vsctl.c
^
|
@@ -1661,9 +1661,9 @@
if (port->bridge != bridge) {
if (port->bridge->parent == bridge) {
ctl_fatal("bridge %s does not have a port %s (although "
- "its parent bridge %s does)",
+ "its child bridge %s does)",
ctx->argv[1], ctx->argv[2],
- bridge->parent->name);
+ port->bridge->name);
} else {
ctl_fatal("bridge %s does not have a port %s",
ctx->argv[1], ctx->argv[2]);
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/vswitchd/bridge.c
^
|
@@ -223,7 +223,8 @@
* will be reconfigured.
*/
static struct if_notifier *ifnotifier;
-static bool ifaces_changed = false;
+static struct seq *ifaces_changed;
+static uint64_t last_ifaces_changed;
static void add_del_bridges(const struct ovsrec_open_vswitch *);
static void bridge_run__(void);
@@ -386,7 +387,21 @@
static void
if_change_cb(void *aux OVS_UNUSED)
{
- ifaces_changed = true;
+ seq_change(ifaces_changed);
+}
+
+static bool
+if_notifier_changed(struct if_notifier *notifier OVS_UNUSED)
+{
+ uint64_t new_seq;
+ bool changed = false;
+ new_seq = seq_read(ifaces_changed);
+ if (new_seq != last_ifaces_changed) {
+ changed = true;
+ last_ifaces_changed = new_seq;
+ }
+ seq_wait(ifaces_changed, last_ifaces_changed);
+ return changed;
}

/* Public functions. */
@@ -491,6 +506,8 @@
stp_init();
lldp_init();
rstp_init();
+ ifaces_changed = seq_create();
+ last_ifaces_changed = seq_read(ifaces_changed);
ifnotifier = if_notifier_create(if_change_cb, NULL);
}
@@ -500,6 +517,7 @@
struct bridge *br, *next_br;
if_notifier_destroy(ifnotifier);
+ seq_destroy(ifaces_changed);
HMAP_FOR_EACH_SAFE (br, next_br, node, &all_bridges) {
bridge_destroy(br, false);
}
@@ -1423,6 +1441,10 @@
port_s->port_num = 0;
}
+ /* Increment the port num counter, because we only support
+ * RSTP_MAX_PORTS rstp ports. */
+ (*port_num_counter)++;
+
config_str = smap_get(&port->cfg->other_config, "rstp-path-cost");
if (config_str) {
port_s->path_cost = strtoul(config_str, NULL, 10);
@@ -2969,12 +2991,10 @@
}
}
- if (ovsdb_idl_get_seqno(idl) != idl_seqno || vlan_splinters_changed
- || ifaces_changed) {
+ if (ovsdb_idl_get_seqno(idl) != idl_seqno || vlan_splinters_changed ||
+ if_notifier_changed(ifnotifier)) {
struct ovsdb_idl_txn *txn;
- ifaces_changed = false;
-
idl_seqno = ovsdb_idl_get_seqno(idl);
txn = ovsdb_idl_txn_create(idl);
bridge_reconfigure(cfg ? cfg : &null_cfg);
@@ -3032,9 +3052,6 @@
}
if_notifier_wait();
- if (ifaces_changed) {
- poll_immediate_wake();
- }
sset_init(&types);
ofproto_enumerate_types(&types);
@@ -3544,7 +3561,8 @@
ofproto_set_extra_in_band_remotes(br->ofproto, managers, n_managers);
}
- n_controllers = bridge_get_controllers(br, &controllers);
+ n_controllers = (ofproto_get_flow_restore_wait() ? 0
+ : bridge_get_controllers(br, &controllers));
ocs = xmalloc((n_controllers + 1) * sizeof *ocs);
n_ocs = 0;
@@ -3849,7 +3867,7 @@
union ovsdb_atom atom;
atom.integer = m->isid;
- if (ovsdb_datum_find_key(mc, &atom, OVSDB_TYPE_UUID) == UINT_MAX) {
+ if (ovsdb_datum_find_key(mc, &atom, OVSDB_TYPE_INTEGER) == UINT_MAX) {
VLOG_INFO("Deleting isid=%"PRIu32", vlan=%"PRIu16,
m->isid, m->vlan);
bridge_aa_mapping_destroy(m);
@@ -3952,6 +3970,8 @@
/* Force reconfigure of the port. */
port_configure(port);
}
+
+ free(trunks);
}
static void
@@ -4274,6 +4294,9 @@
struct port *port = iface->port;
struct bridge *br = port->bridge;
+ VLOG_INFO("bridge %s: deleted interface %s on port %d",
+ br->name, iface->name, iface->ofp_port);
+
if (br->ofproto && iface->ofp_port != OFPP_NONE) {
ofproto_port_unregister(br->ofproto, iface->ofp_port);
}
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/vswitchd/vswitch.xml
^
|
@@ -1294,9 +1294,8 @@
<dl>
<dt><code>balance-tcp</code></dt>
<dd>
- Balances flows among slaves based on L2, L3, and L4 protocol
- information such as destination MAC address, IP address, and TCP
- port.
+ Balances flows among slaves based on L3 and L4 protocol information
+ such as IP addresses and TCP/UDP ports.
</dd>
</dl>
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/xenserver/openvswitch-xen.spec
^
|
@@ -32,7 +32,7 @@
# rpmbuild -bb --without check xenserver/openvswitch-xen.spec
%if %{?openvswitch_version:0}%{!?openvswitch_version:1}
-%define openvswitch_version 2.5.1
+%define openvswitch_version 2.5.9
%endif
%if %{?kernel_uname:1}%{!?kernel_uname:0}
@@ -165,8 +165,7 @@
%check
%if %{with check}
- if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
- make check TESTSUITEFLAGS='--recheck'; then :;
+ if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :;
else
cat tests/testsuite.log
exit 1
|
[-]
[+]
|
Changed |
openvswitch-2.5.9.tar.gz/xenserver/openvswitch-xen.spec.in
^
|
@@ -164,8 +164,7 @@
%check
%if %{with check}
- if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
- make check TESTSUITEFLAGS='--recheck'; then :;
+ if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :;
else
cat tests/testsuite.log
exit 1
|
[-]
[+]
|
Changed |
ovs-monitor-ipsec
^
|
@@ -392,8 +392,18 @@
class StrongSwanKeyer(object):
STRONGSWAN_CONF = """%s
-charon.plugins.kernel-netlink.set_proto_port_transport_sa = yes
-charon.plugins.kernel-netlink.xfrm_ack_expires = 10
+charon {
+ plugins {
+ kernel-netlink {
+ set_proto_port_transport_sa = yes
+ xfrm_ack_expires = 10
+ }
+ gcm {
+ load = yes
+ }
+ }
+ load_modular = yes
+}
""" % (FILE_HEADER)
IPSEC_MARK = "1/1"
CONF_HEADER = """%s
|