Open vSwitch CI 91dce2
diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
Open vSwitch CI 91dce2
index 99850a943..8227a5748 100755
Open vSwitch CI 91dce2
--- a/.ci/linux-build.sh
Open vSwitch CI 91dce2
+++ b/.ci/linux-build.sh
Open vSwitch CI 91dce2
@@ -82,6 +82,10 @@ if [ "$DPDK" ] || [ "$DPDK_SHARED" ]; then
Open vSwitch CI 91dce2
     install_dpdk
Open vSwitch CI 91dce2
 fi
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+if [ "$STD" ]; then
Open vSwitch CI 91dce2
+    CFLAGS_FOR_OVS="${CFLAGS_FOR_OVS} -std=$STD"
Open vSwitch CI 91dce2
+fi
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 if [ "$CC" = "clang" ]; then
Open vSwitch CI 91dce2
     CFLAGS_FOR_OVS="${CFLAGS_FOR_OVS} -Wno-error=unused-command-line-argument"
Open vSwitch CI 91dce2
 elif [ "$M32" ]; then
Open vSwitch CI 91dce2
diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
Open vSwitch CI 91dce2
index 47d239f10..bc5494e86 100644
Open vSwitch CI 91dce2
--- a/.github/workflows/build-and-test.yml
Open vSwitch CI 91dce2
+++ b/.github/workflows/build-and-test.yml
Open vSwitch CI 91dce2
@@ -85,6 +85,7 @@ jobs:
Open vSwitch CI 91dce2
       LIBS:        ${{ matrix.libs }}
Open vSwitch CI 91dce2
       M32:         ${{ matrix.m32 }}
Open vSwitch CI 91dce2
       OPTS:        ${{ matrix.opts }}
Open vSwitch CI 91dce2
+      STD:         ${{ matrix.std }}
Open vSwitch CI 91dce2
       TESTSUITE:   ${{ matrix.testsuite }}
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     name: linux ${{ join(matrix.*, ' ') }}
Open vSwitch CI 91dce2
@@ -100,6 +101,11 @@ jobs:
Open vSwitch CI 91dce2
           - compiler:     clang
Open vSwitch CI 91dce2
             opts:         --disable-ssl
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+          - compiler:     gcc
Open vSwitch CI 91dce2
+            std:          c99
Open vSwitch CI 91dce2
+          - compiler:     clang
Open vSwitch CI 91dce2
+            std:          c99
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
           - compiler:     gcc
Open vSwitch CI 91dce2
             testsuite:    test
Open vSwitch CI 91dce2
           - compiler:     clang
Open vSwitch CI 29770f
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
Open vSwitch CI 29770f
new file mode 100644
Open vSwitch CI 29770f
index 000000000..e481e64f1
Open vSwitch CI 29770f
--- /dev/null
Open vSwitch CI 29770f
+++ b/.readthedocs.yaml
Open vSwitch CI 29770f
@@ -0,0 +1,24 @@
Open vSwitch CI 29770f
+# .readthedocs.yaml
Open vSwitch CI 29770f
+# Read the Docs configuration file.
Open vSwitch CI 29770f
+# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details.
Open vSwitch CI 29770f
+
Open vSwitch CI 29770f
+# Required.
Open vSwitch CI 29770f
+version: 2
Open vSwitch CI 29770f
+
Open vSwitch CI 29770f
+# Set the OS, Python version, etc.
Open vSwitch CI 29770f
+build:
Open vSwitch CI 29770f
+  os: ubuntu-22.04
Open vSwitch CI 29770f
+  tools:
Open vSwitch CI 29770f
+    python: "3.12"
Open vSwitch CI 29770f
+
Open vSwitch CI 29770f
+# Build documentation in the "Documentation/" directory with Sphinx.
Open vSwitch CI 29770f
+sphinx:
Open vSwitch CI 29770f
+  configuration: Documentation/conf.py
Open vSwitch CI 29770f
+
Open vSwitch CI 29770f
+# Build all formats: HTML, PDF, ePub.
Open vSwitch CI 29770f
+formats: all
Open vSwitch CI 29770f
+
Open vSwitch CI 29770f
+# Declare the Python requirements.
Open vSwitch CI 29770f
+python:
Open vSwitch CI 29770f
+  install:
Open vSwitch CI 29770f
+  - requirements: Documentation/requirements.txt
Open vSwitch CI 91dce2
diff --git a/Documentation/ref/ovs-actions.7.rst b/Documentation/ref/ovs-actions.7.rst
Open vSwitch CI 91dce2
index d13895655..36adcc5db 100644
Open vSwitch CI 91dce2
--- a/Documentation/ref/ovs-actions.7.rst
Open vSwitch CI 91dce2
+++ b/Documentation/ref/ovs-actions.7.rst
Open vSwitch CI 91dce2
@@ -694,7 +694,8 @@ encapsulated in an OpenFlow ``packet-in`` message.  The supported options are:
Open vSwitch CI 91dce2
     Limit to *max_len* the number of bytes of the packet to send in the
Open vSwitch CI 91dce2
     ``packet-in.``  A *max_len* of 0 prevents any of the packet from being
Open vSwitch CI 91dce2
     sent (thus, only metadata is included).  By default, the entire packet is
Open vSwitch CI 91dce2
-    sent, equivalent to a *max_len* of 65535.
Open vSwitch CI 91dce2
+    sent, equivalent to a *max_len* of 65535.  This option has no effect in
Open vSwitch CI 91dce2
+    Open vSwith 2.7 and later: the entire packet will always be sent.
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
   ``reason=``\ *reason*
Open vSwitch CI 91dce2
     Specify *reason* as the reason for sending the message in the
Open vSwitch CI 91dce2
@@ -733,6 +734,12 @@ encapsulated in an OpenFlow ``packet-in`` message.  The supported options are:
Open vSwitch CI 91dce2
   options require the Open vSwitch ``NXAST_CONTROLLER`` extension action added
Open vSwitch CI 91dce2
   in Open vSwitch 1.6.
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+  Open vSwitch 2.7 and later is configured to not buffer packets for the
Open vSwitch CI 91dce2
+  packet-in event.  As a result, the full packet is always sent to
Open vSwitch CI 91dce2
+  controllers.  This means that the ``max_len`` option has no effect on the
Open vSwitch CI 91dce2
+  ``controller`` action, and all values (even 0) are equivalent to the default
Open vSwitch CI 91dce2
+  value of 65535.
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 The ``enqueue`` action
Open vSwitch CI 91dce2
 ----------------------
Open vSwitch CI 29770f
diff --git a/Documentation/requirements.txt b/Documentation/requirements.txt
Open vSwitch CI 29770f
index 77130c6e0..77f44bd76 100644
Open vSwitch CI 29770f
--- a/Documentation/requirements.txt
Open vSwitch CI 29770f
+++ b/Documentation/requirements.txt
Open vSwitch CI 29770f
@@ -1,2 +1,2 @@
Open vSwitch CI 29770f
-sphinx>=1.1,<2.0
Open vSwitch CI 29770f
+sphinx>=1.1
Open vSwitch CI 29770f
 ovs_sphinx_theme>=1.0,<1.1
Open vSwitch CI 91dce2
diff --git a/Makefile.am b/Makefile.am
Open vSwitch CI 29770f
index db341504d..94f488d18 100644
Open vSwitch CI 91dce2
--- a/Makefile.am
Open vSwitch CI 91dce2
+++ b/Makefile.am
Open vSwitch CI 29770f
@@ -84,6 +84,7 @@ EXTRA_DIST = \
Open vSwitch CI 29770f
 	.cirrus.yml \
Open vSwitch CI 29770f
 	.editorconfig \
Open vSwitch CI 29770f
 	.github/workflows/build-and-test.yml \
Open vSwitch CI 29770f
+	.readthedocs.yaml \
Open vSwitch CI 29770f
 	appveyor.yml \
Open vSwitch CI 29770f
 	boot.sh \
Open vSwitch CI 29770f
 	poc/builders/Vagrantfile \
Open vSwitch CI 29770f
@@ -368,7 +369,7 @@ ALL_LOCAL += manpage-check
Open vSwitch CI 91dce2
 manpage-check: $(man_MANS) $(dist_man_MANS) $(noinst_man_MANS)
Open vSwitch CI 91dce2
 	@error=false; \
Open vSwitch CI 91dce2
 	for manpage in $?; do \
Open vSwitch CI 91dce2
-	  LANG=en_US.UTF-8 groff -w mac -w delim -w escape -w input -w missing -w tab -T utf8 -man -p -z $$manpage >$@.tmp 2>&1; \
Open vSwitch CI 91dce2
+	  LANG=en_US.UTF-8 groff -t -w mac -w delim -w escape -w input -w missing -w tab -T utf8 -man -p -z $$manpage >$@.tmp 2>&1; \
Open vSwitch CI 91dce2
 	  if grep warning: $@.tmp; then error=:; fi; \
Open vSwitch CI 91dce2
 	  rm -f $@.tmp; \
Open vSwitch CI 91dce2
 	done; \
Open vSwitch CI 29770f
@@ -415,7 +416,7 @@ endif
Open vSwitch CI 91dce2
 CLEANFILES += flake8-check
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 -include manpages.mk
Open vSwitch CI 91dce2
-manpages.mk: $(MAN_ROOTS) build-aux/sodepends.py python/build/soutil.py
Open vSwitch CI 91dce2
+manpages.mk: $(MAN_ROOTS) build-aux/sodepends.py python/ovs_build_helpers/soutil.py
Open vSwitch CI 91dce2
 	@PYTHONPATH=$$PYTHONPATH$(psep)$(srcdir)/python $(PYTHON3) $(srcdir)/build-aux/sodepends.py -I. -I$(srcdir) $(MAN_ROOTS) >$(@F).tmp
Open vSwitch CI 91dce2
 	@if cmp -s $(@F).tmp $@; then \
Open vSwitch CI 91dce2
 	  touch $@; \
Open vSwitch CI 91dce2
diff --git a/NEWS b/NEWS
Open vSwitch CI cb0c1f
index a3a5c2e4a..eb7a9b1ba 100644
Open vSwitch CI 91dce2
--- a/NEWS
Open vSwitch CI 91dce2
+++ b/NEWS
Open vSwitch CI cb0c1f
@@ -1,3 +1,10 @@
Open vSwitch CI cb0c1f
+v3.2.2 - xx xxx xxxx
Open vSwitch CI 91dce2
+--------------------
Open vSwitch CI 91dce2
+
Open vSwitch CI cb0c1f
+v3.2.1 - 17 Oct 2023
Open vSwitch CI cb0c1f
+--------------------
Open vSwitch CI cb0c1f
+   - Bug fixes
Open vSwitch CI cb0c1f
+
Open vSwitch CI 91dce2
 v3.2.0 - 17 Aug 2023
Open vSwitch CI 91dce2
 --------------------
Open vSwitch CI 91dce2
    - OVSDB:
Open vSwitch CI 91dce2
diff --git a/build-aux/extract-ofp-fields b/build-aux/extract-ofp-fields
Open vSwitch CI 91dce2
index efec59c25..05d3e1df3 100755
Open vSwitch CI 91dce2
--- a/build-aux/extract-ofp-fields
Open vSwitch CI 91dce2
+++ b/build-aux/extract-ofp-fields
Open vSwitch CI 91dce2
@@ -4,9 +4,9 @@ import getopt
Open vSwitch CI 91dce2
 import sys
Open vSwitch CI 91dce2
 import os.path
Open vSwitch CI 91dce2
 import xml.dom.minidom
