diff --git a/.openvswitch.metadata b/.openvswitch.metadata new file mode 100644 index 0000000..c54e59a --- /dev/null +++ b/.openvswitch.metadata @@ -0,0 +1,6 @@ +d34f96421a86004aa5d26ecf975edefd09f948b1 SOURCES/Pygments-1.4.tar.gz +3a11f130c63b057532ca37fe49c8967d0cbae1d5 SOURCES/Sphinx-1.2.3.tar.gz +002450621b33c5690060345b0aac25bc2426d675 SOURCES/docutils-0.12.tar.gz +6fa486bc4c6af2bc692fe25f1d0e7737f05fa7d4 SOURCES/openvswitch-3.3.0.tar.gz +8509a716f9f936526f64fb23f313c5a9baf2f123 SOURCES/pyelftools-0.27.tar.gz +061198752d3d8b64d33113b7c8c1e272c973403d SOURCES/dpdk-23.11.tar.xz diff --git a/SOURCES/openvswitch-3.3.0.patch b/SOURCES/openvswitch-3.3.0.patch new file mode 100644 index 0000000..ba72404 --- /dev/null +++ b/SOURCES/openvswitch-3.3.0.patch @@ -0,0 +1,38920 @@ +diff --git a/.ci/dpdk-build.sh b/.ci/dpdk-build.sh +index 23f3166a54..698b9e1b14 100755 +--- a/.ci/dpdk-build.sh ++++ b/.ci/dpdk-build.sh +@@ -40,7 +40,7 @@ function build_dpdk() + # any DPDK driver. + # check-dpdk unit tests requires testpmd and some net/ driver. + DPDK_OPTS="$DPDK_OPTS -Denable_apps=test-pmd" +- enable_drivers="net/null,net/af_xdp,net/tap,net/virtio,net/pcap" ++ enable_drivers="net/null,net/af_xdp,net/tap,net/virtio" + DPDK_OPTS="$DPDK_OPTS -Denable_drivers=$enable_drivers" + # OVS depends on the vhost library (and its dependencies). + # net/tap depends on the gso library. +diff --git a/.ci/dpdk-prepare.sh b/.ci/dpdk-prepare.sh +index f7e6215dda..4424f9eb97 100755 +--- a/.ci/dpdk-prepare.sh ++++ b/.ci/dpdk-prepare.sh +@@ -8,4 +8,4 @@ set -ev + # https://github.com/pypa/pip/issues/10655 + pip3 install --disable-pip-version-check --user wheel + pip3 install --disable-pip-version-check --user pyelftools +-pip3 install --user 'meson==0.53.2' ++pip3 install --user 'meson>=1.4,<1.5' +diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh +index bf9d6241d5..702feeb3bb 100755 +--- a/.ci/linux-build.sh ++++ b/.ci/linux-build.sh +@@ -25,7 +25,7 @@ function install_dpdk() + export PKG_CONFIG_PATH=$DPDK_LIB/pkgconfig/:$PKG_CONFIG_PATH + + # Expose dpdk binaries. +- export PATH=$(pwd)/dpdk-dir/build/bin:$PATH ++ export PATH=$(pwd)/dpdk-dir/bin:$PATH + + if [ ! -f "${VERSION_FILE}" ]; then + echo "Could not find DPDK in $DPDK_INSTALL_DIR" +diff --git a/.ci/linux-prepare.sh b/.ci/linux-prepare.sh +index 5028bdc442..5f8a1db6af 100755 +--- a/.ci/linux-prepare.sh ++++ b/.ci/linux-prepare.sh +@@ -23,7 +23,7 @@ cd .. + # https://github.com/pypa/pip/issues/10655 + pip3 install --disable-pip-version-check --user wheel + pip3 install --disable-pip-version-check --user \ +- flake8 'hacking>=3.0' netaddr pyparsing sarif-tools sphinx setuptools ++ flake8 netaddr pyparsing sarif-tools==2.0.0 sphinx setuptools + + # Install python test dependencies + pip3 install -r python/test_requirements.txt +diff --git a/.cirrus.yml b/.cirrus.yml +index d8a9722809..d73154a971 100644 +--- a/.cirrus.yml ++++ b/.cirrus.yml +@@ -2,8 +2,8 @@ freebsd_build_task: + + freebsd_instance: + matrix: +- image_family: freebsd-13-2-snap +- image_family: freebsd-14-0-snap ++ image_family: freebsd-13-3-snap ++ image_family: freebsd-14-1-snap + cpu: 4 + memory: 4G + +diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml +index fc75581486..fba2d16031 100644 +--- a/.github/workflows/build-and-test.yml ++++ b/.github/workflows/build-and-test.yml +@@ -2,13 +2,16 @@ name: Build and Test + + on: [push, pull_request] + ++env: ++ python_default: 3.12 ++ + jobs: + build-dpdk: + env: +- dependencies: gcc libbpf-dev libnuma-dev libpcap-dev ninja-build pkgconf ++ dependencies: gcc libbpf-dev libnuma-dev ninja-build pkgconf + CC: gcc +- DPDK_GIT: https://dpdk.org/git/dpdk +- DPDK_VER: 23.11 ++ DPDK_GIT: https://dpdk.org/git/dpdk-stable ++ DPDK_VER: 23.11.2 + name: dpdk gcc + outputs: + dpdk_key: ${{ steps.gen_dpdk_key.outputs.key }} +@@ -54,7 +57,7 @@ jobs: + if: steps.dpdk_cache.outputs.cache-hit != 'true' + uses: actions/setup-python@v5 + with: +- python-version: '3.9' ++ python-version: ${{ env.python_default }} + + - name: update APT cache + if: steps.dpdk_cache.outputs.cache-hit != 'true' +@@ -76,8 +79,7 @@ jobs: + env: + dependencies: | + automake libtool gcc bc libjemalloc2 libjemalloc-dev libssl-dev \ +- llvm-dev libnuma-dev libpcap-dev selinux-policy-dev libbpf-dev \ +- lftp libreswan ++ llvm-dev libnuma-dev selinux-policy-dev libbpf-dev lftp libreswan + CC: ${{ matrix.compiler }} + DPDK: ${{ matrix.dpdk }} + DPDK_SHARED: ${{ matrix.dpdk_shared }} +@@ -217,7 +219,7 @@ jobs: + - name: set up python + uses: actions/setup-python@v5 + with: +- python-version: '3.9' ++ python-version: ${{ env.python_default }} + + - name: cache + if: matrix.dpdk != '' || matrix.dpdk_shared != '' +@@ -268,8 +270,8 @@ jobs: + needs: build-dpdk + env: + dependencies: | +- automake bc clang-tools libbpf-dev libnuma-dev libpcap-dev \ +- libunbound-dev libunwind-dev libssl-dev libtool llvm-dev ++ automake bc clang-tools libbpf-dev libnuma-dev libunbound-dev \ ++ libunwind-dev libssl-dev libtool llvm-dev + CC: clang + DPDK: dpdk + CLANG_ANALYZE: true +@@ -346,7 +348,7 @@ jobs: + - name: set up python + uses: actions/setup-python@v5 + with: +- python-version: '3.9' ++ python-version: ${{ env.python_default }} + + - name: get cached dpdk-dir + uses: actions/cache/restore@v4 +@@ -399,7 +401,7 @@ jobs: + - name: set up python + uses: actions/setup-python@v5 + with: +- python-version: '3.9' ++ python-version: ${{ env.python_default }} + - name: install dependencies + run: brew install automake libtool + - name: prepare +diff --git a/AUTHORS.rst b/AUTHORS.rst +index aa9284fb16..fe4064ca71 100644 +--- a/AUTHORS.rst ++++ b/AUTHORS.rst +@@ -245,6 +245,7 @@ Jon Kohler jon@nutanix.com + Jonathan Vestin jonavest@kau.se + Jorge Arturo Sauma Vargas jorge.sauma@hpe.com + Jun Nakajima jun.nakajima@intel.com ++Jun Wang junwang01@cestc.cn + JunhanYan juyan@redhat.com + JunoZhu zhunatuzi@gmail.com + Justin Pettit jpettit@ovn.org +@@ -588,6 +589,7 @@ David Evans davidjoshuaevans@gmail.com + David Palma palma@onesource.pt + David van Moolenbroek dvmoolenbroek@aimvalley.nl + Derek Cormier derek.cormier@lab.ntt.co.jp ++Derrick Lim derrick.lim@rakuten.com + Dhaval Badiani dbadiani@vmware.com + DK Moon + Ding Zhi zhi.ding@6wind.com +diff --git a/Documentation/conf.py b/Documentation/conf.py +index 085ca2cd67..774eafdb76 100644 +--- a/Documentation/conf.py ++++ b/Documentation/conf.py +@@ -12,6 +12,7 @@ + # All configuration values have a default; values that are commented out + # serve to show the default. + ++import os + import string + import sys + +@@ -108,6 +109,13 @@ html_logo = '_static/logo.png' + # so a file named "default.css" will overwrite the builtin "default.css". + html_static_path = ['_static'] + ++# Define the canonical URL for our domain configured on Read the Docs. ++html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "") ++ ++# Tell Jinja2 templates the build is running on Read the Docs. ++html_context = {} ++if os.environ.get("READTHEDOCS", "") == "True": ++ html_context["READTHEDOCS"] = True + + # -- Options for manual page output --------------------------------------- + +diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst +index 49b987b610..13cc635d04 100644 +--- a/Documentation/faq/releases.rst ++++ b/Documentation/faq/releases.rst +@@ -216,11 +216,11 @@ Q: What DPDK version does each Open vSwitch release work with? + 2.14.x 19.11.13 + 2.15.x 20.11.6 + 2.16.x 20.11.6 +- 2.17.x 21.11.6 +- 3.0.x 21.11.6 +- 3.1.x 22.11.4 +- 3.2.x 22.11.4 +- 3.3.x 23.11 ++ 2.17.x 21.11.8 ++ 3.0.x 21.11.8 ++ 3.1.x 22.11.6 ++ 3.2.x 22.11.6 ++ 3.3.x 23.11.2 + ============ ======== + + Q: Are all the DPDK releases that OVS versions work with maintained? +diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst +index ad9bdf22c0..e22b5676df 100644 +--- a/Documentation/intro/install/dpdk.rst ++++ b/Documentation/intro/install/dpdk.rst +@@ -42,7 +42,7 @@ Build requirements + In addition to the requirements described in :doc:`general`, building Open + vSwitch with DPDK will require the following: + +-- DPDK 23.11 ++- DPDK 23.11.2 + + - A `DPDK supported NIC`_ + +@@ -73,9 +73,9 @@ Install DPDK + #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``:: + + $ cd /usr/src/ +- $ wget https://fast.dpdk.org/rel/dpdk-23.11.tar.xz +- $ tar xf dpdk-23.11.tar.xz +- $ export DPDK_DIR=/usr/src/dpdk-23.11 ++ $ wget https://fast.dpdk.org/rel/dpdk-23.11.2.tar.xz ++ $ tar xf dpdk-23.11.2.tar.xz ++ $ export DPDK_DIR=/usr/src/dpdk-stable-23.11.2 + $ cd $DPDK_DIR + + #. Configure and install DPDK using Meson +diff --git a/Documentation/intro/install/general.rst b/Documentation/intro/install/general.rst +index 19e360d47c..7eb3a5d370 100644 +--- a/Documentation/intro/install/general.rst ++++ b/Documentation/intro/install/general.rst +@@ -176,10 +176,7 @@ following to obtain better warnings: + + - clang, version 3.4 or later + +-- flake8 along with the hacking flake8 plugin (for Python code). The automatic +- flake8 check that runs against Python code has some warnings enabled that +- come from the "hacking" flake8 plugin. If it's not installed, the warnings +- just won't occur until it's run on a system with "hacking" installed. ++- flake8 (for Python code) + + - the python packages listed in "python/test_requirements.txt" (compatible + with pip). If they are installed, the pytest-based Python unit tests will +diff --git a/Documentation/intro/install/windows.rst b/Documentation/intro/install/windows.rst +index fce099d5dc..efdb8aebce 100644 +--- a/Documentation/intro/install/windows.rst ++++ b/Documentation/intro/install/windows.rst +@@ -112,7 +112,7 @@ The following explains the steps in some detail. + `OpenSSL for Windows `__ + + Note down the directory where OpenSSL is installed (e.g.: +- ``C:/OpenSSL-Win32``) for later use. ++ ``C:/OpenSSL-Win64``) for later use. + + .. note:: + +@@ -182,7 +182,7 @@ To configure with SSL support, add the requisite additional options: + --localstatedir="C:/openvswitch/var" + --sysconfdir="C:/openvswitch/etc" \ + --with-pthread="C:/pthread" \ +- --enable-ssl --with-openssl="C:/OpenSSL-Win32" ++ --enable-ssl --with-openssl="C:/OpenSSL-Win64" + + Finally, to the kernel module also: + +@@ -194,7 +194,7 @@ Finally, to the kernel module also: + --localstatedir="C:/openvswitch/var" \ + --sysconfdir="C:/openvswitch/etc" \ + --with-pthread="C:/pthread" \ +- --enable-ssl --with-openssl="C:/OpenSSL-Win32" \ ++ --enable-ssl --with-openssl="C:/OpenSSL-Win64" \ + --with-vstudiotarget="" \ + --with-vstudiotargetver="" + +diff --git a/Documentation/ref/ovs-appctl.8.rst b/Documentation/ref/ovs-appctl.8.rst +index 3ce02e9848..fceafea059 100644 +--- a/Documentation/ref/ovs-appctl.8.rst ++++ b/Documentation/ref/ovs-appctl.8.rst +@@ -6,9 +6,9 @@ Synopsis + ======== + + ``ovs-appctl`` +-[``--target=`` | ``-t`` ] +-[``--timeout=`` | ``-T`` ] +- [...] ++[``--target=``\ *target* | ``-t`` *target*] ++[``--timeout=``\ *secs* | ``-T`` *secs*] ++*command* [*arg* ``...``] + + ``ovs-appctl --help`` + +@@ -31,11 +31,11 @@ command and prints the daemon's response on standard output. + + In normal use only a single option is accepted: + +-* ``-t`` or ``--target`` ++* ``-t`` *target* or ``--target=``\ *target* + + Tells ``ovs-appctl`` which daemon to contact. + +- If begins with ``/`` it must name a Unix domain socket on ++ If *target* begins with ``/`` it must name a Unix domain socket on + which an Open vSwitch daemon is listening for control channel + connections. By default, each daemon listens on a Unix domain socket + in the rundir (e.g. ``/run``) named ``..ctl``, where +@@ -45,26 +45,26 @@ In normal use only a single option is accepted: + + Otherwise, ``ovs-appctl`` looks in the rundir for a pidfile, that is, + a file whose contents are the process ID of a running process as a +- decimal number, named ``.pid``. (The ``--pidfile`` option ++ decimal number, named *target*\ ``.pid``. (The ``--pidfile`` option + makes an Open vSwitch daemon create a pidfile.) ``ovs-appctl`` reads + the pidfile, then looks in the rundir for a Unix socket named +- ``..ctl``, where is replaced by the process ID read ++ *target*\ ``..ctl``, where is replaced by the process ID read + from the pidfile, and uses that file as if it had been specified + directly as the target. + +- On Windows, can be an absolute path to a file that contains a ++ On Windows, *target* can be an absolute path to a file that contains a + localhost TCP port on which an Open vSwitch daemon is listening for + control channel connections. By default, each daemon writes the TCP + port on which it is listening for control connection into the file +- ``.ctl`` located inside the rundir. If is not an ++ ``.ctl`` located inside the rundir. If *target* is not an + absolute path, ``ovs-appctl`` looks in the rundir for a file named +- ``.ctl``. The default target is ``ovs-vswitchd``. ++ *target*\ ``.ctl``. The default *target* is ``ovs-vswitchd``. + +-* ``-T `` or ``--timeout=`` ++* ``-T`` *secs* or ``--timeout=``\ *secs* + +- By default, or with a of ``0``, ``ovs-appctl`` waits forever to ++ By default, or with a *secs* of ``0``, ``ovs-appctl`` waits forever to + connect to the daemon and receive a response. This option limits +- runtime to approximately seconds. If the timeout expires, ++ runtime to approximately *secs* seconds. If the timeout expires, + ``ovs-appctl`` exits with a ``SIGALRM`` signal. + + Common Commands +@@ -138,10 +138,10 @@ and adjusting log levels: + + Lists logging pattern used for each destination. + +-* ``vlog/set`` [] ++* ``vlog/set`` [*spec*] + +- Sets logging levels. Without any , sets the log level for +- every module and destination to ``dbg``. Otherwise, is a ++ Sets logging levels. Without any *spec*, sets the log level for ++ every module and destination to ``dbg``. Otherwise, *spec* is a + list of words separated by spaces or commas or colons, up to one from + each category below: + +@@ -153,7 +153,7 @@ and adjusting log levels: + change to only to the system log, to the console, or to a file, + respectively. + +- On Windows platform, ``syslog`` is only useful if was ++ On Windows platform, ``syslog`` is only useful if *target* was + started with the ``--syslog-target`` option (it has no effect + otherwise). + +@@ -162,20 +162,20 @@ and adjusting log levels: + will be logged, and messages of lower severity will be filtered out. + ``off`` filters out all messages. + +- Case is not significant within . ++ Case is not significant within *spec*. + + Regardless of the log levels set for ``file``, logging to a file + will not take place unless the target application was invoked with the + ``--log-file`` option. + + For compatibility with older versions of OVS, ``any`` is accepted +- within but it has no effect. ++ within *spec* but it has no effect. + +-* ``vlog/set PATTERN::`` ++* ``vlog/set PATTERN:``\ *destination*:*pattern* + +- Sets the log pattern for to . Each time a +- message is logged to , determines the +- message's formatting. Most characters in are copied ++ Sets the log pattern for *destination* to *pattern*. Each time a ++ message is logged to *destination*, *pattern* determines the ++ message's formatting. Most characters in *pattern* are copied + literally to the log, but special escapes beginning with ``%`` are + expanded as follows: + +@@ -194,13 +194,13 @@ and adjusting log levels: + + * ``%d`` + +- The current date and time in ISO 8601 format (YYYY-MM-DD HH:MM:SS). ++ The current date and time in ISO 8601 format (``YYYY-MM-DD HH:MM:SS``). + +- * ``%d{}`` ++ * ``%d{``\ *format*\ ``}`` + +- The current date and time in the specified , which takes +- the same format as the