|
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 |
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 |
91dce2 |
diff --git a/Makefile.am b/Makefile.am
|
|
Open vSwitch CI |
91dce2 |
index db341504d..439e2bf6d 100644
|
|
Open vSwitch CI |
91dce2 |
--- a/Makefile.am
|
|
Open vSwitch CI |
91dce2 |
+++ b/Makefile.am
|
|
Open vSwitch CI |
91dce2 |
@@ -368,7 +368,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 |
91dce2 |
@@ -415,7 +415,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 |
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 |
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 |
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 |
91dce2 |
diff --git a/tests/system-traffic.at b/tests/system-traffic.at
|
|
Open vSwitch CI |
91dce2 |
index 808c492a2..418cd32fe 100644
|
|
Open vSwitch CI |
91dce2 |
--- a/tests/system-traffic.at
|
|
Open vSwitch CI |
91dce2 |
+++ b/tests/system-traffic.at
|
|
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 |
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 |
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 |
|