Open vSwitch CI 91dce2
-import build.nroff
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-from build.extract_ofp_fields import (
Open vSwitch CI 91dce2
+from ovs_build_helpers import nroff
Open vSwitch CI 91dce2
+from ovs_build_helpers.extract_ofp_fields import (
Open vSwitch CI 91dce2
     extract_ofp_fields,
Open vSwitch CI 91dce2
     PREREQS,
Open vSwitch CI 91dce2
     OXM_CLASSES,
Open vSwitch CI 91dce2
@@ -216,7 +216,7 @@ def field_to_xml(field_node, f, body, summary):
Open vSwitch CI 91dce2
         """.PP
Open vSwitch CI 91dce2
 \\fB%s Field\\fR
Open vSwitch CI 91dce2
 .TS
Open vSwitch CI 91dce2
-tab(;);
Open vSwitch CI 91dce2
+tab(;),nowarn;
Open vSwitch CI 91dce2
 l lx.
Open vSwitch CI 91dce2
 """
Open vSwitch CI 91dce2
         % title
Open vSwitch CI 91dce2
@@ -297,7 +297,7 @@ l lx.
Open vSwitch CI 91dce2
     body += [".TE\n"]
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     body += [".PP\n"]
Open vSwitch CI 91dce2
-    body += [build.nroff.block_xml_to_nroff(field_node.childNodes)]
Open vSwitch CI 91dce2
+    body += [nroff.block_xml_to_nroff(field_node.childNodes)]
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 def group_xml_to_nroff(group_node, fields):
Open vSwitch CI 91dce2
@@ -310,14 +310,14 @@ def group_xml_to_nroff(group_node, fields):
Open vSwitch CI 91dce2
             id_ = node.attributes["id"].nodeValue
Open vSwitch CI 91dce2
             field_to_xml(node, fields[id_], body, summary)
Open vSwitch CI 91dce2
         else:
Open vSwitch CI 91dce2
-            body += [build.nroff.block_xml_to_nroff([node])]
Open vSwitch CI 91dce2
+            body += [nroff.block_xml_to_nroff([node])]
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     content = [
Open vSwitch CI 91dce2
         ".bp\n",
Open vSwitch CI 91dce2
-        '.SH "%s"\n' % build.nroff.text_to_nroff(title.upper() + " FIELDS"),
Open vSwitch CI 91dce2
+        '.SH "%s"\n' % nroff.text_to_nroff(title.upper() + " FIELDS"),
Open vSwitch CI 91dce2
         '.SS "Summary:"\n',
Open vSwitch CI 91dce2
         ".TS\n",
Open vSwitch CI 91dce2
-        "tab(;);\n",
Open vSwitch CI 91dce2
+        "tab(;),nowarn;\n",
Open vSwitch CI 91dce2
         "l l l l l l l.\n",
Open vSwitch CI 91dce2
         "Name;Bytes;Mask;RW?;Prereqs;NXM/OXM Support\n",
Open vSwitch CI 91dce2
         "\_;\_;\_;\_;\_;\_\n",
Open vSwitch CI 91dce2
@@ -329,7 +329,7 @@ def group_xml_to_nroff(group_node, fields):
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 def make_oxm_classes_xml(document):
Open vSwitch CI 91dce2
-    s = """tab(;);
Open vSwitch CI 91dce2
+    s = """tab(;),nowarn;
Open vSwitch CI 91dce2
 l l l.
Open vSwitch CI 91dce2
 Prefix;Vendor;Class
Open vSwitch CI 91dce2
 \_;\_;\_
Open vSwitch CI 91dce2
@@ -422,7 +422,7 @@ ovs\-fields \- protocol header fields in OpenFlow and Open vSwitch
Open vSwitch CI 91dce2
         elif node.nodeType == node.COMMENT_NODE:
Open vSwitch CI 91dce2
             pass
Open vSwitch CI 91dce2
         else:
Open vSwitch CI 91dce2
-            s += build.nroff.block_xml_to_nroff([node])
Open vSwitch CI 91dce2
+            s += nroff.block_xml_to_nroff([node])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     for f in fields:
Open vSwitch CI 91dce2
         if "used" not in f:
Open vSwitch CI 91dce2
diff --git a/build-aux/gen_ofp_field_decoders b/build-aux/gen_ofp_field_decoders
Open vSwitch CI 91dce2
index 0b797ee8c..0cb6108c2 100755
Open vSwitch CI 91dce2
--- a/build-aux/gen_ofp_field_decoders
Open vSwitch CI 91dce2
+++ b/build-aux/gen_ofp_field_decoders
Open vSwitch CI 91dce2
@@ -2,7 +2,7 @@
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 import argparse
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-import build.extract_ofp_fields as extract_fields
Open vSwitch CI 91dce2
+from ovs_build_helpers.extract_ofp_fields import extract_ofp_fields
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 def main():
Open vSwitch CI 91dce2
@@ -19,7 +19,7 @@ def main():
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     args = parser.parse_args()
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-    fields = extract_fields.extract_ofp_fields(args.metaflow)
Open vSwitch CI 91dce2
+    fields = extract_ofp_fields(args.metaflow)
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     field_decoders = {}
Open vSwitch CI 91dce2
     aliases = {}
Open vSwitch CI 91dce2
diff --git a/build-aux/sodepends.py b/build-aux/sodepends.py
Open vSwitch CI 91dce2
index 45812bcbd..ac8dd61a4 100755
Open vSwitch CI 91dce2
--- a/build-aux/sodepends.py
Open vSwitch CI 91dce2
+++ b/build-aux/sodepends.py
Open vSwitch CI 91dce2
@@ -14,9 +14,10 @@
Open vSwitch CI 91dce2
 # See the License for the specific language governing permissions and
Open vSwitch CI 91dce2
 # limitations under the License.
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-from build import soutil
Open vSwitch CI 91dce2
 import sys
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+from ovs_build_helpers import soutil
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 def sodepends(include_dirs, filenames, dst):
Open vSwitch CI 91dce2
     ok = True
Open vSwitch CI 91dce2
diff --git a/build-aux/soexpand.py b/build-aux/soexpand.py
Open vSwitch CI 91dce2
index 00adcf47a..7d4dc0486 100755
Open vSwitch CI 91dce2
--- a/build-aux/soexpand.py
Open vSwitch CI 91dce2
+++ b/build-aux/soexpand.py
Open vSwitch CI 91dce2
@@ -14,9 +14,10 @@
Open vSwitch CI 91dce2
 # See the License for the specific language governing permissions and
Open vSwitch CI 91dce2
 # limitations under the License.
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-from build import soutil
Open vSwitch CI 91dce2
 import sys
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+from ovs_build_helpers import soutil
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 def soexpand(include_dirs, src, dst):
Open vSwitch CI 91dce2
     ok = True
Open vSwitch CI 91dce2
diff --git a/build-aux/xml2nroff b/build-aux/xml2nroff
Open vSwitch CI 91dce2
index ee5553f45..3e937910b 100755
Open vSwitch CI 91dce2
--- a/build-aux/xml2nroff
Open vSwitch CI 91dce2
+++ b/build-aux/xml2nroff
Open vSwitch CI 91dce2
@@ -18,7 +18,7 @@ import getopt
Open vSwitch CI 91dce2
 import sys
Open vSwitch CI 91dce2
 import xml.dom.minidom
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-import build.nroff
Open vSwitch CI 91dce2
+from ovs_build_helpers import nroff
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 argv0 = sys.argv[0]
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
@@ -90,10 +90,10 @@ def manpage_to_nroff(xml_file, subst, include_path, version=None):
Open vSwitch CI 91dce2
 .  I "\\$1"
Open vSwitch CI 91dce2
 .  RE
Open vSwitch CI 91dce2
 ..
Open vSwitch CI 91dce2
-''' % (build.nroff.text_to_nroff(program), build.nroff.text_to_nroff(section),
Open vSwitch CI 91dce2
-       build.nroff.text_to_nroff(title), build.nroff.text_to_nroff(version))
Open vSwitch CI 91dce2
+''' % (nroff.text_to_nroff(program), nroff.text_to_nroff(section),
Open vSwitch CI 91dce2
+       nroff.text_to_nroff(title), nroff.text_to_nroff(version))
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-    s += build.nroff.block_xml_to_nroff(doc.childNodes) + "\n"
Open vSwitch CI 91dce2
+    s += nroff.block_xml_to_nroff(doc.childNodes) + "\n"
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     return s
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
@@ -139,7 +139,7 @@ if __name__ == "__main__":
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     try:
Open vSwitch CI 91dce2
         s = manpage_to_nroff(args[0], subst, include_path, version)
Open vSwitch CI 91dce2
-    except build.nroff.error.Error as e:
Open vSwitch CI 91dce2
+    except nroff.error.Error as e:
Open vSwitch CI 91dce2
         sys.stderr.write("%s: %s\n" % (argv0, e.msg))
Open vSwitch CI 91dce2
         sys.exit(1)
Open vSwitch CI 91dce2
     for line in s.splitlines():
Open vSwitch CI 91dce2
diff --git a/configure.ac b/configure.ac
Open vSwitch CI cb0c1f
index 320509c5f..764479514 100644
Open vSwitch CI 91dce2
--- a/configure.ac
Open vSwitch CI 91dce2
+++ b/configure.ac
Open vSwitch CI 91dce2
@@ -13,7 +13,7 @@
Open vSwitch CI 91dce2
 # limitations under the License.
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 AC_PREREQ(2.63)
Open vSwitch CI 91dce2
-AC_INIT(openvswitch, 3.2.0, bugs@openvswitch.org)
Open vSwitch CI cb0c1f
+AC_INIT(openvswitch, 3.2.2, bugs@openvswitch.org)
Open vSwitch CI 91dce2
 AC_CONFIG_SRCDIR([vswitchd/ovs-vswitchd.c])
Open vSwitch CI 91dce2
 AC_CONFIG_MACRO_DIR([m4])
Open vSwitch CI 91dce2
 AC_CONFIG_AUX_DIR([build-aux])
Open vSwitch CI 91dce2
@@ -21,7 +21,11 @@ AC_CONFIG_HEADERS([config.h])
Open vSwitch CI 91dce2
 AC_CONFIG_TESTDIR([tests])
Open vSwitch CI 91dce2
 AM_INIT_AUTOMAKE([tar-pax])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-AC_PROG_CC_C99
Open vSwitch CI 91dce2
+# AC_PROG_CC doesn't try enabling C99 in autoconf 2.69 and below, but
Open vSwitch CI 91dce2
+# AC_PROG_CC_C99 is deprecated in newer ones.  In autoconf 2.70+ both
Open vSwitch CI 91dce2
+# will try enabling features up to C11.
Open vSwitch CI 91dce2
+m4_version_prereq([2.70], [AC_PROG_CC], [AC_PROG_CC_C99])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 AM_PROG_CC_C_O
Open vSwitch CI 91dce2
 AC_PROG_CXX
Open vSwitch CI 91dce2
 AC_PROG_CPP
Open vSwitch CI 91dce2
diff --git a/debian/changelog b/debian/changelog
Open vSwitch CI cb0c1f
index 8757e5cb2..780d1e2d8 100644
Open vSwitch CI 91dce2
--- a/debian/changelog
Open vSwitch CI 91dce2
+++ b/debian/changelog
Open vSwitch CI cb0c1f
@@ -1,3 +1,15 @@
Open vSwitch CI cb0c1f
+openvswitch (3.2.2-1) unstable; urgency=low
Open vSwitch CI cb0c1f
+   [ Open vSwitch team ]
Open vSwitch CI cb0c1f
+   * New upstream version
Open vSwitch CI cb0c1f
+
Open vSwitch CI cb0c1f
+ -- Open vSwitch team <dev@openvswitch.org>  Tue, 17 Oct 2023 13:02:27 +0200
Open vSwitch CI cb0c1f
+
Open vSwitch CI 91dce2
+openvswitch (3.2.1-1) unstable; urgency=low
Open vSwitch CI 91dce2
+   [ Open vSwitch team ]
Open vSwitch CI 91dce2
+   * New upstream version
Open vSwitch CI 91dce2
+
Open vSwitch CI cb0c1f
+ -- Open vSwitch team <dev@openvswitch.org>  Tue, 17 Oct 2023 13:02:27 +0200
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 openvswitch (3.2.0-1) unstable; urgency=low
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
    * New upstream version
Open vSwitch CI 91dce2
diff --git a/include/openvswitch/compiler.h b/include/openvswitch/compiler.h
Open vSwitch CI 91dce2
index cf009f826..52614a5ac 100644
Open vSwitch CI 91dce2
--- a/include/openvswitch/compiler.h
Open vSwitch CI 91dce2
+++ b/include/openvswitch/compiler.h
Open vSwitch CI 91dce2
@@ -37,6 +37,16 @@
Open vSwitch CI 91dce2
 #define OVS_NO_RETURN
Open vSwitch CI 91dce2
 #endif
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+#ifndef typeof
Open vSwitch CI 91dce2
+#define typeof __typeof__
Open vSwitch CI 91dce2
+#endif
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+#ifndef __cplusplus
Open vSwitch CI 91dce2
+#ifndef asm
Open vSwitch CI 91dce2
+#define asm __asm__
Open vSwitch CI 91dce2
+#endif
Open vSwitch CI 91dce2
+#endif
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 #if __GNUC__ && !__CHECKER__
Open vSwitch CI 91dce2
 #define OVS_UNUSED __attribute__((__unused__))
Open vSwitch CI 91dce2
 #define OVS_PRINTF_FORMAT(FMT, ARG1) __attribute__((__format__(printf, FMT, ARG1)))
Open vSwitch CI 91dce2
diff --git a/lib/automake.mk b/lib/automake.mk
Open vSwitch CI 91dce2
index e64ee76ce..24b0ffefe 100644
Open vSwitch CI 91dce2
--- a/lib/automake.mk
Open vSwitch CI 91dce2
+++ b/lib/automake.mk
Open vSwitch CI 91dce2
@@ -451,7 +451,7 @@ lib_libsflow_la_SOURCES = \
Open vSwitch CI 91dce2
 	lib/sflow_poller.c \
Open vSwitch CI 91dce2
 	lib/sflow_receiver.c
Open vSwitch CI 91dce2
 lib_libsflow_la_CPPFLAGS = $(AM_CPPFLAGS)
Open vSwitch CI 91dce2
-lib_libsflow_la_CFLAGS = $(AM_CFLAGS)
Open vSwitch CI 91dce2
+lib_libsflow_la_CFLAGS = $(AM_CFLAGS) -D_BSD_SOURCE -D_DEFAULT_SOURCE
Open vSwitch CI 91dce2
 if HAVE_WNO_UNUSED
Open vSwitch CI 91dce2
 lib_libsflow_la_CFLAGS += -Wno-unused
Open vSwitch CI 91dce2
 endif
Open vSwitch CI 5bc928
diff --git a/lib/db-ctl-base.c b/lib/db-ctl-base.c
Open vSwitch CI 5bc928
index 5d2635946..3a8068b12 100644
Open vSwitch CI 5bc928
--- a/lib/db-ctl-base.c
Open vSwitch CI 5bc928
+++ b/lib/db-ctl-base.c
Open vSwitch CI 5bc928
@@ -820,6 +820,7 @@ check_condition(const struct ovsdb_idl_table_class *table,
Open vSwitch CI 5bc928
         type.value.type = OVSDB_TYPE_VOID;
Open vSwitch CI 5bc928
         error = ovsdb_datum_from_string(&b, &type, value_string, symtab);
Open vSwitch CI 5bc928
         if (error) {
Open vSwitch CI 5bc928
+            ovsdb_atom_destroy(&want_key, column->type.key.type);
Open vSwitch CI 5bc928
             goto out;
Open vSwitch CI 5bc928
         }
Open vSwitch CI 5bc928
 
Open vSwitch CI 5bc928
@@ -1374,6 +1375,7 @@ set_column(const struct ovsdb_idl_table_class *table,
Open vSwitch CI 5bc928
         error = ovsdb_atom_from_string(&value, NULL, &column->type.value,
Open vSwitch CI 5bc928
                                        value_string, symtab);
Open vSwitch CI 5bc928
         if (error) {
Open vSwitch CI 5bc928
+            ovsdb_atom_destroy(&key, column->type.key.type);
Open vSwitch CI 5bc928
             goto out;
Open vSwitch CI 5bc928
         }
Open vSwitch CI 5bc928
 
Open vSwitch CI 91dce2
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
Open vSwitch CI 91dce2
index 9730e0eec..157694bcf 100644
Open vSwitch CI 91dce2
--- a/lib/dpif-netdev.c
Open vSwitch CI 91dce2
+++ b/lib/dpif-netdev.c
Open vSwitch CI 91dce2
@@ -3380,14 +3380,13 @@ static inline void
Open vSwitch CI 91dce2
 netdev_flow_key_init(struct netdev_flow_key *key,
Open vSwitch CI 91dce2
                      const struct flow *flow)
Open vSwitch CI 91dce2
 {
Open vSwitch CI 91dce2
-    uint64_t *dst = miniflow_values(&key->mf);
Open vSwitch CI 91dce2
     uint32_t hash = 0;
Open vSwitch CI 91dce2
     uint64_t value;
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     miniflow_map_init(&key->mf, flow);
Open vSwitch CI 91dce2
     miniflow_init(&key->mf, flow);
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-    size_t n = dst - miniflow_get_values(&key->mf);
Open vSwitch CI 91dce2
+    size_t n = miniflow_n_values(&key->mf);
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     FLOW_FOR_EACH_IN_MAPS (value, flow, key->mf.map) {
Open vSwitch CI 91dce2
         hash = hash_add64(hash, value);
Open vSwitch CI 91dce2
diff --git a/lib/fatal-signal.c b/lib/fatal-signal.c
Open vSwitch CI 91dce2
index 77f0c87dd..953150074 100644
Open vSwitch CI 91dce2
--- a/lib/fatal-signal.c
Open vSwitch CI 91dce2
+++ b/lib/fatal-signal.c
Open vSwitch CI 91dce2
@@ -138,10 +138,6 @@ fatal_signal_init(void)
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
         backtrace_capture(&dummy_bt);
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-        if (!dummy_bt.n_frames) {
Open vSwitch CI 91dce2
-            VLOG_DBG("Capturing of dummy backtrace has failed.");
Open vSwitch CI 91dce2
-        }
Open vSwitch CI 91dce2
-
Open vSwitch CI 91dce2
         fatal_signal_create_wakeup_events();
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 #ifdef _WIN32
Open vSwitch CI 91dce2
diff --git a/lib/meta-flow.xml b/lib/meta-flow.xml
Open vSwitch CI 91dce2
index bdd12f6a7..ac72a44bc 100644
Open vSwitch CI 91dce2
--- a/lib/meta-flow.xml
Open vSwitch CI 91dce2
+++ b/lib/meta-flow.xml
Open vSwitch CI 91dce2
@@ -3517,23 +3517,24 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123)
Open vSwitch CI 91dce2
     

Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     <tbl>
Open vSwitch CI 91dce2
+tab(;);
Open vSwitch CI 91dce2
 r r r r r.
Open vSwitch CI 91dce2
-Criteria        OpenFlow 1.0    OpenFlow 1.1    OpenFlow 1.2+   NXM
Open vSwitch CI 91dce2
-\_      \_      \_      \_      \_
Open vSwitch CI 91dce2
-[1]     \fL????\fR/\fL1\fR,\fL??\fR/\fL?\fR     \fL????\fR/\fL1\fR,\fL??\fR/\fL?\fR     \fL0000\fR/\fL0000\fR,\fL--\fR  \fL0000\fR/\fL0000\fR
Open vSwitch CI 91dce2
-[2]     \fLffff\fR/\fL0\fR,\fL??\fR/\fL?\fR     \fLffff\fR/\fL0\fR,\fL??\fR/\fL?\fR     \fL0000\fR/\fLffff\fR,\fL--\fR  \fL0000\fR/\fLffff\fR
Open vSwitch CI 91dce2
-[3]     \fL0xxx\fR/\fL0\fR,\fL??\fR/\fL1\fR     \fL0xxx\fR/\fL0\fR,\fL??\fR/\fL1\fR     \fL1xxx\fR/\fLffff\fR,\fL--\fR  \fL1xxx\fR/\fL1fff\fR
Open vSwitch CI 91dce2
-[4]     \fL????\fR/\fL1\fR,\fL0y\fR/\fL0\fR     \fLfffe\fR/\fL0\fR,\fL0y\fR/\fL0\fR     \fL1000\fR/\fL1000\fR,\fL0y\fR  \fLz000\fR/\fLf000\fR
Open vSwitch CI 91dce2
-[5]     \fL0xxx\fR/\fL0\fR,\fL0y\fR/\fL0\fR     \fL0xxx\fR/\fL0\fR,\fL0y\fR/\fL0\fR     \fL1xxx\fR/\fLffff\fR,\fL0y\fR  \fLzxxx\fR/\fLffff\fR
Open vSwitch CI 91dce2
+Criteria;OpenFlow 1.0;OpenFlow 1.1;OpenFlow 1.2+;NXM
Open vSwitch CI 91dce2
+\_;\_;\_;\_;\_
Open vSwitch CI 91dce2
+[1];\fL????\fR/\fL1\fR,\fL??\fR/\fL?\fR;\fL????\fR/\fL1\fR,\fL??\fR/\fL?\fR;\fL0000\fR/\fL0000\fR,\fL--\fR;\fL0000\fR/\fL0000\fR
Open vSwitch CI 91dce2
+[2];\fLffff\fR/\fL0\fR,\fL??\fR/\fL?\fR;\fLffff\fR/\fL0\fR,\fL??\fR/\fL?\fR;\fL0000\fR/\fLffff\fR,\fL--\fR;\fL0000\fR/\fLffff\fR
Open vSwitch CI 91dce2
+[3];\fL0xxx\fR/\fL0\fR,\fL??\fR/\fL1\fR;\fL0xxx\fR/\fL0\fR,\fL??\fR/\fL1\fR;\fL1xxx\fR/\fLffff\fR,\fL--\fR;\fL1xxx\fR/\fL1fff\fR
Open vSwitch CI 91dce2
+[4];\fL????\fR/\fL1\fR,\fL0y\fR/\fL0\fR;\fLfffe\fR/\fL0\fR,\fL0y\fR/\fL0\fR;\fL1000\fR/\fL1000\fR,\fL0y\fR;\fLz000\fR/\fLf000\fR
Open vSwitch CI 91dce2
+[5];\fL0xxx\fR/\fL0\fR,\fL0y\fR/\fL0\fR;\fL0xxx\fR/\fL0\fR,\fL0y\fR/\fL0\fR;\fL1xxx\fR/\fLffff\fR,\fL0y\fR;\fLzxxx\fR/\fLffff\fR
Open vSwitch CI 91dce2
 .T&
Open vSwitch CI 91dce2
-r r c c r.
Open vSwitch CI 91dce2
-[6]     (none)  (none)  \fL1001\fR/\fL1001\fR,\fL--\fR  \fL1001\fR/\fL1001\fR
Open vSwitch CI 91dce2
+r c c r r.
Open vSwitch CI 91dce2
+[6];(none);(none);\fL1001\fR/\fL1001\fR,\fL--\fR;\fL1001\fR/\fL1001\fR
Open vSwitch CI 91dce2
 .T&
Open vSwitch CI 91dce2
-r r c c c.
Open vSwitch CI 91dce2
-[7]     (none)  (none)  (none)  \fL3000\fR/\fL3000\fR
Open vSwitch CI 91dce2
-[8]     (none)  (none)  (none)  \fL0000\fR/\fL0fff\fR
Open vSwitch CI 91dce2
-[9]     (none)  (none)  (none)  \fL0000\fR/\fLf000\fR
Open vSwitch CI 91dce2
-[10]    (none)  (none)  (none)  \fL0000\fR/\fLefff\fR
Open vSwitch CI 91dce2
+r c c c r.
Open vSwitch CI 91dce2
+[7];(none);(none);(none);\fL3000\fR/\fL3000\fR
Open vSwitch CI 91dce2
+[8];(none);(none);(none);\fL0000\fR/\fL0fff\fR
Open vSwitch CI 91dce2
+[9];(none);(none);(none);\fL0000\fR/\fLf000\fR
Open vSwitch CI 91dce2
+[10];(none);(none);(none);\fL0000\fR/\fLefff\fR
Open vSwitch CI 91dce2
     </tbl>
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     

Open vSwitch CI 91dce2
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
Open vSwitch CI 91dce2
index 8f1361e21..55700250d 100644
Open vSwitch CI 91dce2
--- a/lib/netdev-dpdk.c
Open vSwitch CI 91dce2
+++ b/lib/netdev-dpdk.c
Open vSwitch CI 91dce2
@@ -1312,6 +1312,16 @@ dpdk_eth_dev_init(struct netdev_dpdk *dev)
Open vSwitch CI 91dce2
         dev->hw_ol_features &= ~NETDEV_RX_HW_SCATTER;
Open vSwitch CI 91dce2
     }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+    if (!strcmp(info.driver_name, "net_tap")) {
Open vSwitch CI 91dce2
+        /* FIXME: L4 checksum offloading is broken in DPDK net/tap driver.
Open vSwitch CI 91dce2
+         * This workaround can be removed once the fix makes it to a DPDK
Open vSwitch CI 91dce2
+         * LTS release used by OVS. */
Open vSwitch CI 91dce2
+        VLOG_INFO("%s: disabled Tx L4 checksum offloads for a net/tap port.",
Open vSwitch CI 91dce2
+                  netdev_get_name(&dev->up));
Open vSwitch CI 91dce2
+        info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_UDP_CKSUM;
Open vSwitch CI 91dce2
+        info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_TCP_CKSUM;
Open vSwitch CI 91dce2
+    }
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
     if (info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPV4_CKSUM) {
Open vSwitch CI 91dce2
         dev->hw_ol_features |= NETDEV_TX_IPV4_CKSUM_OFFLOAD;
Open vSwitch CI 91dce2
     } else {
Open vSwitch CI 91dce2
@@ -2431,6 +2441,7 @@ netdev_dpdk_prep_hwol_packet(struct netdev_dpdk *dev, struct rte_mbuf *mbuf)
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     if (!(mbuf->ol_flags & (RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_L4_MASK
Open vSwitch CI 91dce2
                             | RTE_MBUF_F_TX_TCP_SEG))) {
Open vSwitch CI 91dce2
+        mbuf->ol_flags &= ~(RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_IPV6);
Open vSwitch CI 91dce2
         return true;
Open vSwitch CI 91dce2
     }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
Open vSwitch CI 91dce2
index 14bc87771..992627fa2 100644
Open vSwitch CI 91dce2
--- a/lib/netdev-offload-dpdk.c
Open vSwitch CI 91dce2
+++ b/lib/netdev-offload-dpdk.c
Open vSwitch CI 91dce2
@@ -2537,15 +2537,15 @@ out:
Open vSwitch CI 91dce2
     return ret;
Open vSwitch CI 91dce2
 }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-static int
Open vSwitch CI 91dce2
-netdev_offload_dpdk_flow_flush(struct netdev *netdev)
Open vSwitch CI 91dce2
+static void
Open vSwitch CI 91dce2
+flush_netdev_flows_in_related(struct netdev *netdev, struct netdev *related)
Open vSwitch CI 91dce2
 {
Open vSwitch CI 91dce2
-    struct cmap *map = offload_data_map(netdev);
Open vSwitch CI 91dce2
-    struct ufid_to_rte_flow_data *data;
Open vSwitch CI 91dce2
     unsigned int tid = netdev_offload_thread_id();
Open vSwitch CI 91dce2
+    struct cmap *map = offload_data_map(related);
Open vSwitch CI 91dce2
+    struct ufid_to_rte_flow_data *data;
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     if (!map) {
Open vSwitch CI 91dce2
-        return -1;
Open vSwitch CI 91dce2
+        return;
Open vSwitch CI 91dce2
     }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     CMAP_FOR_EACH (data, node, map) {
Open vSwitch CI 91dce2
@@ -2556,6 +2556,31 @@ netdev_offload_dpdk_flow_flush(struct netdev *netdev)
Open vSwitch CI 91dce2
             netdev_offload_dpdk_flow_destroy(data);
Open vSwitch CI 91dce2
         }
Open vSwitch CI 91dce2
     }
Open vSwitch CI 91dce2
+}
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+static bool
Open vSwitch CI 91dce2
+flush_in_vport_cb(struct netdev *vport,
Open vSwitch CI 91dce2
+                  odp_port_t odp_port OVS_UNUSED,
Open vSwitch CI 91dce2
+                  void *aux)
Open vSwitch CI 91dce2
+{
Open vSwitch CI 91dce2
+    struct netdev *netdev = aux;
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+    /* Only vports are related to physical devices. */
Open vSwitch CI 91dce2
+    if (netdev_vport_is_vport_class(vport->netdev_class)) {
Open vSwitch CI 91dce2
+        flush_netdev_flows_in_related(netdev, vport);
Open vSwitch CI 91dce2
+    }
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+    return false;
Open vSwitch CI 91dce2
+}
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+static int
Open vSwitch CI 91dce2
+netdev_offload_dpdk_flow_flush(struct netdev *netdev)
Open vSwitch CI 91dce2
+{
Open vSwitch CI 91dce2
+    flush_netdev_flows_in_related(netdev, netdev);
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+    if (!netdev_vport_is_vport_class(netdev->netdev_class)) {
Open vSwitch CI 91dce2
+        netdev_ports_traverse(netdev->dpif_type, flush_in_vport_cb, netdev);
Open vSwitch CI 91dce2
+    }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     return 0;
Open vSwitch CI 91dce2
 }
Open vSwitch CI 91dce2
diff --git a/lib/netlink-conntrack.c b/lib/netlink-conntrack.c
Open vSwitch CI 91dce2
index 4fcde9ba1..492bfcffb 100644
Open vSwitch CI 91dce2
--- a/lib/netlink-conntrack.c
Open vSwitch CI 91dce2
+++ b/lib/netlink-conntrack.c
Open vSwitch CI 91dce2
@@ -579,7 +579,8 @@ nl_ct_put_tuple_proto(struct ofpbuf *buf, const struct ct_dpif_tuple *tuple)
Open vSwitch CI 91dce2
         nl_msg_put_u8(buf, CTA_PROTO_ICMPV6_TYPE, tuple->icmp_type);
Open vSwitch CI 91dce2
         nl_msg_put_u8(buf, CTA_PROTO_ICMPV6_CODE, tuple->icmp_code);
Open vSwitch CI 91dce2
     } else if (tuple->ip_proto == IPPROTO_TCP ||
Open vSwitch CI 91dce2
-               tuple->ip_proto == IPPROTO_UDP) {
Open vSwitch CI 91dce2
+               tuple->ip_proto == IPPROTO_UDP ||
Open vSwitch CI 91dce2
+               tuple->ip_proto == IPPROTO_SCTP) {
Open vSwitch CI 91dce2
         nl_msg_put_be16(buf, CTA_PROTO_SRC_PORT, tuple->src_port);
Open vSwitch CI 91dce2
         nl_msg_put_be16(buf, CTA_PROTO_DST_PORT, tuple->dst_port);
Open vSwitch CI 91dce2
     } else {
Open vSwitch CI 5bc928
diff --git a/lib/tc.c b/lib/tc.c
Open vSwitch CI 5bc928
index f49048cda..6b38925c3 100644
Open vSwitch CI 5bc928
--- a/lib/tc.c
Open vSwitch CI 5bc928
+++ b/lib/tc.c
Open vSwitch CI 5bc928
@@ -3851,15 +3851,13 @@ log_tc_flower_match(const char *msg,
Open vSwitch CI 5bc928
 
Open vSwitch CI 5bc928
         ds_put_cstr(&s, "\nExpected Actions:\n");
Open vSwitch CI 5bc928
         for (i = 0, action = a->actions; i < a->action_count; i++, action++) {
Open vSwitch CI 5bc928
-            ds_put_cstr(&s, " - ");
Open vSwitch CI 5bc928
-            ds_put_hex(&s, action, sizeof *action);
Open vSwitch CI 5bc928
-            ds_put_cstr(&s, "\n");
Open vSwitch CI 5bc928
+            ds_put_format(&s, " - %d -\n", i);
Open vSwitch CI 5bc928
+            ds_put_sparse_hex_dump(&s, action, sizeof *action, 0, false);
Open vSwitch CI 5bc928
         }
Open vSwitch CI 5bc928
-        ds_put_cstr(&s, "Received Actions:\n");
Open vSwitch CI 5bc928
+        ds_put_cstr(&s, "\nReceived Actions:\n");
Open vSwitch CI 5bc928
         for (i = 0, action = b->actions; i < b->action_count; i++, action++) {
Open vSwitch CI 5bc928
-            ds_put_cstr(&s, " - ");
Open vSwitch CI 5bc928
-            ds_put_hex(&s, action, sizeof *action);
Open vSwitch CI 5bc928
-            ds_put_cstr(&s, "\n");
Open vSwitch CI 5bc928
+            ds_put_format(&s, " - %d -\n", i);
Open vSwitch CI 5bc928
+            ds_put_sparse_hex_dump(&s, action, sizeof *action, 0, false);
Open vSwitch CI 5bc928
         }
Open vSwitch CI 5bc928
     } else {
Open vSwitch CI 5bc928
         /* Only dump the delta in actions. */
Open vSwitch CI 5bc928
@@ -3868,12 +3866,13 @@ log_tc_flower_match(const char *msg,
Open vSwitch CI 5bc928
 
Open vSwitch CI 5bc928
         for (int i = 0; i < a->action_count; i++, action_a++, action_b++) {
Open vSwitch CI 5bc928
             if (memcmp(action_a, action_b, sizeof *action_a)) {
Open vSwitch CI 5bc928
-                ds_put_format(&s,
Open vSwitch CI 5bc928
-                              "\nAction %d mismatch:\n - Expected Action: ",
Open vSwitch CI 5bc928
-                              i);
Open vSwitch CI 5bc928
-                ds_put_hex(&s, action_a, sizeof *action_a);
Open vSwitch CI 5bc928
-                ds_put_cstr(&s, "\n - Received Action: ");
Open vSwitch CI 5bc928
-                ds_put_hex(&s, action_b, sizeof *action_b);
Open vSwitch CI 5bc928
+                ds_put_format(&s, "\nAction %d mismatch:\n"
Open vSwitch CI 5bc928
+                                  " - Expected Action:\n", i);
Open vSwitch CI 5bc928
+                ds_put_sparse_hex_dump(&s, action_a, sizeof *action_a,
Open vSwitch CI 5bc928
+                                       0, false);
Open vSwitch CI 5bc928
+                ds_put_cstr(&s, " - Received Action:\n");
Open vSwitch CI 5bc928
+                ds_put_sparse_hex_dump(&s, action_b, sizeof *action_b,
Open vSwitch CI 5bc928
+                                       0, false);
Open vSwitch CI 5bc928
             }
Open vSwitch CI 5bc928
         }
Open vSwitch CI 5bc928
     }
Open vSwitch CI 91dce2
diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c
Open vSwitch CI 91dce2
index b092e9e04..f7f7b1279 100644
Open vSwitch CI 91dce2
--- a/ofproto/connmgr.c
Open vSwitch CI 91dce2
+++ b/ofproto/connmgr.c
Open vSwitch CI 91dce2
@@ -1209,7 +1209,7 @@ ofconn_create(struct ofservice *ofservice, struct rconn *rconn,
Open vSwitch CI 91dce2
     hmap_init(&ofconn->bundles);
Open vSwitch CI 91dce2
     ofconn->next_bundle_expiry_check = time_msec() + BUNDLE_EXPIRY_INTERVAL;
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-    ofconn_set_rate_limit(ofconn, settings->rate_limit, settings->burst_limit);
Open vSwitch CI 91dce2
+    ofservice_reconfigure(ofservice, settings);
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     ovs_mutex_unlock(&ofproto_mutex);
Open vSwitch CI 91dce2
 }
Open vSwitch CI 91dce2
@@ -1915,10 +1915,7 @@ connmgr_count_hidden_rules(const struct connmgr *mgr)
Open vSwitch CI 91dce2
 }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 /* Creates a new ofservice for 'target' in 'mgr'.  Returns 0 if successful,
Open vSwitch CI 91dce2
- * otherwise a positive errno value.
Open vSwitch CI 91dce2
- *
Open vSwitch CI 91dce2
- * ofservice_reconfigure() must be called to fully configure the new
Open vSwitch CI 91dce2
- * ofservice. */
Open vSwitch CI 91dce2
+ * otherwise a positive errno value. */
Open vSwitch CI 91dce2
 static void
Open vSwitch CI 91dce2
 ofservice_create(struct connmgr *mgr, const char *target,
Open vSwitch CI 91dce2
                  const struct ofproto_controller *c)
Open vSwitch CI 91dce2
@@ -1928,7 +1925,8 @@ ofservice_create(struct connmgr *mgr, const char *target,
Open vSwitch CI 91dce2
     struct rconn *rconn = NULL;
Open vSwitch CI 91dce2
     if (!vconn_verify_name(target)) {
Open vSwitch CI 91dce2
         char *name = ofconn_make_name(mgr, target);
Open vSwitch CI 91dce2
-        rconn = rconn_create(5, 8, c->dscp, c->allowed_versions);
Open vSwitch CI 91dce2
+        rconn = rconn_create(c->probe_interval, c->max_backoff,
Open vSwitch CI 91dce2
+                             c->dscp, c->allowed_versions);
Open vSwitch CI 91dce2
         rconn_connect(rconn, target, name);
Open vSwitch CI 91dce2
         free(name);
Open vSwitch CI 91dce2
     } else if (!pvconn_verify_name(target)) {
Open vSwitch CI 91dce2
@@ -1951,7 +1949,6 @@ ofservice_create(struct connmgr *mgr, const char *target,
Open vSwitch CI 91dce2
     ofservice->rconn = rconn;
Open vSwitch CI 91dce2
     ofservice->pvconn = pvconn;
Open vSwitch CI 91dce2
     ofservice->s = *c;
Open vSwitch CI 91dce2
-    ofservice_reconfigure(ofservice, c);
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
     VLOG_INFO("%s: added %s controller \"%s\"",
Open vSwitch CI 91dce2
               mgr->name, ofconn_type_to_string(ofservice->type), target);
Open vSwitch CI 5bc928
diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
Open vSwitch CI 5bc928
index 04b583f81..292500f21 100644
Open vSwitch CI 5bc928
--- a/ofproto/ofproto-dpif-upcall.c
Open vSwitch CI 5bc928
+++ b/ofproto/ofproto-dpif-upcall.c
Open vSwitch CI 5bc928
@@ -988,7 +988,7 @@ udpif_revalidator(void *arg)
Open vSwitch CI 5bc928
             udpif->reval_exit = latch_is_set(&udpif->exit_latch);
Open vSwitch CI 5bc928
 
Open vSwitch CI 5bc928
             start_time = time_msec();
Open vSwitch CI 5bc928
-            if (!udpif->reval_exit) {
Open vSwitch CI 5bc928
+            if (!udpif->reval_exit && !udpif->pause) {
Open vSwitch CI 5bc928
                 bool terse_dump;
Open vSwitch CI 5bc928
 
Open vSwitch CI 5bc928
                 terse_dump = udpif_use_ufid(udpif);
Open vSwitch CI 5bc928
@@ -998,10 +998,15 @@ udpif_revalidator(void *arg)
Open vSwitch CI 5bc928
             }
Open vSwitch CI 5bc928
         }
Open vSwitch CI 5bc928
 
Open vSwitch CI 5bc928
-        /* Wait for the leader to start the flow dump. */
Open vSwitch CI 5bc928
+        /* Wait for the leader to reach this point. */
Open vSwitch CI 5bc928
         ovs_barrier_block(&udpif->reval_barrier);
Open vSwitch CI 5bc928
         if (udpif->pause) {
Open vSwitch CI 5bc928
             revalidator_pause(revalidator);
Open vSwitch CI 5bc928
+            if (!udpif->reval_exit) {
Open vSwitch CI 5bc928
+                /* The main thread resumed all validators, but the leader
Open vSwitch CI 5bc928
+                 * didn't start the dump, go to next iteration. */
Open vSwitch CI 5bc928
+                continue;
Open vSwitch CI 5bc928
+            }
Open vSwitch CI 5bc928
         }
Open vSwitch CI 5bc928
 
Open vSwitch CI 5bc928
         if (udpif->reval_exit) {
Open vSwitch CI 5bc928
@@ -3195,11 +3200,19 @@ upcall_unixctl_purge(struct unixctl_conn *conn, int argc OVS_UNUSED,
Open vSwitch CI 5bc928
     struct udpif *udpif;
Open vSwitch CI 5bc928
 
Open vSwitch CI 5bc928
     LIST_FOR_EACH (udpif, list_node, &all_udpifs) {
Open vSwitch CI 5bc928
+        bool wake_up = false;
Open vSwitch CI 5bc928
         int n;
Open vSwitch CI 5bc928
 
Open vSwitch CI 5bc928
+        if (!latch_is_set(&udpif->pause_latch)) {
Open vSwitch CI 5bc928
+            udpif_pause_revalidators(udpif);
Open vSwitch CI 5bc928
+            wake_up = true;
Open vSwitch CI 5bc928
+        }
Open vSwitch CI 5bc928
         for (n = 0; n < udpif->n_revalidators; n++) {
Open vSwitch CI 5bc928
             revalidator_purge(&udpif->revalidators[n]);
Open vSwitch CI 5bc928
         }
Open vSwitch CI 5bc928
+        if (wake_up) {
Open vSwitch CI 5bc928
+            udpif_resume_revalidators(udpif);
Open vSwitch CI 5bc928
+        }
Open vSwitch CI 5bc928
     }
Open vSwitch CI 5bc928
     unixctl_command_reply(conn, "");
Open vSwitch CI 5bc928
 }
Open vSwitch CI 91dce2
diff --git a/ofproto/ofproto-dpif-xlate-cache.c b/ofproto/ofproto-dpif-xlate-cache.c
Open vSwitch CI 91dce2
index 9224ee2e6..2e1fcb3a6 100644
Open vSwitch CI 91dce2
--- a/ofproto/ofproto-dpif-xlate-cache.c
Open vSwitch CI 91dce2
+++ b/ofproto/ofproto-dpif-xlate-cache.c
Open vSwitch CI 91dce2
@@ -125,7 +125,7 @@ xlate_push_stats_entry(struct xc_entry *entry,
Open vSwitch CI 91dce2
     case XC_LEARN: {
Open vSwitch CI 91dce2
         enum ofperr error;
Open vSwitch CI 91dce2
         error = ofproto_flow_mod_learn(entry->learn.ofm, true,
Open vSwitch CI 91dce2
-                                       entry->learn.limit, NULL);
Open vSwitch CI 91dce2
+                                       entry->learn.limit, NULL, stats->used);
Open vSwitch CI 91dce2
         if (error) {
Open vSwitch CI 91dce2
             static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
Open vSwitch CI 91dce2
             VLOG_WARN_RL(&rl, "xcache LEARN action execution failed.");
Open vSwitch CI 91dce2
diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
Open vSwitch CI 91dce2
index 47ea0f47e..be4bd6657 100644
Open vSwitch CI 91dce2
--- a/ofproto/ofproto-dpif-xlate.c
Open vSwitch CI 91dce2
+++ b/ofproto/ofproto-dpif-xlate.c
Open vSwitch CI 91dce2
@@ -1615,7 +1615,8 @@ xlate_lookup_ofproto_(const struct dpif_backer *backer,
Open vSwitch CI 91dce2
         }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
         ofp_port_t in_port = recirc_id_node->state.metadata.in_port;
Open vSwitch CI 91dce2
-        if (in_port != OFPP_NONE && in_port != OFPP_CONTROLLER) {
Open vSwitch CI 91dce2
+        if (in_port != OFPP_NONE && in_port != OFPP_CONTROLLER &&
Open vSwitch CI 91dce2
+            !uuid_is_zero(&recirc_id_node->state.xport_uuid)) {
Open vSwitch CI 91dce2
             struct uuid xport_uuid = recirc_id_node->state.xport_uuid;
Open vSwitch CI 91dce2
             xport = xport_lookup_by_uuid(xcfg, &xport_uuid);
Open vSwitch CI 91dce2
             if (xport && xport->xbridge && xport->xbridge->ofproto) {
Open vSwitch CI 91dce2
@@ -1626,11 +1627,19 @@ xlate_lookup_ofproto_(const struct dpif_backer *backer,
Open vSwitch CI 91dce2
              * that the packet originated from the controller via an OpenFlow
Open vSwitch CI 91dce2
              * "packet-out".  The right thing to do is to find just the
Open vSwitch CI 91dce2
              * ofproto.  There is no xport, which is OK.
Open vSwitch CI 91dce2
+             * Also a zeroed xport_uuid with a valid in_port, means that
Open vSwitch CI 91dce2
+             * the packet originated from OFPP_CONTROLLER passed
Open vSwitch CI 91dce2
+             * through a patch port.
Open vSwitch CI 91dce2
              *
Open vSwitch CI 91dce2
              * OFPP_NONE can also indicate that a bond caused recirculation. */
Open vSwitch CI 91dce2
             struct uuid uuid = recirc_id_node->state.ofproto_uuid;
Open vSwitch CI 91dce2
             const struct xbridge *bridge = xbridge_lookup_by_uuid(xcfg, &uuid);
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
             if (bridge && bridge->ofproto) {
Open vSwitch CI 91dce2
+                if (in_port != OFPP_CONTROLLER && in_port != OFPP_NONE &&
Open vSwitch CI 91dce2
+                    !get_ofp_port(bridge, in_port)) {
Open vSwitch CI 91dce2
+                    goto xport_lookup;
Open vSwitch CI 91dce2
+                }
Open vSwitch CI 91dce2
                 if (errorp) {
Open vSwitch CI 91dce2
                     *errorp = NULL;
Open vSwitch CI 91dce2
                 }
Open vSwitch CI 91dce2
@@ -1643,6 +1652,7 @@ xlate_lookup_ofproto_(const struct dpif_backer *backer,
Open vSwitch CI 91dce2
         }
Open vSwitch CI 91dce2
     }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+xport_lookup:
Open vSwitch CI 91dce2
     xport = xport_lookup(xcfg, tnl_port_should_receive(flow)
Open vSwitch CI 91dce2
                          ? tnl_port_receive(flow)
Open vSwitch CI 91dce2
                          : odp_port_to_ofport(backer, flow->in_port.odp_port));
Open vSwitch CI 91dce2
@@ -5700,8 +5710,16 @@ xlate_learn_action(struct xlate_ctx *ctx, const struct ofpact_learn *learn)
Open vSwitch CI 91dce2
         if (!error) {
Open vSwitch CI 91dce2
             bool success = true;
Open vSwitch CI 91dce2
             if (ctx->xin->allow_side_effects) {
Open vSwitch CI 91dce2
+                long long int last_used;
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+                if (ctx->xin->resubmit_stats) {
Open vSwitch CI 91dce2
+                    last_used = ctx->xin->resubmit_stats->used;
Open vSwitch CI 91dce2
+                } else {
Open vSwitch CI 91dce2
+                    last_used = time_msec();
Open vSwitch CI 91dce2
+                }
Open vSwitch CI 91dce2
                 error = ofproto_flow_mod_learn(ofm, ctx->xin->xcache != NULL,
Open vSwitch CI 91dce2
-                                               learn->limit, &success);
Open vSwitch CI 91dce2
+                                               learn->limit, &success,
Open vSwitch CI 91dce2
+                                               last_used);
Open vSwitch CI 91dce2
             } else if (learn->limit) {
Open vSwitch CI 91dce2
                 if (!ofm->temp_rule
Open vSwitch CI 91dce2
                     || ofm->temp_rule->state != RULE_INSERTED) {
Open vSwitch CI 91dce2
diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
Open vSwitch CI 91dce2
index e22ca757a..ba5706f6a 100644
Open vSwitch CI 91dce2
--- a/ofproto/ofproto-dpif.c
Open vSwitch CI 91dce2
+++ b/ofproto/ofproto-dpif.c
Open vSwitch CI 91dce2
@@ -4880,7 +4880,7 @@ packet_xlate(struct ofproto *ofproto_, struct ofproto_packet_out *opo)
Open vSwitch CI 91dce2
             if (entry->type == XC_LEARN) {
Open vSwitch CI 91dce2
                 struct ofproto_flow_mod *ofm = entry->learn.ofm;
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-                error = ofproto_flow_mod_learn_refresh(ofm);
Open vSwitch CI 91dce2
+                error = ofproto_flow_mod_learn_refresh(ofm, time_msec());
Open vSwitch CI 91dce2
                 if (error) {
Open vSwitch CI 91dce2
                     goto error_out;
Open vSwitch CI 91dce2
                 }
Open vSwitch CI 91dce2
diff --git a/ofproto/ofproto-provider.h b/ofproto/ofproto-provider.h
Open vSwitch CI 91dce2
index 143ded690..9f7b8b6e8 100644
Open vSwitch CI 91dce2
--- a/ofproto/ofproto-provider.h
Open vSwitch CI 91dce2
+++ b/ofproto/ofproto-provider.h
Open vSwitch CI 91dce2
@@ -2027,9 +2027,11 @@ enum ofperr ofproto_flow_mod_init_for_learn(struct ofproto *,
Open vSwitch CI 91dce2
                                             struct ofproto_flow_mod *)
Open vSwitch CI 91dce2
     OVS_EXCLUDED(ofproto_mutex);
Open vSwitch CI 91dce2
 enum ofperr ofproto_flow_mod_learn(struct ofproto_flow_mod *, bool keep_ref,
Open vSwitch CI 91dce2
-                                   unsigned limit, bool *below_limit)
Open vSwitch CI 91dce2
+                                   unsigned limit, bool *below_limit,
Open vSwitch CI 91dce2
+                                   long long int last_used)
Open vSwitch CI 91dce2
     OVS_EXCLUDED(ofproto_mutex);
Open vSwitch CI 91dce2
-enum ofperr ofproto_flow_mod_learn_refresh(struct ofproto_flow_mod *ofm);
Open vSwitch CI 91dce2
+enum ofperr ofproto_flow_mod_learn_refresh(struct ofproto_flow_mod *ofm,
Open vSwitch CI 91dce2
+                                           long long int last_used);
Open vSwitch CI 91dce2
 enum ofperr ofproto_flow_mod_learn_start(struct ofproto_flow_mod *ofm)
Open vSwitch CI 91dce2
     OVS_REQUIRES(ofproto_mutex);
Open vSwitch CI 91dce2
 void ofproto_flow_mod_learn_revert(struct ofproto_flow_mod *ofm)
Open vSwitch CI 91dce2
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
Open vSwitch CI 91dce2
index dbf4958bc..e78c80d11 100644
Open vSwitch CI 91dce2
--- a/ofproto/ofproto.c
Open vSwitch CI 91dce2
+++ b/ofproto/ofproto.c
Open vSwitch CI 91dce2
@@ -5472,7 +5472,8 @@ ofproto_flow_mod_init_for_learn(struct ofproto *ofproto,
Open vSwitch CI 91dce2
 }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 enum ofperr
Open vSwitch CI 91dce2
-ofproto_flow_mod_learn_refresh(struct ofproto_flow_mod *ofm)
Open vSwitch CI 91dce2
+ofproto_flow_mod_learn_refresh(struct ofproto_flow_mod *ofm,
Open vSwitch CI 91dce2
+                               long long int last_used)
Open vSwitch CI 91dce2
 {
Open vSwitch CI 91dce2
     enum ofperr error = 0;
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
@@ -5493,9 +5494,37 @@ ofproto_flow_mod_learn_refresh(struct ofproto_flow_mod *ofm)
Open vSwitch CI 91dce2
      * this function is executed the rule will be reinstated. */
Open vSwitch CI 91dce2
     if (rule->state == RULE_REMOVED) {
Open vSwitch CI 91dce2
         struct cls_rule cr;
Open vSwitch CI 91dce2
+        struct oftable *table = &rule->ofproto->tables[rule->table_id];
Open vSwitch CI 91dce2
+        ovs_version_t tables_version = rule->ofproto->tables_version;
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+        if (!cls_rule_visible_in_version(&rule->cr, tables_version)) {
Open vSwitch CI 91dce2
+            const struct cls_rule *curr_cls_rule;
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+            /* Only check for matching classifier rules and their modified
Open vSwitch CI 91dce2
+             * time, instead of also checking all rule metadata, with the goal
Open vSwitch CI 91dce2
+             * of suppressing a learn action update that would replace a more
Open vSwitch CI 91dce2
+             * recent rule in the classifier. */
Open vSwitch CI 91dce2
+            curr_cls_rule = classifier_find_rule_exactly(&table->cls,
Open vSwitch CI 91dce2
+                                                         &rule->cr,
Open vSwitch CI 91dce2
+                                                         tables_version);
Open vSwitch CI 91dce2
+            if (curr_cls_rule) {
Open vSwitch CI 91dce2
+                struct rule *curr_rule = rule_from_cls_rule(curr_cls_rule);
Open vSwitch CI 91dce2
+                long long int curr_last_used;
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+                ovs_mutex_lock(&curr_rule->mutex);
Open vSwitch CI 91dce2
+                curr_last_used = curr_rule->modified;
Open vSwitch CI 91dce2
+                ovs_mutex_unlock(&curr_rule->mutex);
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+                if (curr_last_used > last_used) {
Open vSwitch CI 91dce2
+                    /* In the case of a newer visible rule, don't recreate the
Open vSwitch CI 91dce2
+                     *  current rule. */
Open vSwitch CI 91dce2
+                    return 0;
Open vSwitch CI 91dce2
+                }
Open vSwitch CI 91dce2
+            }
Open vSwitch CI 91dce2
+        }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-        cls_rule_clone(&cr, &rule->cr);
Open vSwitch CI 91dce2
         ovs_mutex_lock(&rule->mutex);
Open vSwitch CI 91dce2
+        cls_rule_clone(&cr, &rule->cr);
Open vSwitch CI 91dce2
         error = ofproto_rule_create(rule->ofproto, &cr, rule->table_id,
Open vSwitch CI 91dce2
                                     rule->flow_cookie,
Open vSwitch CI 91dce2
                                     rule->idle_timeout,
Open vSwitch CI 91dce2
@@ -5506,6 +5535,7 @@ ofproto_flow_mod_learn_refresh(struct ofproto_flow_mod *ofm)
Open vSwitch CI 91dce2
                                     rule->match_tlv_bitmap,
Open vSwitch CI 91dce2
                                     rule->ofpacts_tlv_bitmap,
Open vSwitch CI 91dce2
                                     &ofm->temp_rule);
Open vSwitch CI 91dce2
+        ofm->temp_rule->modified = last_used;
Open vSwitch CI 91dce2
         ovs_mutex_unlock(&rule->mutex);
Open vSwitch CI 91dce2
         if (!error) {
Open vSwitch CI 91dce2
             ofproto_rule_unref(rule);   /* Release old reference. */
Open vSwitch CI 91dce2
@@ -5513,7 +5543,7 @@ ofproto_flow_mod_learn_refresh(struct ofproto_flow_mod *ofm)
Open vSwitch CI 91dce2
     } else {
Open vSwitch CI 91dce2
         /* Refresh the existing rule. */
Open vSwitch CI 91dce2
         ovs_mutex_lock(&rule->mutex);
Open vSwitch CI 91dce2
-        rule->modified = time_msec();
Open vSwitch CI 91dce2
+        rule->modified = last_used;
Open vSwitch CI 91dce2
         ovs_mutex_unlock(&rule->mutex);
Open vSwitch CI 91dce2
     }
Open vSwitch CI 91dce2
     return error;
Open vSwitch CI 91dce2
@@ -5565,10 +5595,16 @@ ofproto_flow_mod_learn_finish(struct ofproto_flow_mod *ofm,
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 /* Refresh 'ofm->temp_rule', for which the caller holds a reference, if already
Open vSwitch CI 91dce2
  * in the classifier, insert it otherwise.  If the rule has already been
Open vSwitch CI 91dce2
- * removed from the classifier, a new rule is created using 'ofm->temp_rule' as
Open vSwitch CI 91dce2
- * a template and the reference to the old 'ofm->temp_rule' is freed.  If
Open vSwitch CI 91dce2
- * 'keep_ref' is true, then a reference to the current rule is held, otherwise
Open vSwitch CI 91dce2
- * it is released and 'ofm->temp_rule' is set to NULL.
Open vSwitch CI 91dce2
+ * removed from the classifier and replaced by another rule, the 'last_used'
Open vSwitch CI 91dce2
+ * parameter is used to determine whether the newer rule is replaced or kept.
Open vSwitch CI 91dce2
+ * If 'last_used' is greater than the last modified time of an identical rule
Open vSwitch CI 91dce2
+ * in the classifier, then a new rule is created using 'ofm->temp_rule' as a
Open vSwitch CI 91dce2
+ * template and the reference to the old 'ofm->temp_rule' is freed.  If the
Open vSwitch CI 91dce2
+ * rule has been removed but another identical rule doesn't exist in the
Open vSwitch CI 91dce2
+ * classifier, then it will be recreated.  If the rule hasn't been removed
Open vSwitch CI 91dce2
+ * from the classifier, then 'last_used' is used to update the rules modified
Open vSwitch CI 91dce2
+ * time.  If 'keep_ref' is true, then a reference to the current rule is held,
Open vSwitch CI 91dce2
+ * otherwise it is released and 'ofm->temp_rule' is set to NULL.
Open vSwitch CI 91dce2
  *
Open vSwitch CI 91dce2
  * If 'limit' != 0, insertion will fail if there are more than 'limit' rules
Open vSwitch CI 91dce2
  * in the same table with the same cookie.  If insertion succeeds,
Open vSwitch CI 91dce2
@@ -5579,10 +5615,11 @@ ofproto_flow_mod_learn_finish(struct ofproto_flow_mod *ofm,
Open vSwitch CI 91dce2
  * during the call. */
Open vSwitch CI 91dce2
 enum ofperr
Open vSwitch CI 91dce2
 ofproto_flow_mod_learn(struct ofproto_flow_mod *ofm, bool keep_ref,
Open vSwitch CI 91dce2
-                       unsigned limit, bool *below_limitp)
Open vSwitch CI 91dce2
+                       unsigned limit, bool *below_limitp,
Open vSwitch CI 91dce2
+                       long long int last_used)
Open vSwitch CI 91dce2
     OVS_EXCLUDED(ofproto_mutex)
Open vSwitch CI 91dce2
 {
Open vSwitch CI 91dce2
-    enum ofperr error = ofproto_flow_mod_learn_refresh(ofm);
Open vSwitch CI 91dce2
+    enum ofperr error = ofproto_flow_mod_learn_refresh(ofm, last_used);
Open vSwitch CI 91dce2
     struct rule *rule = ofm->temp_rule;
Open vSwitch CI 91dce2
     bool below_limit = true;
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
@@ -5615,6 +5652,11 @@ ofproto_flow_mod_learn(struct ofproto_flow_mod *ofm, bool keep_ref,
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
             error = ofproto_flow_mod_learn_start(ofm);
Open vSwitch CI 91dce2
             if (!error) {
Open vSwitch CI 91dce2
+                /* ofproto_flow_mod_learn_start may have overwritten
Open vSwitch CI 91dce2
+                 * modified with current time. */
Open vSwitch CI 91dce2
+                ovs_mutex_lock(&ofm->temp_rule->mutex);
Open vSwitch CI 91dce2
+                ofm->temp_rule->modified = last_used;
Open vSwitch CI 91dce2
+                ovs_mutex_unlock(&ofm->temp_rule->mutex);
Open vSwitch CI 91dce2
                 error = ofproto_flow_mod_learn_finish(ofm, NULL);
Open vSwitch CI 91dce2
             }
Open vSwitch CI 91dce2
         } else {
Open vSwitch CI 91dce2
diff --git a/ovsdb/condition.c b/ovsdb/condition.c
Open vSwitch CI 91dce2
index 5a3eb4e8a..4911fbf59 100644
Open vSwitch CI 91dce2
--- a/ovsdb/condition.c
Open vSwitch CI 91dce2
+++ b/ovsdb/condition.c
Open vSwitch CI 91dce2
@@ -550,9 +550,14 @@ ovsdb_condition_diff(struct ovsdb_condition *diff,
Open vSwitch CI 91dce2
                            &b->clauses[j]);
Open vSwitch CI 91dce2
     }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-    diff->optimized = a->optimized && b->optimized;
Open vSwitch CI 91dce2
-    if (diff->optimized) {
Open vSwitch CI 91dce2
-        ovsdb_condition_optimize(diff);
Open vSwitch CI 91dce2
+    if (diff->n_clauses) {
Open vSwitch CI 91dce2
+        diff->optimized = a->optimized && b->optimized;
Open vSwitch CI 91dce2
+        if (diff->optimized) {
Open vSwitch CI 91dce2
+            ovsdb_condition_optimize(diff);
Open vSwitch CI 91dce2
+        }
Open vSwitch CI 91dce2
+    } else {
Open vSwitch CI 91dce2
+        free(diff->clauses);
Open vSwitch CI 91dce2
+        diff->clauses = NULL;
Open vSwitch CI 91dce2
     }
Open vSwitch CI 91dce2
 }
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
diff --git a/ovsdb/monitor.c b/ovsdb/monitor.c
Open vSwitch CI 91dce2
index 01091fabe..f4a9cf8fe 100644
Open vSwitch CI 91dce2
--- a/ovsdb/monitor.c
Open vSwitch CI 91dce2
+++ b/ovsdb/monitor.c
Open vSwitch CI 91dce2
@@ -821,6 +821,7 @@ ovsdb_monitor_table_condition_update(
Open vSwitch CI 91dce2
     ovsdb_condition_destroy(&mtc->new_condition);
Open vSwitch CI 91dce2
     ovsdb_condition_clone(&mtc->new_condition, &cond;;
Open vSwitch CI 91dce2
     ovsdb_condition_destroy(&cond;;
Open vSwitch CI 91dce2
+    ovsdb_condition_destroy(&mtc->diff_condition);
Open vSwitch CI 91dce2
     ovsdb_condition_diff(&mtc->diff_condition,
Open vSwitch CI 91dce2
                          &mtc->old_condition, &mtc->new_condition);
Open vSwitch CI 91dce2
     ovsdb_monitor_condition_add_columns(dbmon,
Open vSwitch CI 91dce2
diff --git a/ovsdb/ovsdb-doc b/ovsdb/ovsdb-doc
Open vSwitch CI 91dce2
index 10d0c0c13..099770d25 100755
Open vSwitch CI 91dce2
--- a/ovsdb/ovsdb-doc
Open vSwitch CI 91dce2
+++ b/ovsdb/ovsdb-doc
Open vSwitch CI 91dce2
@@ -24,7 +24,7 @@ import ovs.json
Open vSwitch CI 91dce2
 from ovs.db import error
Open vSwitch CI 91dce2
 import ovs.db.schema
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-from build.nroff import *
Open vSwitch CI 91dce2
+from ovs_build_helpers.nroff import *
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 argv0 = sys.argv[0]
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
diff --git a/python/automake.mk b/python/automake.mk
Open vSwitch CI 91dce2
index 82a508787..84cf2eab5 100644
Open vSwitch CI 91dce2
--- a/python/automake.mk
Open vSwitch CI 91dce2
+++ b/python/automake.mk
Open vSwitch CI 91dce2
@@ -66,10 +66,10 @@ ovs_pytests = \
Open vSwitch CI 91dce2
 # These python files are used at build time but not runtime,
Open vSwitch CI 91dce2
 # so they are not installed.
Open vSwitch CI 91dce2
 EXTRA_DIST += \
Open vSwitch CI 91dce2
-	python/build/__init__.py \
Open vSwitch CI 91dce2
-	python/build/extract_ofp_fields.py \
Open vSwitch CI 91dce2
-	python/build/nroff.py \
Open vSwitch CI 91dce2
-	python/build/soutil.py
Open vSwitch CI 91dce2
+	python/ovs_build_helpers/__init__.py \
Open vSwitch CI 91dce2
+	python/ovs_build_helpers/extract_ofp_fields.py \
Open vSwitch CI 91dce2
+	python/ovs_build_helpers/nroff.py \
Open vSwitch CI 91dce2
+	python/ovs_build_helpers/soutil.py
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 # PyPI support.
Open vSwitch CI 91dce2
 EXTRA_DIST += \
Open vSwitch CI 91dce2
@@ -88,10 +88,10 @@ PYCOV_CLEAN_FILES += $(PYFILES:.py=.py,cover)
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 FLAKE8_PYFILES += \
Open vSwitch CI 91dce2
 	$(filter-out python/ovs/compat/% python/ovs/dirs.py,$(PYFILES)) \
Open vSwitch CI 91dce2
-	python/build/__init__.py \
Open vSwitch CI 91dce2
-	python/build/extract_ofp_fields.py \
Open vSwitch CI 91dce2
-	python/build/nroff.py \
Open vSwitch CI 91dce2
-	python/build/soutil.py \
Open vSwitch CI 91dce2
+	python/ovs_build_helpers/__init__.py \
Open vSwitch CI 91dce2
+	python/ovs_build_helpers/extract_ofp_fields.py \
Open vSwitch CI 91dce2
+	python/ovs_build_helpers/nroff.py \
Open vSwitch CI 91dce2
+	python/ovs_build_helpers/soutil.py \
Open vSwitch CI 91dce2
 	python/ovs/dirs.py.template \
Open vSwitch CI 91dce2
 	python/setup.py
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
@@ -112,11 +112,14 @@ ovs-install-data-local:
Open vSwitch CI 91dce2
 	$(INSTALL_DATA) python/ovs/dirs.py.tmp $(DESTDIR)$(pkgdatadir)/python/ovs/dirs.py
Open vSwitch CI 91dce2
 	rm python/ovs/dirs.py.tmp
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+.PHONY: python-sdist
Open vSwitch CI 91dce2
 python-sdist: $(srcdir)/python/ovs/version.py $(ovs_pyfiles) python/ovs/dirs.py
Open vSwitch CI 91dce2
-	(cd python/ && $(PYTHON3) setup.py sdist)
Open vSwitch CI 91dce2
+	cd python/ && $(PYTHON3) -m build --sdist
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+.PHONY: pypi-upload
Open vSwitch CI 91dce2
+pypi-upload: python-sdist
Open vSwitch CI 91dce2
+	twine upload python/dist/ovs-$(VERSION).tar.gz
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-pypi-upload: $(srcdir)/python/ovs/version.py $(ovs_pyfiles) python/ovs/dirs.py
Open vSwitch CI 91dce2
-	(cd python/ && $(PYTHON3) setup.py sdist upload)
Open vSwitch CI 91dce2
 install-data-local: ovs-install-data-local
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 UNINSTALL_LOCAL += ovs-uninstall-local
Open vSwitch CI 91dce2
diff --git a/python/ovs/db/idl.py b/python/ovs/db/idl.py
Open vSwitch CI 91dce2
index 9fc2159b0..16ece0334 100644
Open vSwitch CI 91dce2
--- a/python/ovs/db/idl.py
Open vSwitch CI 91dce2
+++ b/python/ovs/db/idl.py
Open vSwitch CI 91dce2
@@ -494,6 +494,7 @@ class Idl(object):
Open vSwitch CI 91dce2
                         if not msg.result[0]:
Open vSwitch CI 91dce2
                             self.__clear()
Open vSwitch CI 91dce2
                         self.__parse_update(msg.result[2], OVSDB_UPDATE3)
Open vSwitch CI 91dce2
+                        self.last_id = msg.result[1]
Open vSwitch CI 91dce2
                     elif self.state == self.IDL_S_DATA_MONITOR_COND_REQUESTED:
Open vSwitch CI 91dce2
                         self.__clear()
Open vSwitch CI 91dce2
                         self.__parse_update(msg.result, OVSDB_UPDATE2)
Open vSwitch CI 91dce2
diff --git a/python/build/__init__.py b/python/ovs_build_helpers/__init__.py
Open vSwitch CI 91dce2
similarity index 100%
Open vSwitch CI 91dce2
rename from python/build/__init__.py
Open vSwitch CI 91dce2
rename to python/ovs_build_helpers/__init__.py
Open vSwitch CI 91dce2
diff --git a/python/build/extract_ofp_fields.py b/python/ovs_build_helpers/extract_ofp_fields.py
Open vSwitch CI 91dce2
similarity index 100%
Open vSwitch CI 91dce2
rename from python/build/extract_ofp_fields.py
Open vSwitch CI 91dce2
rename to python/ovs_build_helpers/extract_ofp_fields.py
Open vSwitch CI 91dce2
diff --git a/python/build/nroff.py b/python/ovs_build_helpers/nroff.py
Open vSwitch CI 91dce2
similarity index 100%
Open vSwitch CI 91dce2
rename from python/build/nroff.py
Open vSwitch CI 91dce2
rename to python/ovs_build_helpers/nroff.py
Open vSwitch CI 91dce2
diff --git a/python/build/soutil.py b/python/ovs_build_helpers/soutil.py
Open vSwitch CI 91dce2
similarity index 100%
Open vSwitch CI 91dce2
rename from python/build/soutil.py
Open vSwitch CI 91dce2
rename to python/ovs_build_helpers/soutil.py
Open vSwitch CI 91dce2
diff --git a/tests/.gitignore b/tests/.gitignore
Open vSwitch CI 91dce2
index 83b1cb3b4..3a8c45975 100644
Open vSwitch CI 91dce2
--- a/tests/.gitignore
Open vSwitch CI 91dce2
+++ b/tests/.gitignore
Open vSwitch CI 91dce2
@@ -3,6 +3,7 @@
Open vSwitch CI 91dce2
 /Makefile.in
Open vSwitch CI 91dce2
 /atconfig
Open vSwitch CI 91dce2
 /atlocal
Open vSwitch CI 91dce2
+/clang-analyzer-results/
Open vSwitch CI 91dce2
 /idltest.c
Open vSwitch CI 91dce2
 /idltest.h
Open vSwitch CI 91dce2
 /idltest.ovsidl
Open vSwitch CI 91dce2
diff --git a/tests/learn.at b/tests/learn.at
Open vSwitch CI 91dce2
index d127fed34..d0bcc8363 100644
Open vSwitch CI 91dce2
--- a/tests/learn.at
Open vSwitch CI 91dce2
+++ b/tests/learn.at
Open vSwitch CI 91dce2
@@ -836,3 +836,63 @@ AT_CHECK([ovs-vsctl add-br br1 -- set b br1 datapath_type=dummy])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 OVS_VSWITCHD_STOP
Open vSwitch CI 91dce2
 AT_CLEANUP
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+AT_SETUP([learning action - flapping learn rule])
Open vSwitch CI 91dce2
+OVS_VSWITCHD_START
Open vSwitch CI 91dce2
+add_of_ports br0 1 2 3
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+AT_CHECK([ovs-appctl time/stop], [0], [ignore])
Open vSwitch CI 91dce2
+AT_CHECK([[ovs-ofctl add-flow br0 'table=0,priority=2,in_port=1,actions=resubmit(,2)']])
Open vSwitch CI 91dce2
+AT_CHECK([[ovs-ofctl add-flow br0 'table=0,priority=2,in_port=2,actions=resubmit(,2)']])
Open vSwitch CI 91dce2
+AT_CHECK([[ovs-ofctl add-flow br0 'table=2,actions=learn(table=0,hard_timeout=3,priority=1,cookie=0x123,NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],output:OXM_OF_IN_PORT[]),output:3']])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+packet="eth(src=50:54:00:00:00:06,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=8,dst=9)"
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+dnl Run this test a few times in a loop to reduce the likelyhood that it passes by chance.
Open vSwitch CI 91dce2
+for i in 1 2 3; do
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl revalidator/pause], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl netdev-dummy/receive p2 $packet], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl time/warp 75], [0], [ignore])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl netdev-dummy/receive p1 $packet], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl time/warp 75], [0], [ignore])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl netdev-dummy/receive p2 $packet], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl time/warp 75], [0], [ignore])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl netdev-dummy/receive p1 $packet], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl time/warp 75], [0], [ignore])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl revalidator/resume], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl revalidator/wait], [0])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-ofctl --no-stats dump-flows br0 | ofctl_strip | sort | grep 0x123], [0], [dnl
Open vSwitch CI 91dce2
+ cookie=0x123, hard_timeout=3, priority=1,dl_dst=50:54:00:00:00:06 actions=output:1
Open vSwitch CI 91dce2
+ table=2, actions=learn(table=0,hard_timeout=3,priority=1,cookie=0x123,NXM_OF_ETH_DST[[]]=NXM_OF_ETH_SRC[[]],output:OXM_OF_IN_PORT[[]]),output:3
Open vSwitch CI 91dce2
+])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl revalidator/pause], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl netdev-dummy/receive p1 $packet], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl time/warp 75], [0], [ignore])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl netdev-dummy/receive p2 $packet], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl time/warp 75], [0], [ignore])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl netdev-dummy/receive p1 $packet], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl time/warp 75], [0], [ignore])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl netdev-dummy/receive p2 $packet], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl time/warp 75], [0], [ignore])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl revalidator/resume], [0])
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-appctl revalidator/wait], [0])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+    AT_CHECK([ovs-ofctl --no-stats dump-flows br0 | ofctl_strip | sort | grep 0x123], [0], [dnl
Open vSwitch CI 91dce2
+ cookie=0x123, hard_timeout=3, priority=1,dl_dst=50:54:00:00:00:06 actions=output:2
Open vSwitch CI 91dce2
+ table=2, actions=learn(table=0,hard_timeout=3,priority=1,cookie=0x123,NXM_OF_ETH_DST[[]]=NXM_OF_ETH_SRC[[]],output:OXM_OF_IN_PORT[[]]),output:3
Open vSwitch CI 91dce2
+])
Open vSwitch CI 91dce2
+done
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+dnl Wait and check for learned rule eviction due to hard timeout.
Open vSwitch CI 91dce2
+AT_CHECK([ovs-appctl time/warp 3200], [0], [ignore])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+AT_CHECK([ovs-ofctl --no-stats dump-flows br0 | ofctl_strip | grep 0x123], [0], [dnl
Open vSwitch CI 91dce2
+ table=2, actions=learn(table=0,hard_timeout=3,priority=1,cookie=0x123,NXM_OF_ETH_DST[[]]=NXM_OF_ETH_SRC[[]],output:OXM_OF_IN_PORT[[]]),output:3
Open vSwitch CI 91dce2
+])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+OVS_VSWITCHD_STOP
Open vSwitch CI 91dce2
+AT_CLEANUP
Open vSwitch CI 91dce2
diff --git a/tests/mfex_fuzzy.py b/tests/mfex_fuzzy.py
Open vSwitch CI 91dce2
index 30028ba7a..50b987064 100755
Open vSwitch CI 91dce2
--- a/tests/mfex_fuzzy.py
Open vSwitch CI 91dce2
+++ b/tests/mfex_fuzzy.py
Open vSwitch CI 91dce2
@@ -3,12 +3,15 @@
Open vSwitch CI 91dce2
 import sys
