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..26f1861e70 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 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' @@ -217,7 +220,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 != '' @@ -238,6 +241,14 @@ jobs: if: matrix.m32 != '' run: sudo apt install -y gcc-multilib + - name: Reduce ASLR entropy + if: matrix.sanitizers != '' + # Asan in llvm 14 provided in ubuntu-22.04 is incompatible with + # high-entropy ASLR configured in much newer kernels that GitHub + # runners are using leading to random crashes: + # https://github.com/actions/runner-images/issues/9491 + run: sudo sysctl -w vm.mmap_rnd_bits=28 + - name: prepare run: ./.ci/linux-prepare.sh @@ -346,7 +357,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 +410,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