Open vSwitch CI 91dce2
 import warnings
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-from cryptography.utils import CryptographyDeprecationWarning
Open vSwitch CI 91dce2
-warnings.filterwarnings(
Open vSwitch CI 91dce2
-    "ignore",
Open vSwitch CI 91dce2
-    category=CryptographyDeprecationWarning,
Open vSwitch CI 91dce2
-    message=r"(blowfish|cast5)",
Open vSwitch CI 91dce2
-)
Open vSwitch CI 91dce2
+try:
Open vSwitch CI 91dce2
+    from cryptography.utils import CryptographyDeprecationWarning
Open vSwitch CI 91dce2
+    warnings.filterwarnings(
Open vSwitch CI 91dce2
+        "ignore",
Open vSwitch CI 91dce2
+        category=CryptographyDeprecationWarning,
Open vSwitch CI 91dce2
+        message=r"(blowfish|cast5)",
Open vSwitch CI 91dce2
+    )
Open vSwitch CI 91dce2
+except ModuleNotFoundError:
Open vSwitch CI 91dce2
+    pass
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 # flake8: noqa: E402
Open vSwitch CI 91dce2
 from scapy.all import RandMAC, RandIP, PcapWriter, RandIP6, RandShort, fuzz
Open vSwitch CI 91dce2
diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
Open vSwitch CI 91dce2
index f242f77f3..a39d0d3ae 100644
Open vSwitch CI 91dce2
--- a/tests/ofproto-dpif.at
Open vSwitch CI 91dce2
+++ b/tests/ofproto-dpif.at
Open vSwitch CI 91dce2
@@ -5854,6 +5854,40 @@ OVS_WAIT_UNTIL([check_flows], [ovs-ofctl dump-flows br0])
Open vSwitch CI 91dce2
 OVS_VSWITCHD_STOP
Open vSwitch CI 91dce2
 AT_CLEANUP
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+dnl Checks for regression against a bug in which OVS dropped packets
Open vSwitch CI 91dce2
+dnl originating from a controller passing through a patch port.
Open vSwitch CI 91dce2
+AT_SETUP([ofproto-dpif - packet-out recirculation OFPP_CONTROLLER and patch port])
Open vSwitch CI 91dce2
+OVS_VSWITCHD_START(
Open vSwitch CI 91dce2
+    [add-port br0 patch-br1 -- \
Open vSwitch CI 91dce2
+     set interface patch-br1 type=patch options:peer=patch-br0 -- \
Open vSwitch CI 91dce2
+     add-br br1 -- set bridge br1 datapath-type=dummy fail-mode=secure -- \
Open vSwitch CI 91dce2
+     add-port br1 patch-br0 -- set interface patch-br0 type=patch options:peer=patch-br1
Open vSwitch CI 91dce2
+])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+add_of_ports --pcap br1 1
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+AT_DATA([flows-br0.txt], [dnl
Open vSwitch CI 91dce2
+table=0 icmp actions=output:patch-br1
Open vSwitch CI 91dce2
+])
Open vSwitch CI 91dce2
+AT_CHECK([ovs-ofctl add-flows br0 flows-br0.txt])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+AT_DATA([flows-br1.txt], [dnl
Open vSwitch CI 91dce2
+table=0, icmp actions=ct(table=1,zone=1)
Open vSwitch CI 91dce2
+table=1, ct_state=+trk, icmp actions=p1
Open vSwitch CI 91dce2
+])
Open vSwitch CI 91dce2
+AT_CHECK([ovs-ofctl add-flows br1 flows-br1.txt])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+packet=50540000000750540000000508004500005c000000008001b94dc0a80001c0a80002080013fc00000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
Open vSwitch CI 91dce2
+AT_CHECK([ovs-ofctl packet-out br0 "in_port=CONTROLLER packet=$packet actions=table"])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+OVS_WAIT_UNTIL_EQUAL([ovs-ofctl dump-flows -m br1 | grep "ct_state" | ofctl_strip], [dnl
Open vSwitch CI 91dce2
+ table=1, n_packets=1, n_bytes=106, ct_state=+trk,icmp actions=output:2])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+OVS_WAIT_UNTIL([ovs-pcap p1-tx.pcap | grep -q "$packet"])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+OVS_VSWITCHD_STOP
Open vSwitch CI 91dce2
+AT_CLEANUP
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 AT_SETUP([ofproto-dpif - debug_slow action])
Open vSwitch CI 91dce2
 OVS_VSWITCHD_START
Open vSwitch CI 91dce2
 add_of_ports br0 1 2 3
Open vSwitch CI 91dce2
diff --git a/tests/ofproto.at b/tests/ofproto.at
Open vSwitch CI 91dce2
index 2fa8486a8..2889f81fb 100644
Open vSwitch CI 91dce2
--- a/tests/ofproto.at
Open vSwitch CI 91dce2
+++ b/tests/ofproto.at
Open vSwitch CI 91dce2
@@ -6720,3 +6720,31 @@ recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_type(0x0806),arp(tip=172.31.1
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 OVS_VSWITCHD_STOP
Open vSwitch CI 91dce2
 AT_CLEANUP
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+AT_SETUP([ofproto - configure inactivity probe interval])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+# Set 6 second inactivity probe interval (default is 5 seconds).
Open vSwitch CI 91dce2
+OVS_VSWITCHD_START([set-controller br0 unix:testcontroller \
Open vSwitch CI 91dce2
+                   -- set Controller br0 inactivity_probe=6000], [], [],
Open vSwitch CI 91dce2
+                   [-vfile:rconn:dbg])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+# Start test openflow controller.
Open vSwitch CI 91dce2
+AT_CHECK([ovs-testcontroller -vsyslog:off --detach --no-chdir --pidfile punix:testcontroller],
Open vSwitch CI 91dce2
+         [0], [ignore])
Open vSwitch CI 91dce2
+on_exit 'kill `cat ovs-testcontroller.pid`'
Open vSwitch CI 91dce2
+OVS_WAIT_UNTIL([test -e testcontroller])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+# After 6 seconds of inactivity there should be a log message.
Open vSwitch CI 91dce2
+OVS_WAIT_UNTIL([grep "idle 6 seconds, sending inactivity probe" ovs-vswitchd.log])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+# Restart ovs-vswitchd with an empty ovs-vswitchd log file.
Open vSwitch CI 91dce2
+OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
Open vSwitch CI 91dce2
+mv ovs-vswitchd.log ovs-vswitchd_1.log
Open vSwitch CI 91dce2
+AT_CHECK([ovs-vswitchd --enable-dummy --disable-system --disable-system-route --detach \
Open vSwitch CI 91dce2
+         --no-chdir --pidfile --log-file -vfile:rconn:dbg -vvconn -vofproto_dpif -vunixctl],
Open vSwitch CI 91dce2
+         [0], [], [stderr])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+# After 6 seconds of inactivity there should be a log message.
Open vSwitch CI 91dce2
+OVS_WAIT_UNTIL([grep "idle 6 seconds, sending inactivity probe" ovs-vswitchd.log])
Open vSwitch CI 91dce2
+OVS_VSWITCHD_STOP(["/br0<->unix:testcontroller: connection failed/d"])
Open vSwitch CI 91dce2
+AT_CLEANUP
Open vSwitch CI 91dce2
diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at
Open vSwitch CI 91dce2
index df5a9d2fd..1028b0237 100644
Open vSwitch CI 91dce2
--- a/tests/ovsdb-idl.at
Open vSwitch CI 91dce2
+++ b/tests/ovsdb-idl.at
Open vSwitch CI 91dce2
@@ -2332,6 +2332,23 @@ CHECK_STREAM_OPEN_BLOCK([Python3], [$PYTHON3 $srcdir/test-stream.py],
Open vSwitch CI 91dce2
 CHECK_STREAM_OPEN_BLOCK([Python3], [$PYTHON3 $srcdir/test-stream.py],
Open vSwitch CI 91dce2
                         [ssl6], [[[::1]]])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+dnl OVSDB_CLUSTER_CHECK_MONITOR_COND_SINCE_TXN_IDS(LOG)
Open vSwitch CI 91dce2
+dnl
Open vSwitch CI 91dce2
+dnl Looks up transaction IDs in the log of OVSDB client application.
Open vSwitch CI 91dce2
+dnl All-zero UUID should not be sent within a monitor request more than once,
Open vSwitch CI 91dce2
+dnl unless some database requests were lost (not replied).
Open vSwitch CI 91dce2
+m4_define([OVSDB_CLUSTER_CHECK_MONITOR_COND_SINCE_TXN_IDS],
Open vSwitch CI 91dce2
+[
Open vSwitch CI 91dce2
+   requests=$(grep -c 'send request' $1)
Open vSwitch CI 91dce2
+   replies=$(grep -c 'received reply' $1)
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+   if test "$requests" -eq "$replies"; then
Open vSwitch CI 91dce2
+     AT_CHECK([grep 'monitor_cond_since' $1 \
Open vSwitch CI 91dce2
+                | grep -c "00000000-0000-0000-0000-000000000000" | tr -d '\n'],
Open vSwitch CI 91dce2
+              [0], [1])
Open vSwitch CI 91dce2
+   fi
Open vSwitch CI 91dce2
+])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 # same as OVSDB_CHECK_IDL but uses Python IDL implementation with tcp
Open vSwitch CI 91dce2
 # with multiple remotes to assert the idl connects to the leader of the Raft cluster
Open vSwitch CI 91dce2
 m4_define([OVSDB_CHECK_IDL_LEADER_ONLY_PY],
Open vSwitch CI 91dce2
@@ -2347,10 +2364,11 @@ m4_define([OVSDB_CHECK_IDL_LEADER_ONLY_PY],
Open vSwitch CI 91dce2
    pids=$(cat s2.pid s3.pid s1.pid | tr '\n' ',')
Open vSwitch CI 91dce2
    echo $pids
Open vSwitch CI 91dce2
    AT_CHECK([$PYTHON3 $srcdir/test-ovsdb.py  -t30 idl-cluster $srcdir/idltest.ovsschema $remotes $pids $3],
Open vSwitch CI 91dce2
-        [0], [stdout], [ignore])
Open vSwitch CI 91dce2
+        [0], [stdout], [stderr])
Open vSwitch CI 91dce2
    remote=$(ovsdb_cluster_leader $remotes "idltest")
Open vSwitch CI 91dce2
    leader=$(echo $remote | cut -d'|' -f 1)
Open vSwitch CI 91dce2
    AT_CHECK([grep -F -- "${leader}" stdout], [0], [ignore])
Open vSwitch CI 91dce2
+   OVSDB_CLUSTER_CHECK_MONITOR_COND_SINCE_TXN_IDS([stderr])
Open vSwitch CI 91dce2
    AT_CLEANUP])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 OVSDB_CHECK_IDL_LEADER_ONLY_PY([Check Python IDL connects to leader], 3, ['remote'])
Open vSwitch CI 91dce2
@@ -2393,6 +2411,7 @@ m4_define([OVSDB_CHECK_CLUSTER_IDL_C],
Open vSwitch CI 91dce2
    AT_CHECK([sort stdout | uuidfilt]m4_if([$7],,, [[| $7]]),
Open vSwitch CI 91dce2
             [0], [$5])
Open vSwitch CI 91dce2
    m4_ifval([$8], [AT_CHECK([grep '$8' stderr], [1])], [], [])
Open vSwitch CI 91dce2
+   OVSDB_CLUSTER_CHECK_MONITOR_COND_SINCE_TXN_IDS([stderr])
Open vSwitch CI 91dce2
    AT_CLEANUP])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 # Same as OVSDB_CHECK_CLUSTER_IDL_C but uses the Python IDL implementation.
Open vSwitch CI 91dce2
@@ -2413,6 +2432,7 @@ m4_define([OVSDB_CHECK_CLUSTER_IDL_PY],
Open vSwitch CI 91dce2
    AT_CHECK([sort stdout | uuidfilt]m4_if([$7],,, [[| $7]]),
Open vSwitch CI 91dce2
             [0], [$5])
Open vSwitch CI 91dce2
    m4_if([$8], [AT_CHECK([grep '$8' stderr], [1])], [], [])
Open vSwitch CI 91dce2
+   OVSDB_CLUSTER_CHECK_MONITOR_COND_SINCE_TXN_IDS([stderr])
Open vSwitch CI 91dce2
    AT_CLEANUP])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 m4_define([OVSDB_CHECK_CLUSTER_IDL],
Open vSwitch CI 91dce2
diff --git a/tests/ovsdb-monitor.at b/tests/ovsdb-monitor.at
Open vSwitch CI 91dce2
index 12cd2bc31..3e1df18a1 100644
Open vSwitch CI 91dce2
--- a/tests/ovsdb-monitor.at
Open vSwitch CI 91dce2
+++ b/tests/ovsdb-monitor.at
Open vSwitch CI 91dce2
@@ -586,6 +586,7 @@ row,action,name,number,_version
Open vSwitch CI 91dce2
   [[]],
Open vSwitch CI 91dce2
   [],
Open vSwitch CI 91dce2
   [[[[["name","==","one"],["name","==","two"]]]],
Open vSwitch CI 91dce2
+   [[[["name","==","two"],["name","==","one"]]]],
Open vSwitch CI 91dce2
    [[[["name","==","one"]]]],
Open vSwitch CI 91dce2
     [[[false]]],
Open vSwitch CI 91dce2
     [[[true]]]])
Open vSwitch CI 91dce2
diff --git a/tests/pmd.at b/tests/pmd.at
Open vSwitch CI 91dce2
index 7c333a901..7bdaca9e7 100644
Open vSwitch CI 91dce2
--- a/tests/pmd.at
Open vSwitch CI 91dce2
+++ b/tests/pmd.at
Open vSwitch CI 91dce2
@@ -1355,18 +1355,22 @@ AT_CHECK([echo 'table=0,in_port=p1,ip,nw_dst=10.1.0.0/16 actions=ct(commit)' | d
Open vSwitch CI 91dce2
           ovs-ofctl --bundle replace-flows br0 -])
Open vSwitch CI 91dce2
 AT_CHECK([ovs-appctl revalidator/wait])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+dnl Prevent flows from expiring.
Open vSwitch CI 91dce2
+AT_CHECK([ovs-appctl time/stop])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 AT_CHECK([ovs-appctl netdev-dummy/receive p1 'ipv4(src=10.0.0.1,dst=10.1.0.2,proto=6),tcp(src=1,dst=2)'])
Open vSwitch CI 91dce2
 OVS_WAIT_UNTIL_EQUAL([ovs-appctl dpctl/dump-flows | sed 's/.*core: [[0-9]]*//' | strip_xout_keep_actions], [
Open vSwitch CI 91dce2
 recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=10.1.0.2/255.255.0.0,frag=no), packets:0, bytes:0, used:never, actions:ct(commit)
Open vSwitch CI 91dce2
 recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=10.1.2.2/255.255.255.0,frag=no), packets:0, bytes:0, used:0.0s, actions:ct(commit)])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-dnl Hold the prefix 10.1.2.2/24 by another 10s.
Open vSwitch CI 91dce2
-AT_CHECK([ovs-appctl netdev-dummy/receive p1 'ipv4(src=10.0.0.1,dst=10.1.2.2,proto=6),tcp(src=1,dst=2)'])
Open vSwitch CI 91dce2
 dnl Send more 10.1.0.2 to make 10.1.0.0/16 tuple prepend 10.1.2.0/24 tuple in the pvector of subtables.
Open vSwitch CI 91dce2
 for i in $(seq 0 256); do
Open vSwitch CI 91dce2
   AT_CHECK([ovs-appctl netdev-dummy/receive p1 'ipv4(src=10.0.0.1,dst=10.1.0.2,proto=6),tcp(src=1,dst=2)'])
Open vSwitch CI 91dce2
 done
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+dnl Warp time enough to trigger subtable optimization.
Open vSwitch CI 91dce2
+AT_CHECK([ovs-appctl time/warp 500 2000], [0], [ignore])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 AT_CHECK([echo 'table=0,in_port=p1,ip,nw_dst=10.1.0.0/16 actions=p2' | dnl
Open vSwitch CI 91dce2
           ovs-ofctl --bundle replace-flows br0 -])
Open vSwitch CI 91dce2
 
Open vSwitch CI b0f9a4
diff --git a/tests/system-afxdp.at b/tests/system-afxdp.at
Open vSwitch CI b0f9a4
index 0d09906fb..88f660566 100644
Open vSwitch CI b0f9a4
--- a/tests/system-afxdp.at
Open vSwitch CI b0f9a4
+++ b/tests/system-afxdp.at
Open vSwitch CI b0f9a4
@@ -39,7 +39,7 @@ AT_CHECK([ovs-vsctl add-port br0 ovs-p0 -- \
Open vSwitch CI b0f9a4
                     set interface ovs-p0 type=afxdp-nonpmd options:n_rxq=1],
Open vSwitch CI b0f9a4
          [0], [], [stderr])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
diff --git a/tests/system-ipsec.at b/tests/system-ipsec.at
Open vSwitch CI b0f9a4
index 07f2b8fd0..d3d27133b 100644
Open vSwitch CI b0f9a4
--- a/tests/system-ipsec.at
Open vSwitch CI b0f9a4
+++ b/tests/system-ipsec.at
Open vSwitch CI b0f9a4
@@ -141,10 +141,10 @@ m4_define([CHECK_ESP_TRAFFIC],
Open vSwitch CI b0f9a4
       OVS_WAIT_UNTIL([test `IPSEC_STATUS_LOADED(right)` -eq `IPSEC_STATUS_ACTIVE(right)`])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
       dnl Ping over IPsec tunnel
Open vSwitch CI b0f9a4
-      NS_CHECK_EXEC([left], [ping -q -c 3 -i 0.3 -w 2 192.0.0.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+      NS_CHECK_EXEC([left], [ping -q -c 3 -i 0.3 -W 2 192.0.0.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-      NS_CHECK_EXEC([right], [ping -q -c 3 -i 0.3 -w 2 192.0.0.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+      NS_CHECK_EXEC([right], [ping -q -c 3 -i 0.3 -W 2 192.0.0.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
diff --git a/tests/system-layer3-tunnels.at b/tests/system-layer3-tunnels.at
Open vSwitch CI b0f9a4
index 81123f730..6fbdedb64 100644
Open vSwitch CI b0f9a4
--- a/tests/system-layer3-tunnels.at
Open vSwitch CI b0f9a4
+++ b/tests/system-layer3-tunnels.at
Open vSwitch CI b0f9a4
@@ -34,15 +34,15 @@ AT_CHECK([ovs-ofctl add-flow br0 "priority=100 ip,nw_dst=10.1.1.2 action=mod_dl_
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.1.1.2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -83,15 +83,15 @@ AT_CHECK([ovs-ofctl add-flow br0 "priority=100 ip,nw_dst=10.1.1.2 action=mod_dl_
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.1.1.2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -191,11 +191,11 @@ AT_CHECK([ovs-vsctl add-port br1 patch1])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 flows0.txt])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br1 flows1.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -w 2 10.1.1.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -W 2 10.1.1.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 OVS_TRAFFIC_VSWITCHD_STOP
Open vSwitch CI b0f9a4
@@ -239,11 +239,11 @@ AT_CHECK([ovs-vsctl add-port br1 patch1])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br0 flows0.txt])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl -O OpenFlow13 add-flows br1 flows1.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -w 2 10.1.1.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -W 2 10.1.1.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 OVS_TRAFFIC_VSWITCHD_STOP
Open vSwitch CI 5bc928
diff --git a/tests/system-offloads-traffic.at b/tests/system-offloads-traffic.at
Open vSwitch CI b0f9a4
index 7215e36e2..bc9ed8b74 100644
Open vSwitch CI 5bc928
--- a/tests/system-offloads-traffic.at
Open vSwitch CI 5bc928
+++ b/tests/system-offloads-traffic.at
Open vSwitch CI b0f9a4
@@ -39,7 +39,7 @@ ADD_NAMESPACES(at_ns0, at_ns1)
Open vSwitch CI b0f9a4
 ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24")
Open vSwitch CI b0f9a4
 ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24")
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -72,7 +72,7 @@ ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24")
Open vSwitch CI b0f9a4
 ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24")
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-appctl dpctl/dump-flows], [0], [ignore])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -204,7 +204,7 @@ NS_CHECK_EXEC([at_ns0], [ip neigh add 10.1.1.2 lladdr f0:00:00:01:01:02 dev p0])
Open vSwitch CI b0f9a4
 NS_CHECK_EXEC([at_ns1], [ip neigh add 10.1.1.1 lladdr f0:00:00:01:01:01 dev p1])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 "actions=normal"])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -254,7 +254,7 @@ NS_CHECK_EXEC([at_ns0], [ip neigh add 10.1.1.2 lladdr f0:00:00:01:01:02 dev p0])
Open vSwitch CI b0f9a4
 NS_CHECK_EXEC([at_ns1], [ip neigh add 10.1.1.1 lladdr f0:00:00:01:01:01 dev p1])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 "actions=normal"])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -313,11 +313,11 @@ NETNS_DAEMONIZE([at_ns3], [tcpdump -l -n -U -i p3 dst 10.1.1.2 and icmp > p3.pca
Open vSwitch CI b0f9a4
 NETNS_DAEMONIZE([at_ns4], [tcpdump -l -n -U -i p4 dst 10.1.1.2 and icmp > p4.pcap 2>/dev/null], [tcpdump4.pid])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -371,11 +371,11 @@ NETNS_DAEMONIZE([at_ns3], [tcpdump -l -n -U -i p3 dst 10.1.1.2 and icmp > p3.pca
Open vSwitch CI b0f9a4
 NETNS_DAEMONIZE([at_ns4], [tcpdump -l -n -U -i p4 dst 10.1.1.2 and icmp > p4.pcap 2>/dev/null], [tcpdump4.pid])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -419,11 +419,11 @@ table=4,in_port=1,reg0=0x0 actions=output:2
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -447,7 +447,7 @@ table=4,in_port=1,reg0=0x0 actions=output:2
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(5),le(3))])
Open vSwitch CI b0f9a4
@@ -463,7 +463,7 @@ table=4,in_port=1,reg0=0x0 actions=output:2
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(drop),le(3))])
Open vSwitch CI b0f9a4
@@ -479,7 +479,7 @@ table=4,in_port=1,reg0=0x1 actions=output:2
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(3),le(drop))])
Open vSwitch CI b0f9a4
@@ -496,7 +496,7 @@ table=4,in_port=1,reg0=0x1 actions=output:2,4
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(3,5),le(3,4))])
Open vSwitch CI b0f9a4
@@ -519,11 +519,11 @@ NETNS_DAEMONIZE([at_ns3], [tcpdump -l -n -U -i p3 dst 10.1.1.2 and icmp > p3_2.p
Open vSwitch CI b0f9a4
 NETNS_DAEMONIZE([at_ns4], [tcpdump -l -n -U -i p4 dst 10.1.1.2 and icmp > p4_2.pcap 2>/dev/null], [tcpdump4_2.pid])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -555,7 +555,7 @@ table=4,in_port=1,reg0=0x0 actions=mod_dl_src:00:11:11:11:11:11,output:4
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(set(ipv4(tos=0x4/0xfc)),4),le(set(eth(src=00:11:11:11:11:11)),5)),3])
Open vSwitch CI b0f9a4
@@ -573,7 +573,7 @@ table=4,in_port=1,reg0=0x0 actions=mod_nw_tos:8,output:4
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(set(eth(src=00:11:11:11:11:11)),4),le(set(ipv4(tos=0x8/0xfc)),5)),3])
Open vSwitch CI b0f9a4
@@ -591,7 +591,7 @@ table=4,in_port=1,reg0=0x0 actions=output:br0
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(1),le(1)),3])
Open vSwitch CI b0f9a4
@@ -608,7 +608,7 @@ table=4,in_port=1,reg0=0x1 actions=output:br0
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(1),le(drop)),3])
Open vSwitch CI b0f9a4
@@ -625,7 +625,7 @@ table=4,in_port=1,reg0=0x0 actions=output:br0
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 1024 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -642,7 +642,7 @@ table=1,in_port=1,reg1=0x2 actions=output:2
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(drop),le(drop)),3])
Open vSwitch CI b0f9a4
@@ -662,7 +662,7 @@ table=5,in_port=1,reg0=0x0 actions=output:3
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(check_pkt_len(size=400,gt(5),le(4))),le(5)),3])
Open vSwitch CI b0f9a4
@@ -682,7 +682,7 @@ table=5,in_port=1,reg0=0x0 actions=output:3
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --protocols=OpenFlow10 add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -w 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 10 -i 0.1 -W 2 -s 64 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ], [], [ovs-appctl dpctl/dump-flows; ovs-ofctl dump-flows br0])
Open vSwitch CI b0f9a4
 OVS_CHECK_ACTIONS([check_pkt_len(size=200,gt(5),le(check_pkt_len(size=100,gt(5),le(4)))),3])
Open vSwitch CI b0f9a4
@@ -706,7 +706,7 @@ add in_port=ovs-p1,actions=ovs-p0
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -723,7 +723,7 @@ modify in_port=ovs-p1,actions=output(port=ovs-p0, max_len=128)
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br0 flows2.txt])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-appctl revalidator/wait], [0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -735,7 +735,7 @@ recirc_id(<recirc>),in_port(3),eth(),eth_type(0x0800),ipv4(frag=no), packets:10,
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-appctl revalidator/wait], [0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI 5bc928
@@ -799,8 +799,6 @@ AT_CHECK([test $(ovs-appctl dpctl/dump-flows | grep -c "eth_type(0x0800)") -eq 0
Open vSwitch CI 5bc928
 
Open vSwitch CI 5bc928
 OVS_TRAFFIC_VSWITCHD_STOP(["/could not open network device ovs-p0/d
Open vSwitch CI 5bc928
 /on nonexistent port/d
Open vSwitch CI 5bc928
-/failed to flow_get/d
Open vSwitch CI 5bc928
-/Failed to acquire udpif_key/d
Open vSwitch CI 5bc928
 /No such device/d
Open vSwitch CI 5bc928
 /failed to offload flow/d
Open vSwitch CI 5bc928
 "])
Open vSwitch CI b0f9a4
@@ -836,7 +834,7 @@ NS_CHECK_EXEC([at_ns0], [iptables -I OUTPUT -p ip -j MARK --set-mark 512 2>/dev/
Open vSwitch CI b0f9a4
 NS_CHECK_EXEC([at_ns0], [iptables -I INPUT -m mark --mark 512 -j ACCEPT 2>/dev/null], [0], [ignore])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
diff --git a/tests/system-tap.at b/tests/system-tap.at
Open vSwitch CI b0f9a4
index 871a3bda4..3d84a5318 100644
Open vSwitch CI b0f9a4
--- a/tests/system-tap.at
Open vSwitch CI b0f9a4
+++ b/tests/system-tap.at
Open vSwitch CI b0f9a4
@@ -22,7 +22,7 @@ AT_CHECK([ip netns exec at_ns1 ip link set dev tap1 up])
Open vSwitch CI b0f9a4
 AT_CHECK([ip netns exec at_ns0 ip addr add 10.1.1.1/24 dev tap0])
Open vSwitch CI b0f9a4
 AT_CHECK([ip netns exec at_ns1 ip addr add 10.1.1.2/24 dev tap1])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI 91dce2
diff --git a/tests/system-traffic.at b/tests/system-traffic.at
Open vSwitch CI b0f9a4
index 808c492a2..7ea450202 100644
Open vSwitch CI 91dce2
--- a/tests/system-traffic.at
Open vSwitch CI 91dce2
+++ b/tests/system-traffic.at
Open vSwitch CI b0f9a4
@@ -10,13 +10,13 @@ ADD_NAMESPACES(at_ns0, at_ns1)
Open vSwitch CI b0f9a4
 ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24")
Open vSwitch CI b0f9a4
 ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24")
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -33,7 +33,7 @@ ADD_NAMESPACES(at_ns0, at_ns1)
Open vSwitch CI b0f9a4
 ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24")
Open vSwitch CI b0f9a4
 ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24")
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -56,13 +56,13 @@ ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24")
Open vSwitch CI b0f9a4
 ADD_VLAN(p0, at_ns0, 100, "10.2.2.1/24")
Open vSwitch CI b0f9a4
 ADD_VLAN(p1, at_ns1, 100, "10.2.2.2/24")
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -88,13 +88,13 @@ ADD_CVLAN(p1.4094, at_ns1, 100, "10.2.2.2/24")
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -116,13 +116,13 @@ dnl waiting, we get occasional failures due to the following error:
Open vSwitch CI b0f9a4
 dnl "connect: Cannot assign requested address"
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -147,13 +147,13 @@ dnl waiting, we get occasional failures due to the following error:
Open vSwitch CI b0f9a4
 dnl "connect: Cannot assign requested address"
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00:1::2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -w 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -W 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -W 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -179,13 +179,13 @@ ADD_CVLAN(p1.4094, at_ns1, 100, "fc00:1::2/96")
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00:1::2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -w 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -W 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -W 2 fc00:1::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -209,13 +209,13 @@ dnl waiting, we get occasional failures due to the following error:
Open vSwitch CI b0f9a4
 dnl "connect: Cannot assign requested address"
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -253,13 +253,13 @@ priority=0,actions=NORMAL
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl del-flows br0])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::3 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::3 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -w 2 fc00::3 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -W 2 fc00::3 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::3 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -W 2 fc00::3 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -278,13 +278,13 @@ ADD_VETH_BOND(p1 p2, at_ns1, br0, bond0, lacp=active bond_mode=balance-tcp, "10.
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.1.1.2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -315,18 +315,18 @@ ADD_NATIVE_TUNNEL([vxlan], [at_vxlan1], [at_ns0], [172.31.1.100], [10.1.1.1/24],
Open vSwitch CI b0f9a4
                   [id 0 dstport 4789])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -363,17 +363,17 @@ ADD_VLAN(at_vxlan1, at_ns0, 100, "10.1.1.1/24")
Open vSwitch CI b0f9a4
 ADD_VLAN(p0, at_ns0, 42, "172.31.1.1/24")
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -406,18 +406,18 @@ ADD_NATIVE_TUNNEL6([vxlan], [at_vxlan1], [at_ns0], [fc00::100], [10.1.1.1/24],
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::100])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -448,18 +448,18 @@ ADD_OVS_TUNNEL([gre], [br0], [at_gre0], [172.31.1.1], [10.1.1.100/24])
Open vSwitch CI b0f9a4
 ADD_NATIVE_TUNNEL([gretap], [ns_gre0], [at_ns0], [172.31.1.100], [10.1.1.1/24])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -495,12 +495,12 @@ ADD_NATIVE_TUNNEL6([ip6gretap], [ns_gretap0], [at_ns0], [fc00:100::100],
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 2 fc00:100::100])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 OVS_TRAFFIC_VSWITCHD_STOP
Open vSwitch CI b0f9a4
@@ -532,12 +532,12 @@ ADD_OVS_TUNNEL([erspan], [br0], [at_erspan0], [172.31.1.1], [10.1.1.100/24], [op
Open vSwitch CI b0f9a4
 ADD_NATIVE_TUNNEL([erspan], [ns_erspan0], [at_ns0], [172.31.1.100], [10.1.1.1/24], [seq key 1 erspan_ver 1 erspan 7])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-dnl NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+dnl NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 NS_CHECK_EXEC([at_ns0], [ping -s 1200 -i 0.3 -c 3 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
@@ -569,12 +569,12 @@ ADD_OVS_TUNNEL([erspan], [br0], [at_erspan0], [172.31.1.1], [10.1.1.100/24], [op
Open vSwitch CI b0f9a4
 ADD_NATIVE_TUNNEL([erspan], [ns_erspan0], [at_ns0], [172.31.1.100], [10.1.1.1/24], [seq key 1 erspan_ver 2 erspan_dir egress erspan_hwid 7])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-dnl NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+dnl NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 NS_CHECK_EXEC([at_ns0], [ping -s 1200 -i 0.3 -c 3 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
@@ -610,12 +610,12 @@ ADD_NATIVE_TUNNEL6([ip6erspan], [ns_erspan0], [at_ns0], [fc00:100::100],
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 2 fc00:100::100])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 OVS_TRAFFIC_VSWITCHD_STOP
Open vSwitch CI b0f9a4
@@ -651,12 +651,12 @@ ADD_NATIVE_TUNNEL6([ip6erspan], [ns_erspan0], [at_ns0], [fc00:100::100],
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 2 fc00:100::100])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 OVS_TRAFFIC_VSWITCHD_STOP
Open vSwitch CI b0f9a4
@@ -686,18 +686,18 @@ ADD_NATIVE_TUNNEL([geneve], [ns_gnv0], [at_ns0], [172.31.1.100], [10.1.1.1/24],
Open vSwitch CI b0f9a4
                   [vni 0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -739,12 +739,12 @@ ADD_NATIVE_TUNNEL([geneve], [ns_gnv0], [at_ns0], [172.31.1.100], [10.1.1.1/24],
Open vSwitch CI b0f9a4
                   [vni 0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl ping over tunnel should work
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -837,18 +837,18 @@ ADD_NATIVE_TUNNEL6([geneve], [ns_gnv0], [at_ns0], [fc00::100], [10.1.1.1/24],
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::100])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -883,12 +883,12 @@ AT_CHECK([ovs-ofctl add-flow br0 "table=37,actions=at_gnv0"])
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::100])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI 201dc3
 ])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 dnl Start tcpdump to capture the encapsulated packets.
Open vSwitch CI 201dc3
-NETNS_DAEMONIZE([at_ns0], [tcpdump -U -i p0 -w p0.pcap], [tcpdump.pid])
Open vSwitch CI 201dc3
+NETNS_DAEMONIZE([at_ns0], [tcpdump -n -U -i p0 -w p0.pcap], [tcpdump.pid])
Open vSwitch CI 201dc3
 sleep 1
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 dnl Generate a single packet trough the controler that needs an ARP modification
Open vSwitch CI b0f9a4
@@ -930,7 +930,7 @@ NETNS_DAEMONIZE([at_ns0], [tcpdump -n -i p0 dst host 172.31.1.1 -l > p0.pcap 2>/
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -978,7 +978,7 @@ NETNS_DAEMONIZE([at_ns0], [tcpdump -n -x -i p0 dst host 172.31.1.1 -l > p0.pcap
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -1031,7 +1031,7 @@ NETNS_DAEMONIZE([at_ns0], [tcpdump -n -x -i p0 dst host 172.31.1.1 -l > p0.pcap
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -1088,7 +1088,7 @@ NETNS_DAEMONIZE([at_ns0], [tcpdump -n -x -i p0 dst host fc00:100::1 -l > p0.pcap
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -1144,7 +1144,7 @@ NETNS_DAEMONIZE([at_ns0], [tcpdump -n -x -i p0 dst host fc00:100::1 -l > p0.pcap
Open vSwitch CI b0f9a4
 sleep 1
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -1214,12 +1214,12 @@ dnl "connect: Cannot assign requested address"
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::100])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -w 2 10.100.100.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -W 2 10.100.100.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -1276,12 +1276,12 @@ OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::100])
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns1 ping6 -c 1 fc00:100::100])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping6 -q -c 3 -i 0.3 -w 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping6 -q -c 3 -i 0.3 -W 2 fc00:100::100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -1307,7 +1307,7 @@ priority=10 in_port=2,ip,actions=clone(mod_dl_src(ae:c6:7e:54:8d:4d),mod_dl_dst(
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> ofctl_monitor.log])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -1348,11 +1348,11 @@ table=1,priority=10 actions=normal
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br1 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -w 2 10.1.1.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -W 2 10.1.1.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -1387,11 +1387,11 @@ table=3,priority=10 actions=normal
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br1 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -w 2 10.1.1.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -W 2 10.1.1.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 OVS_TRAFFIC_VSWITCHD_STOP
Open vSwitch CI b0f9a4
@@ -2062,7 +2062,7 @@ add in_port=ovs-p1,actions=ovs-p0,br0
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -2081,7 +2081,7 @@ modify in_port=ovs-p1,actions=ovs-p0
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br0 flows2.txt])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-appctl revalidator/wait], [0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -2096,7 +2096,7 @@ recirc_id(<recirc>),in_port(3),eth_type(0x0800),ipv4(frag=no), packets:19, bytes
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-appctl revalidator/wait], [0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 10 -i 0.1 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 10 packets transmitted, 10 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI 91dce2
@@ -2516,6 +2516,7 @@ AT_CLEANUP
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 AT_SETUP([conntrack - ct flush])
Open vSwitch CI 91dce2
 CHECK_CONNTRACK()
Open vSwitch CI 91dce2
+CHECK_CONNTRACK_SCTP()
Open vSwitch CI 91dce2
 OVS_TRAFFIC_VSWITCHD_START()
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 ADD_NAMESPACES(at_ns0, at_ns1)
Open vSwitch CI 91dce2
@@ -2526,10 +2527,8 @@ ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24")
Open vSwitch CI 91dce2
 AT_DATA([flows.txt], [dnl
Open vSwitch CI 91dce2
 priority=1,action=drop
Open vSwitch CI 91dce2
 priority=10,arp,action=normal
Open vSwitch CI 91dce2
-priority=100,in_port=1,udp,action=ct(commit),2
Open vSwitch CI 91dce2
-priority=100,in_port=2,udp,action=ct(zone=5,commit),1
Open vSwitch CI 91dce2
-priority=100,in_port=1,icmp,action=ct(commit),2
Open vSwitch CI 91dce2
-priority=100,in_port=2,icmp,action=ct(zone=5,commit),1
Open vSwitch CI 91dce2
+priority=100,in_port=1,ip,action=ct(commit),2
Open vSwitch CI 91dce2
+priority=100,in_port=2,ip,action=ct(zone=5,commit),1
Open vSwitch CI 91dce2
 ])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
@@ -2564,7 +2563,7 @@ AT_CHECK([FLUSH_CMD zone=5 'ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=17
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2)], [0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Test ICMP traffic
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -w 2 10.1.1.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns1], [ping -q -c 3 -i 0.3 -W 2 10.1.1.1 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI 91dce2
@@ -2692,6 +2691,25 @@ udp,orig=(src=10.1.1.2,dst=10.1.1.1,sport=2,dport=1),reply=(src=10.1.1.1,dst=10.
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 AT_CHECK([FLUSH_CMD])
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+AT_CHECK([ovs-appctl dpctl/dump-conntrack | grep "10\.1\.1\.1"], [1])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+dnl Test SCTP flush based on port.
Open vSwitch CI 91dce2
+AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=50540000000a50540000000908004500003400010000408464410a0101010a01010200010002000000009178f7d30100001470e18ccc00000000000a000a00000000 actions=resubmit(,0)"])
Open vSwitch CI 91dce2
+AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=2 packet=50540000000950540000000a08004500003400010000408464410a0101020a010101000200010000000098f29e470100001470e18ccc00000000000a000a00000000 actions=resubmit(,0)"])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+AT_CHECK([ovs-appctl dpctl/dump-conntrack | grep "10\.1\.1\.1" | sed "s/,protoinfo=.*$//" | sort], [0], [dnl
Open vSwitch CI 91dce2
+sctp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=1,dport=2),reply=(src=10.1.1.2,dst=10.1.1.1,sport=2,dport=1)
Open vSwitch CI 91dce2
+sctp,orig=(src=10.1.1.2,dst=10.1.1.1,sport=2,dport=1),reply=(src=10.1.1.1,dst=10.1.1.2,sport=1,dport=2),zone=5
Open vSwitch CI 91dce2
+])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+AT_CHECK([FLUSH_CMD 'ct_nw_src=10.1.1.1,ct_nw_proto=132,ct_tp_src=1,ct_tp_dst=2'])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+AT_CHECK([ovs-appctl dpctl/dump-conntrack | grep "10\.1\.1\.1" | sed "s/,protoinfo=.*$//" | sort], [0], [dnl
Open vSwitch CI 91dce2
+sctp,orig=(src=10.1.1.2,dst=10.1.1.1,sport=2,dport=1),reply=(src=10.1.1.1,dst=10.1.1.2,sport=1,dport=2),zone=5
Open vSwitch CI 91dce2
+])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+AT_CHECK([FLUSH_CMD 'ct_nw_src=10.1.1.2,ct_nw_proto=132,ct_tp_src=2,ct_tp_dst=1'])
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
 AT_CHECK([ovs-appctl dpctl/dump-conntrack | grep "10\.1\.1\.1"], [1])
Open vSwitch CI 91dce2
 ])
Open vSwitch CI 91dce2
 
Open vSwitch CI b0f9a4
@@ -2745,7 +2763,7 @@ priority=100,in_port=2,icmp,ct_state=+trk+est,action=1
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Pings from ns0->ns1 should work fine.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -2786,7 +2804,7 @@ priority=100,in_port=2,icmp,ct_state=+trk+est,action=1
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Pings from ns0->ns1 should work fine.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -2886,7 +2904,7 @@ NS_CHECK_EXEC([at_ns1], [ping6 -q -c 3 -i 0.3 -w 2 fc00::1 | FORMAT_PING], [0],
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Pings from ns0->ns1 should work fine.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI 201dc3
@@ -3796,7 +3814,7 @@ table=0,in_port=ovs-p1,ct_state=+trk+rel+rpl,icmp,actions=ovs-p0
Open vSwitch CI 201dc3
 AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 rm p0.pcap
Open vSwitch CI 201dc3
-NETNS_DAEMONIZE([at_ns0], [tcpdump -l -U -i p0 -w p0.pcap 2> tcpdump0_err], [tcpdump0.pid])
Open vSwitch CI 201dc3
+NETNS_DAEMONIZE([at_ns0], [tcpdump -n -l -U -i p0 -w p0.pcap 2> tcpdump0_err], [tcpdump0.pid])
Open vSwitch CI 201dc3
 OVS_WAIT_UNTIL([grep "listening" tcpdump0_err])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 dnl Send UDP packet from 10.1.1.1:1234 to 10.1.1.240:80
Open vSwitch CI b0f9a4
@@ -3837,12 +3855,12 @@ dnl Modify userspace conntrack fragmentation handling.
Open vSwitch CI b0f9a4
 DPCTL_MODIFY_FRAGMENTATION()
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv4 fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv4 larger fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -3914,12 +3932,12 @@ dnl Modify userspace conntrack fragmentation handling.
Open vSwitch CI b0f9a4
 DPCTL_MODIFY_FRAGMENTATION()
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv4 fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv4 larger fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -3960,22 +3978,22 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv4 fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv4 fragmentation connectivity check. (outer svlan)
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.255.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.255.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv4 larger fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv4 larger fragmentation connectivity check. (outer svlan)
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.255.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.255.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -4134,12 +4152,12 @@ dnl "connect: Cannot assign requested address"
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv6 fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv6 larger fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -4216,12 +4234,12 @@ dnl "connect: Cannot assign requested address"
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv4 fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -w 2 fc00:1::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -W 2 fc00:1::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv4 larger fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00:1::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -W 2 fc00:1::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -4259,22 +4277,22 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00:1::4])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv6 fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -w 2 fc00:1::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -W 2 fc00:1::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv6 fragmentation connectivity check. (outer svlan)
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -w 2 fc00:ffff::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -W 2 fc00:ffff::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv6 larger fragmentation connectivity check.
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00:1::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -W 2 fc00:1::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Ipv6 larger fragmentation connectivity check. (outer svlan)
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00:ffff::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -W 2 fc00:ffff::4 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -4486,18 +4504,18 @@ ADD_NATIVE_TUNNEL([vxlan], [at_vxlan1], [at_ns0], [172.31.1.100], [10.1.1.1/24],
Open vSwitch CI b0f9a4
                   [id 0 dstport 4789])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -4546,18 +4564,18 @@ dnl "connect: Cannot assign requested address"
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay with different packet sizes
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 1600 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -W 2 fc00::2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -4670,7 +4688,7 @@ dnl The default udp_single and icmp_first timeouts are 30 seconds in
Open vSwitch CI b0f9a4
 dnl kernel DP, and 60 seconds in userspace DP.
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Send ICMP and UDP traffic
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=50540000000a50540000000908004500001c000000000011a4cd0a0101010a0101020001000200080000 actions=resubmit(,0)"])
Open vSwitch CI b0f9a4
@@ -4696,7 +4714,7 @@ done
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-vsctl --may-exist add-zone-tp $DP_TYPE zone=5 udp_first=1 udp_single=1 icmp_first=1 icmp_reply=1])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Send ICMP and UDP traffic
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=50540000000a50540000000908004500001c000000000011a4cd0a0101010a0101020001000200080000 actions=resubmit(,0)"])
Open vSwitch CI b0f9a4
@@ -4714,7 +4732,7 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2)], [0], [dnl
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Re-send ICMP and UDP traffic to test conntrack cache
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=50540000000a50540000000908004500001c000000000011a4cd0a0101010a0101020001000200080000 actions=resubmit(,0)"])
Open vSwitch CI b0f9a4
@@ -4735,7 +4753,7 @@ dnl Set the timeout policy to default again.
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-vsctl del-zone-tp $DP_TYPE zone=5])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Send ICMP and UDP traffic
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=50540000000a50540000000908004500001c000000000011a4cd0a0101010a0101020001000200080000 actions=resubmit(,0)"])
Open vSwitch CI b0f9a4
@@ -5001,7 +5019,7 @@ table=2,in_port=1,ip,ct_state=+trk+est,ct_zone=2,action=LOCAL
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-AT_CHECK([ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+AT_CHECK([ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -5072,7 +5090,7 @@ table=4,priority=100,ip,action=output:NXM_NX_REG0[[]]
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-AT_CHECK([ping -q -c 3 -i 0.3 -w 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+AT_CHECK([ping -q -c 3 -i 0.3 -W 2 10.1.1.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI 201dc3
@@ -6140,7 +6158,7 @@ table=10 priority=0 action=drop
Open vSwitch CI 201dc3
 AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 rm p0.pcap
Open vSwitch CI 201dc3
-OVS_DAEMONIZE([tcpdump -U -i ovs-p0 -w p0.pcap], [tcpdump.pid])
Open vSwitch CI 201dc3
+OVS_DAEMONIZE([tcpdump -n -U -i ovs-p0 -w p0.pcap], [tcpdump.pid])
Open vSwitch CI 201dc3
 sleep 1
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 dnl UDP packets from ns0->ns1 should solicit "destination unreachable" response.
Open vSwitch CI 201dc3
@@ -6164,7 +6182,7 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2) | sed -e 's/dst=
Open vSwitch CI 201dc3
 udp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=<cleared>,dport=<cleared>),reply=(src=10.1.1.2,dst=10.1.1.2XX,sport=<cleared>,dport=<cleared>),mark=1
Open vSwitch CI 201dc3
 ])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
-AT_CHECK([tcpdump -v "icmp" -r p0.pcap 2>/dev/null | grep -E 'wrong|bad'], [1], [ignore-nolog])
Open vSwitch CI 201dc3
+AT_CHECK([tcpdump -n -v "icmp" -r p0.pcap 2>/dev/null | grep -E 'wrong|bad'], [1], [ignore-nolog])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 OVS_TRAFFIC_VSWITCHD_STOP
Open vSwitch CI 201dc3
 AT_CLEANUP
Open vSwitch CI b0f9a4
@@ -6854,7 +6872,7 @@ dnl waiting, we get occasional failures due to the following error:
Open vSwitch CI b0f9a4
 dnl "connect: Cannot assign requested address"
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::240])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::240 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -W 2 fc00::240 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI 201dc3
@@ -6909,13 +6927,13 @@ OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2])
Open vSwitch CI 201dc3
 AT_CHECK([ovs-appctl dpctl/flush-conntrack])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 rm p0.pcap
Open vSwitch CI 201dc3
-OVS_DAEMONIZE([tcpdump -U -i ovs-p0 -w p0.pcap], [tcpdump.pid])
Open vSwitch CI 201dc3
+OVS_DAEMONIZE([tcpdump -n -U -i ovs-p0 -w p0.pcap], [tcpdump.pid])
Open vSwitch CI 201dc3
 sleep 1
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 dnl UDP packets from ns0->ns1 should solicit "destination unreachable" response.
Open vSwitch CI 201dc3
 NS_CHECK_EXEC([at_ns0], [bash -c "echo a | nc -6 $NC_EOF_OPT -u fc00::2 1"])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
-AT_CHECK([tcpdump -v "icmp6" -r p0.pcap 2>/dev/null | grep -E 'wrong|bad'], [1], [ignore-nolog])
Open vSwitch CI 201dc3
+AT_CHECK([tcpdump -n -v "icmp6" -r p0.pcap 2>/dev/null | grep -E 'wrong|bad'], [1], [ignore-nolog])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fc00::2)], [0], [dnl
Open vSwitch CI 201dc3
 udp,orig=(src=fc00::1,dst=fc00::2,sport=<cleared>,dport=<cleared>),reply=(src=fc00::2,dst=fc00::240,sport=<cleared>,dport=<cleared>)
Open vSwitch CI 201dc3
@@ -6944,7 +6962,7 @@ table=0,in_port=ovs-p1,ct_state=+trk+rel+rpl,icmp6,actions=ovs-p0
Open vSwitch CI 201dc3
 AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 rm p0.pcap
Open vSwitch CI 201dc3
-NETNS_DAEMONIZE([at_ns0], [tcpdump -l -U -i p0 -w p0.pcap 2> tcpdump0_err], [tcpdump0.pid])
Open vSwitch CI 201dc3
+NETNS_DAEMONIZE([at_ns0], [tcpdump -n -l -U -i p0 -w p0.pcap 2> tcpdump0_err], [tcpdump0.pid])
Open vSwitch CI 201dc3
 OVS_WAIT_UNTIL([grep "listening" tcpdump0_err])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 dnl Send UDP packet from [[fc00::1]]:1234 to [[fc00::240]]:80
Open vSwitch CI b0f9a4
@@ -7587,12 +7605,12 @@ ADD_NATIVE_TUNNEL([geneve], [ns_gnv0], [at_ns0], [172.31.1.100], [10.1.1.1/24],
Open vSwitch CI b0f9a4
                   [vni 0])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl First, check the underlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 172.31.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl Okay, now check the overlay
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.1.1.100 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI 201dc3
@@ -7635,7 +7653,7 @@ table=2,in_port=ovs-server,ip,ct_state=+trk+rpl,actions=output:ovs-client
Open vSwitch CI 201dc3
 AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 rm server.pcap
Open vSwitch CI 201dc3
-NETNS_DAEMONIZE([server], [tcpdump -l -U -i server -w server.pcap 2>tcpdump0_err], [tcpdump0.pid])
Open vSwitch CI 201dc3
+NETNS_DAEMONIZE([server], [tcpdump -n -l -U -i server -w server.pcap 2>tcpdump0_err], [tcpdump0.pid])
Open vSwitch CI 201dc3
 OVS_WAIT_UNTIL([grep "listening" tcpdump0_err])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 dnl Send UDP client->server
Open vSwitch CI 201dc3
@@ -7677,7 +7695,7 @@ dnl Check the ICMP error in reply direction
Open vSwitch CI 201dc3
 AT_CHECK([ovs-appctl dpctl/flush-conntrack zone=42])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 rm client.pcap
Open vSwitch CI 201dc3
-NETNS_DAEMONIZE([client], [tcpdump -l -U -i client -w client.pcap 2>tcpdump1_err], [tcpdump1.pid])
Open vSwitch CI 201dc3
+NETNS_DAEMONIZE([client], [tcpdump -n -l -U -i client -w client.pcap 2>tcpdump1_err], [tcpdump1.pid])
Open vSwitch CI 201dc3
 OVS_WAIT_UNTIL([grep "listening" tcpdump1_err])
Open vSwitch CI 201dc3
 
Open vSwitch CI 201dc3
 dnl Send UDP client->server
Open vSwitch CI b0f9a4
@@ -7819,7 +7837,7 @@ dnl CVLAN traffic should match the flow and drop
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-appctl revalidator/purge])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:vlan-limit=1])
Open vSwitch CI b0f9a4
 AT_CHECK([ovs-ofctl add-flow br0 "priority=100 dl_type=0x8100 action=drop"])
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 1 -w 3 10.2.2.2], [1], [ignore])
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 1 -W 3 10.2.2.2], [1], [ignore])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 OVS_TRAFFIC_VSWITCHD_STOP
Open vSwitch CI b0f9a4
 AT_CLEANUP
Open vSwitch CI b0f9a4
@@ -7869,11 +7887,11 @@ AT_CHECK([ovs-ofctl --bundle add-flows br2 flows-customer-br.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -7925,11 +7943,11 @@ AT_CHECK([ovs-ofctl --bundle add-flows br2 flows-customer-br.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -7977,24 +7995,24 @@ AT_CHECK([ovs-vsctl set port ovs-p2 vlan_mode=dot1q-tunnel tag=4094 cvlans=100,2
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2])
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.3.2.2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.3.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.3.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.3.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.3.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 dnl CVLAN 300 is not permitted by dot1q-tunnel
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 1 -w 3 10.4.2.2], [1], [ignore])
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 1 -W 3 10.4.2.2], [1], [ignore])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 OVS_TRAFFIC_VSWITCHD_STOP(["/dropping VLAN \(0\|300\) packet received on dot1q-tunnel port/d"])
Open vSwitch CI b0f9a4
 AT_CLEANUP
Open vSwitch CI b0f9a4
@@ -8023,11 +8041,11 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows-br0.txt])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -w 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([at_ns0], [ping -s 1600 -q -c 3 -i 0.3 -W 2 10.2.2.2 | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
diff --git a/tests/system-userspace-packet-type-aware.at b/tests/system-userspace-packet-type-aware.at
Open vSwitch CI b0f9a4
index 974304758..aac178eda 100644
Open vSwitch CI b0f9a4
--- a/tests/system-userspace-packet-type-aware.at
Open vSwitch CI b0f9a4
+++ b/tests/system-userspace-packet-type-aware.at
Open vSwitch CI b0f9a4
@@ -335,7 +335,7 @@ AT_CHECK([
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 # Ping between N1 and N3, via the L2 GRE tunnel between br-in1 and br-in3
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([ns1], [ping -q -c 3 -i 0.3 -w 2 $N3_IP | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([ns1], [ping -q -c 3 -i 0.3 -W 2 $N3_IP | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -363,7 +363,7 @@ AT_CHECK([
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 # Ping between N1 and N2, via the L2 GRE tunnel between br-in1 and br-in2
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([ns1], [ping -q -c 3 -i 0.3 -w 2 $N2_IP | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([ns1], [ping -q -c 3 -i 0.3 -W 2 $N2_IP | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
@@ -394,7 +394,7 @@ AT_CHECK([
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 
Open vSwitch CI b0f9a4
 # Ping between N3 and N2, via the L3 GRE tunnel between br-in3 and br-in2
Open vSwitch CI b0f9a4
-NS_CHECK_EXEC([ns3], [ping -q -c 3 -i 0.3 -w 2 $N1_IP | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
+NS_CHECK_EXEC([ns3], [ping -q -c 3 -i 0.3 -W 2 $N1_IP | FORMAT_PING], [0], [dnl
Open vSwitch CI b0f9a4
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
Open vSwitch CI b0f9a4
 ])
Open vSwitch CI b0f9a4
 
Open vSwitch CI 91dce2
diff --git a/tests/test-barrier.c b/tests/test-barrier.c
Open vSwitch CI 91dce2
index 3bc5291cc..fb0ab0e69 100644
Open vSwitch CI 91dce2
--- a/tests/test-barrier.c
Open vSwitch CI 91dce2
+++ b/tests/test-barrier.c
Open vSwitch CI 91dce2
@@ -14,13 +14,13 @@
Open vSwitch CI 91dce2
  * limitations under the License.
Open vSwitch CI 91dce2
  */
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-#include <getopt.h>
Open vSwitch CI 91dce2
-
Open vSwitch CI 91dce2
 #include <config.h>
Open vSwitch CI 91dce2
+#undef NDEBUG
Open vSwitch CI 91dce2
+#include <getopt.h>
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-#include "ovs-thread.h"
Open vSwitch CI 91dce2
-#include "ovs-rcu.h"
Open vSwitch CI 91dce2
 #include "ovstest.h"
Open vSwitch CI 91dce2
+#include "ovs-rcu.h"
Open vSwitch CI 91dce2
+#include "ovs-thread.h"
Open vSwitch CI 91dce2
 #include "random.h"
Open vSwitch CI 91dce2
 #include "util.h"
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
diff --git a/tests/test-id-fpool.c b/tests/test-id-fpool.c
Open vSwitch CI 91dce2
index 25275d9ae..27800aa9b 100644
Open vSwitch CI 91dce2
--- a/tests/test-id-fpool.c
Open vSwitch CI 91dce2
+++ b/tests/test-id-fpool.c
Open vSwitch CI 91dce2
@@ -14,12 +14,12 @@
Open vSwitch CI 91dce2
  * limitations under the License.
Open vSwitch CI 91dce2
  */
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+#include <config.h>
Open vSwitch CI 91dce2
 #undef NDEBUG
Open vSwitch CI 91dce2
 #include <assert.h>
Open vSwitch CI 91dce2
 #include <getopt.h>
Open vSwitch CI 91dce2
 #include <string.h>
Open vSwitch CI 91dce2
-
Open vSwitch CI 91dce2
-#include <config.h>
Open vSwitch CI 91dce2
+#include <sys/time.h>
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 #include "command-line.h"
Open vSwitch CI 91dce2
 #include "id-fpool.h"
Open vSwitch CI 91dce2
diff --git a/tests/test-mpsc-queue.c b/tests/test-mpsc-queue.c
Open vSwitch CI 91dce2
index a38bf9e6d..16aa804a0 100644
Open vSwitch CI 91dce2
--- a/tests/test-mpsc-queue.c
Open vSwitch CI 91dce2
+++ b/tests/test-mpsc-queue.c
Open vSwitch CI 91dce2
@@ -14,12 +14,12 @@
Open vSwitch CI 91dce2
  * limitations under the License.
Open vSwitch CI 91dce2
  */
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+#include <config.h>
Open vSwitch CI 91dce2
 #undef NDEBUG
Open vSwitch CI 91dce2
 #include <assert.h>
Open vSwitch CI 91dce2
 #include <getopt.h>
Open vSwitch CI 91dce2
 #include <string.h>
Open vSwitch CI 91dce2
-
Open vSwitch CI 91dce2
-#include <config.h>
Open vSwitch CI 91dce2
+#include <sys/time.h>
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
 #include "command-line.h"
Open vSwitch CI 91dce2
 #include "guarded-list.h"
Open vSwitch CI 91dce2
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
Open vSwitch CI 91dce2
index cfcde34ff..1e2a1267d 100644
Open vSwitch CI 91dce2
--- a/vswitchd/vswitch.xml
Open vSwitch CI 91dce2
+++ b/vswitchd/vswitch.xml
Open vSwitch CI 91dce2
@@ -3797,14 +3797,29 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
Open vSwitch CI 91dce2
             Interface description string.
Open vSwitch CI 91dce2
           </column>
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-          <column name="status" key="pci-vendor_id">
Open vSwitch CI 91dce2
-            Vendor ID of PCI device.
Open vSwitch CI 91dce2
+          <column name="status" key="bus_info">
Open vSwitch CI 91dce2
+            Bus name and bus info such as Vendor ID and Device ID of PCI
Open vSwitch CI 91dce2
+            device.
Open vSwitch CI 91dce2
           </column>
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
-          <column name="status" key="pci-device_id">
Open vSwitch CI 91dce2
-            Device ID of PCI device.
Open vSwitch CI 91dce2
+          <column name="status" key="dpdk-vf-mac">
Open vSwitch CI 91dce2
+            Ethernet address set for this VF interface. Only reported for dpdk
Open vSwitch CI 91dce2
+            VF representors.
Open vSwitch CI 91dce2
           </column>
Open vSwitch CI 91dce2
 
Open vSwitch CI 91dce2
+          <column name="status" key="rx_steering">
Open vSwitch CI 91dce2
+            Hardware Rx queue steering policy in use.
Open vSwitch CI 91dce2
+          </column>
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+          <column name="status" key="rx_steering_queue">
Open vSwitch CI 91dce2
+            ID of rx steering queue. Only reported if rx-steering
Open vSwitch CI 91dce2
+            is supported by hardware.
Open vSwitch CI 91dce2
+          </column>
Open vSwitch CI 91dce2
+
Open vSwitch CI 91dce2
+          <column name="status" key="rss_queues">
Open vSwitch CI 91dce2
+            IDs of rss queues. Only reported if rx-steering is
Open vSwitch CI 91dce2
+            supported by hardware.
Open vSwitch CI 91dce2
+          </column>
Open vSwitch CI 91dce2
       </group>
Open vSwitch CI 91dce2
     </group>
Open vSwitch CI 91dce2
 
Open vSwitch CI b26252
diff --git a/dpdk/drivers/net/i40e/i40e_ethdev.c b/dpdk/drivers/net/i40e/i40e_ethdev.c
Open vSwitch CI b26252
index 7726a89d99..a982e42264 100644
Open vSwitch CI b26252
--- a/dpdk/drivers/net/i40e/i40e_ethdev.c
Open vSwitch CI b26252
+++ b/dpdk/drivers/net/i40e/i40e_ethdev.c
Open vSwitch CI b26252
@@ -387,7 +387,6 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev,
Open vSwitch CI b26252
 				      struct rte_ether_addr *mac_addr);
Open vSwitch CI b26252
 
Open vSwitch CI b26252
 static int i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
Open vSwitch CI b26252
-static void i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size);
Open vSwitch CI b26252
 
Open vSwitch CI b26252
 static int i40e_ethertype_filter_convert(
Open vSwitch CI b26252
 	const struct rte_eth_ethertype_filter *input,
Open vSwitch CI b26252
@@ -1711,6 +1710,11 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
Open vSwitch CI b26252
 	 */
Open vSwitch CI b26252
 	i40e_add_tx_flow_control_drop_filter(pf);
Open vSwitch CI b26252
 
Open vSwitch CI b26252
+	/* Set the max frame size to 0x2600 by default,
Open vSwitch CI b26252
+	 * in case other drivers changed the default value.
Open vSwitch CI b26252
+	 */
Open vSwitch CI b26252
+	i40e_aq_set_mac_config(hw, I40E_FRAME_SIZE_MAX, TRUE, false, 0, NULL);
Open vSwitch CI b26252
+
Open vSwitch CI b26252
 	/* initialize RSS rule list */
Open vSwitch CI b26252
 	TAILQ_INIT(&pf->rss_config_list);
Open vSwitch CI b26252
 
Open vSwitch CI b26252
@@ -2328,7 +2332,6 @@ i40e_dev_start(struct rte_eth_dev *dev)
Open vSwitch CI b26252
 	uint32_t intr_vector = 0;
Open vSwitch CI b26252
 	struct i40e_vsi *vsi;
Open vSwitch CI b26252
 	uint16_t nb_rxq, nb_txq;
Open vSwitch CI b26252
-	uint16_t max_frame_size;
Open vSwitch CI b26252
 
Open vSwitch CI b26252
 	hw->adapter_stopped = 0;
Open vSwitch CI b26252
 
Open vSwitch CI b26252
@@ -2467,9 +2470,6 @@ i40e_dev_start(struct rte_eth_dev *dev)
Open vSwitch CI b26252
 			    "please call hierarchy_commit() "
Open vSwitch CI b26252
 			    "before starting the port");
Open vSwitch CI b26252
 
Open vSwitch CI b26252
-	max_frame_size = dev->data->mtu + I40E_ETH_OVERHEAD;
Open vSwitch CI b26252
-	i40e_set_mac_max_frame(dev, max_frame_size);
Open vSwitch CI b26252
-
Open vSwitch CI b26252
 	return I40E_SUCCESS;
Open vSwitch CI b26252
 
Open vSwitch CI b26252
 tx_err:
Open vSwitch CI b26252
@@ -2809,9 +2809,6 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev)
Open vSwitch CI b26252
 	return i40e_phy_conf_link(hw, abilities, speed, false);
Open vSwitch CI b26252
 }
Open vSwitch CI b26252
 
Open vSwitch CI b26252
-#define CHECK_INTERVAL             100  /* 100ms */
Open vSwitch CI b26252
-#define MAX_REPEAT_TIME            10  /* 1s (10 * 100ms) in total */
Open vSwitch CI b26252
-
Open vSwitch CI b26252
 static __rte_always_inline void
Open vSwitch CI b26252
 update_link_reg(struct i40e_hw *hw, struct rte_eth_link *link)
Open vSwitch CI b26252
 {
Open vSwitch CI b26252
@@ -2878,6 +2875,8 @@ static __rte_always_inline void
Open vSwitch CI b26252
 update_link_aq(struct i40e_hw *hw, struct rte_eth_link *link,
Open vSwitch CI b26252
 	bool enable_lse, int wait_to_complete)
Open vSwitch CI b26252
 {
Open vSwitch CI b26252
+#define CHECK_INTERVAL             100  /* 100ms */
Open vSwitch CI b26252
+#define MAX_REPEAT_TIME            10  /* 1s (10 * 100ms) in total */
Open vSwitch CI b26252
 	uint32_t rep_cnt = MAX_REPEAT_TIME;
Open vSwitch CI b26252
 	struct i40e_link_status link_status;
Open vSwitch CI b26252
 	int status;
Open vSwitch CI b26252
@@ -6738,7 +6737,6 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev)
Open vSwitch CI b26252
 			if (!ret)
Open vSwitch CI b26252
 				rte_eth_dev_callback_process(dev,
Open vSwitch CI b26252
 					RTE_ETH_EVENT_INTR_LSC, NULL);
Open vSwitch CI b26252
-
Open vSwitch CI b26252
 			break;
Open vSwitch CI b26252
 		default:
Open vSwitch CI b26252
 			PMD_DRV_LOG(DEBUG, "Request %u is not supported yet",
Open vSwitch CI b26252
@@ -12123,40 +12121,6 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
Open vSwitch CI b26252
 	return ret;
Open vSwitch CI b26252
 }
Open vSwitch CI b26252
 
Open vSwitch CI b26252
-static void
Open vSwitch CI b26252
-i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size)
Open vSwitch CI b26252
-{
Open vSwitch CI b26252
-	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
Open vSwitch CI b26252
-	uint32_t rep_cnt = MAX_REPEAT_TIME;
Open vSwitch CI b26252
-	struct rte_eth_link link;
Open vSwitch CI b26252
-	enum i40e_status_code status;
Open vSwitch CI b26252
-	bool can_be_set = true;
Open vSwitch CI b26252
-
Open vSwitch CI b26252
-	/*
Open vSwitch CI b26252
-	 * I40E_MEDIA_TYPE_BASET link up can be ignored
Open vSwitch CI b26252
-	 * I40E_MEDIA_TYPE_BASET link down that hw->phy.media_type
Open vSwitch CI b26252
-	 * is I40E_MEDIA_TYPE_UNKNOWN
Open vSwitch CI b26252
-	 */
Open vSwitch CI b26252
-	if (hw->phy.media_type != I40E_MEDIA_TYPE_BASET &&
Open vSwitch CI b26252
-	    hw->phy.media_type != I40E_MEDIA_TYPE_UNKNOWN) {
Open vSwitch CI b26252
-		do {
Open vSwitch CI b26252
-			update_link_reg(hw, &link);
Open vSwitch CI b26252
-			if (link.link_status)
Open vSwitch CI b26252
-				break;
Open vSwitch CI b26252
-			rte_delay_ms(CHECK_INTERVAL);
Open vSwitch CI b26252
-		} while (--rep_cnt);
Open vSwitch CI b26252
-		can_be_set = !!link.link_status;
Open vSwitch CI b26252
-	}
Open vSwitch CI b26252
-
Open vSwitch CI b26252
-	if (can_be_set) {
Open vSwitch CI b26252
-		status = i40e_aq_set_mac_config(hw, size, TRUE, 0, false, NULL);
Open vSwitch CI b26252
-		if (status != I40E_SUCCESS)
Open vSwitch CI b26252
-			PMD_DRV_LOG(ERR, "Failed to set max frame size at port level");
Open vSwitch CI b26252
-	} else {
Open vSwitch CI b26252
-		PMD_DRV_LOG(ERR, "Set max frame size at port level not applicable on link down");
Open vSwitch CI b26252
-	}
Open vSwitch CI b26252
-}
Open vSwitch CI b26252
-
Open vSwitch CI b26252
 RTE_LOG_REGISTER_SUFFIX(i40e_logtype_init, init, NOTICE);
Open vSwitch CI b26252
 RTE_LOG_REGISTER_SUFFIX(i40e_logtype_driver, driver, NOTICE);
Open vSwitch CI b26252
 #ifdef RTE_ETHDEV_DEBUG_RX