Blob Blame History Raw
# Copyright (C) 2009, 2010, 2013, 2014 Nicira Networks, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without warranty of any kind.
#
# If tests have to be skipped while building, specify the '--without check'
# option. For example:
# rpmbuild -bb --without check rhel/openvswitch-fedora.spec

# This defines the base package name's version.

%define pkgname openvswitch3.3


%if 0%{?commit:1}
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%endif

# Enable PIE, bz#955181
%global _hardened_build 1

# RHEL-7 doesn't define _rundir macro yet
# Fedora 15 onwards uses /run as _rundir
%if 0%{!?_rundir:1}
%define _rundir /run
%endif

# FIXME Test "STP - flush the fdb and mdb when topology changed" fails on s390x
# FIXME 2 tests fails on ppc64le. They will be hopefully fixed before official 2.11
%ifarch %{ix86} x86_64 aarch64
%bcond_without check
%else
%bcond_with check
%endif
# option to run kernel datapath tests, requires building as root!
%bcond_with check_datapath_kernel
# option to build with libcap-ng, needed for running OVS as regular user
%bcond_without libcapng
# option to build with ipsec support
%bcond_without ipsec

# Build python2 (that provides python) and python3 subpackages on Fedora
# Build only python3 (that provides python) subpackage on RHEL8
# Build only python subpackage on RHEL7
%if 0%{?rhel} > 7 || 0%{?fedora}
# On RHEL8 Sphinx is included in buildroot
%global external_sphinx 1
%else
# Don't use external sphinx (RHV doesn't have optional repositories enabled)
%global external_sphinx 0
%endif

Name: %{pkgname}
Summary: Open vSwitch
Group: System Environment/Daemons daemon/database/utilities
URL: http://www.openvswitch.org/
Version: 3.3.0
Release: 42%{?dist}

# Nearly all of openvswitch is ASL 2.0.  The bugtool is LGPLv2+, and the
# lib/sflow*.[ch] files are SISSL
# datapath/ is GPLv2 (although not built into any of the binary packages)
License: ASL 2.0 and LGPLv2+ and SISSL

%define dpdkver 23.11
%define dpdkdir dpdk
%define dpdksver %(echo %{dpdkver} | cut -d. -f-2)
# NOTE: DPDK does not currently build for s390x
# DPDK on aarch64 is not stable enough to be enabled in FDP
%if 0%{?rhel} > 7 || 0%{?fedora}
%define dpdkarches x86_64 ppc64le
%else
%define dpdkarches
%endif

%if 0%{?commit:1}
Source: https://github.com/openvswitch/ovs/archive/%{commit}.tar.gz#/openvswitch-%{commit}.tar.gz
%else
Source: https://github.com/openvswitch/ovs/archive/v%{version}.tar.gz#/openvswitch-%{version}.tar.gz
%endif
Source2: openvswitch.sysusers
Source3: openvswitch-hugetlbfs.sysusers
Source10: https://fast.dpdk.org/rel/dpdk-%{dpdkver}.tar.xz

%define docutilsver 0.12
%define pygmentsver 1.4
%define sphinxver   1.2.3
%define pyelftoolsver 0.27
Source100: https://pypi.io/packages/source/d/docutils/docutils-%{docutilsver}.tar.gz
Source101: https://pypi.io/packages/source/P/Pygments/Pygments-%{pygmentsver}.tar.gz
Source102: https://pypi.io/packages/source/S/Sphinx/Sphinx-%{sphinxver}.tar.gz
Source103: https://pypi.io/packages/source/p/pyelftools/pyelftools-%{pyelftoolsver}.tar.gz

%define apply_patch %(test -s %{_sourcedir}/openvswitch-%{version}.patch && echo 1 || echo 0)

%if %{apply_patch}
Patch0:    openvswitch-%{version}.patch
%endif

# The DPDK is designed to optimize througput of network traffic using, among
# other techniques, carefully crafted assembly instructions.  As such it
# needs extensive work to port it to other architectures.
ExclusiveArch: x86_64 aarch64 ppc64le s390x

# Do not enable this otherwise YUM will break on any upgrade.
# Provides: openvswitch
Conflicts: openvswitch < 3.3
Conflicts: openvswitch-dpdk < 3.3
Conflicts: openvswitch2.10
Conflicts: openvswitch2.11
Conflicts: openvswitch2.12
Conflicts: openvswitch2.13
Conflicts: openvswitch2.14
Conflicts: openvswitch2.15
Conflicts: openvswitch2.16
Conflicts: openvswitch2.17
Conflicts: openvswitch3.0
Conflicts: openvswitch3.1
Conflicts: openvswitch3.2

# FIXME Sphinx is used to generate some manpages, unfortunately, on RHEL, it's
# in the -optional repository and so we can't require it directly since RHV
# doesn't have the -optional repository enabled and so TPS fails
%if %{external_sphinx}
BuildRequires: python3-sphinx
%else
# Sphinx dependencies
BuildRequires: python-devel
BuildRequires: python-setuptools
#BuildRequires: python2-docutils
BuildRequires: python-jinja2
BuildRequires: python-nose
#BuildRequires: python2-pygments
# docutils dependencies
BuildRequires: python-imaging
# pygments dependencies
BuildRequires: python-nose
%endif

BuildRequires: gcc gcc-c++ make
BuildRequires: autoconf automake libtool
BuildRequires: systemd-units systemd-rpm-macros openssl openssl-devel
BuildRequires: python3-devel python3-setuptools
BuildRequires: desktop-file-utils
BuildRequires: groff-base graphviz
BuildRequires: unbound-devel
BuildRequires: systemtap-sdt-devel
# make check dependencies
BuildRequires: procps-ng
%if %{with check_datapath_kernel}
BuildRequires: nmap-ncat
# would be useful but not available in RHEL or EPEL
#BuildRequires: pyftpdlib
%endif

%if %{with libcapng}
BuildRequires: libcap-ng libcap-ng-devel
%endif

%ifarch %{dpdkarches}
BuildRequires: meson
%if 0%{?rhel} > 8 || 0%{?fedora}
BuildRequires: python3-pyelftools
%endif
# DPDK driver dependencies
BuildRequires: zlib-devel numactl-devel libarchive-devel
# libarchive static dependencies
BuildRequires: bzip2-devel libacl-devel libxml2-devel libzstd-devel lz4-devel xz-devel
%ifarch x86_64
BuildRequires: rdma-core-devel >= 15 libmnl-devel
%endif

# Required by packaging policy for the bundled DPDK
Provides: bundled(dpdk) = %{dpdkver}
%endif

Requires: openssl iproute module-init-tools
#Upstream kernel commit 4f647e0a3c37b8d5086214128614a136064110c3
#Requires: kernel >= 3.15.0-0
Requires: openvswitch-selinux-extra-policy

%{?sysusers_requires_compat}
Requires(post): /bin/sed
Requires(post): systemd-units
Requires(preun): systemd-units
Requires(postun): systemd-units
Obsoletes: openvswitch-controller <= 0:2.1.0-1

%if 0%{?rhel}
# sortedcontainers are not packaged on RHEL yet, but ovs includes it
%global __requires_exclude ^python%{python3_version}dist\\(sortedcontainers\\)$
%endif

%description
Open vSwitch provides standard network bridging functions and
support for the OpenFlow protocol for remote per-flow control of
traffic.

%package -n python3-%{pkgname}
Summary: Open vSwitch python3 bindings
License: ASL 2.0
Requires: %{pkgname} = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: python-%{pkgname} = %{?epoch:%{epoch}:}%{version}-%{release}

%description -n python3-%{pkgname}
Python bindings for the Open vSwitch database

%package test
Summary: Open vSwitch testing utilities
License: ASL 2.0
BuildArch: noarch
Requires: python3-%{pkgname} = %{?epoch:%{epoch}:}%{version}-%{release}
Requires: tcpdump

%description test
Utilities that are useful to diagnose performance and connectivity
issues in Open vSwitch setup.

%package devel
Summary: Open vSwitch OpenFlow development package (library, headers)
License: ASL 2.0
Requires: %{pkgname} = %{?epoch:%{epoch}:}%{version}-%{release}

%description devel
This provides shared library, libopenswitch.so and the openvswitch header
files needed to build an external application.

%if 0%{?rhel} == 8 || 0%{?fedora} > 28
%package -n network-scripts-%{name}
Summary: Open vSwitch legacy network service support
License: ASL 2.0
Requires: network-scripts
Supplements: (%{name} and network-scripts)

%description -n network-scripts-%{name}
This provides the ifup and ifdown scripts for use with the legacy network
service.
%endif

%if %{with ipsec}
%package ipsec
Summary: Open vSwitch IPsec tunneling support
License: ASL 2.0
Requires: python3-%{pkgname} = %{?epoch:%{epoch}:}%{version}-%{release}
Requires: libreswan

%description ipsec
This package provides IPsec tunneling support for OVS tunnels.
%endif

%prep
%if 0%{?commit:1}
%setup -q -n ovs-%{commit} -a 10
%else
%setup -q -n ovs-%{version} -a 10
%endif
%if ! %{external_sphinx}
%if 0%{?commit:1}
%setup -n ovs-%{commit} -q -D -T -a 100 -a 101 -a 102
%else
%setup -n ovs-%{version} -q -D -T -a 100 -a 101 -a 102
%endif
%endif
%if 0%{?rhel} && 0%{?rhel} < 9
%if 0%{?commit:1}
%setup -n ovs-%{commit} -q -D -T -a 103
%else
%setup -n ovs-%{version} -q -D -T -a 103
%endif
%endif

mv dpdk-*/ %{dpdkdir}/

%if %{apply_patch}
%patch0 -p1
%endif

%build
%if 0%{?rhel} && 0%{?rhel} < 9
export PYTHONPATH="${PWD}/pyelftools-%{pyelftoolsver}"
%endif
# Build Sphinx on RHEL
%if ! %{external_sphinx}
export PYTHONPATH="${PYTHONPATH:+$PYTHONPATH:}%{_builddir}/pytmp/lib/python"
for x in docutils-%{docutilsver} Pygments-%{pygmentsver} Sphinx-%{sphinxver}; do
    pushd "$x"
    python2 setup.py install --home %{_builddir}/pytmp
    popd
done

export PATH="$PATH:%{_builddir}/pytmp/bin"
%endif

./boot.sh

%ifarch %{dpdkarches}    # build dpdk
# Lets build DPDK first
cd %{dpdkdir}

ENABLED_DRIVERS=(
    bus/pci
    bus/vdev
    mempool/ring
    net/failsafe
    net/i40e
    net/ring
    net/vhost
    net/virtio
    net/tap
)

%ifarch x86_64
ENABLED_DRIVERS+=(
    baseband/acc
    bus/auxiliary
    bus/vmbus
    common/iavf
    common/mlx5
    common/nfp
    net/bnxt
    net/enic
    net/iavf
    net/ice
    net/mlx5
    net/netvsc
    net/nfp
    net/qede
    net/vdev_netvsc
)
%endif

%ifarch aarch64 x86_64
ENABLED_DRIVERS+=(
    net/e1000
    net/ixgbe
)
%endif

for driver in "${ENABLED_DRIVERS[@]}"; do
    enable_drivers="${enable_drivers:+$enable_drivers,}"$driver
done

# If doing any updates, this must be aligned with:
# https://access.redhat.com/articles/3538141
ENABLED_LIBS=(
    bbdev
    bitratestats
    bpf
    cmdline
    cryptodev
    dmadev
    gro
    gso
    hash
    ip_frag
    latencystats
    member
    meter
    metrics
    pcapng
    pdump
    security
    stack
    vhost
)

for lib in "${ENABLED_LIBS[@]}"; do
    enable_libs="${enable_libs:+$enable_libs,}"$lib
done

%set_build_flags
%__meson --prefix=%{_builddir}/dpdk-build \
         --buildtype=plain \
         -Denable_libs="$enable_libs" \
         -Ddisable_apps="*" \
         -Denable_drivers="$enable_drivers" \
         -Dplatform=generic \
         -Dmax_ethports=1024 \
         -Dmax_numa_nodes=8 \
         -Dtests=false \
         %{_vpath_builddir}
%meson_build
%__meson install -C %{_vpath_builddir} --no-rebuild

# FIXME currently with LTO enabled OVS tries to link with both static and shared libraries
rm -v %{_builddir}/dpdk-build/%{_lib}/*.so*

# Generate a list of supported drivers, its hard to tell otherwise.
cat << EOF > README.DPDK-PMDS
DPDK drivers included in this package:

EOF

for f in %{_builddir}/dpdk-build/%{_lib}/librte_net_*.a; do
    basename ${f} | cut -c12- | cut -d. -f1 | tr [:lower:] [:upper:]
done >> README.DPDK-PMDS

cat << EOF >> README.DPDK-PMDS

For further information about the drivers, see
http://dpdk.org/doc/guides-%{dpdksver}/nics/index.html
EOF

cd -
%endif    # build dpdk

# And now for OVS...
mkdir build-shared build-static
pushd build-shared
ln -s ../configure
%configure \
%if %{with libcapng}
        --enable-libcapng \
%else
        --disable-libcapng \
%endif
        --disable-static \
        --enable-shared \
        --enable-ssl \
        --with-pkidir=%{_sharedstatedir}/openvswitch/pki \
        --enable-usdt-probes \
        --disable-afxdp \
        --with-version-suffix=-%{release}
make %{?_smp_mflags}
popd
pushd build-static
ln -s ../configure
%ifarch %{dpdkarches}
PKG_CONFIG_PATH=%{_builddir}/dpdk-build/%{_lib}/pkgconfig \
%endif
%configure \
%if %{with libcapng}
        --enable-libcapng \
%else
        --disable-libcapng \
%endif
        --enable-ssl \
%ifarch %{dpdkarches}
        --with-dpdk=static \
%endif
        --with-pkidir=%{_sharedstatedir}/openvswitch/pki \
        --enable-usdt-probes \
        --disable-afxdp \
        --with-version-suffix=-%{release}
make %{?_smp_mflags}
popd

/usr/bin/python3 build-aux/dpdkstrip.py \
        --dpdk \
        < rhel/usr_lib_systemd_system_ovs-vswitchd.service.in \
        > rhel/usr_lib_systemd_system_ovs-vswitchd.service

%install
rm -rf $RPM_BUILD_ROOT
make -C build-shared install sbin_PROGRAMS=ovsdb/ovsdb-server DESTDIR=$RPM_BUILD_ROOT
make -C build-static install bin_PROGRAMS= sbin_PROGRAMS=vswitchd/ovs-vswitchd DESTDIR=$RPM_BUILD_ROOT

install -d -m 0755 $RPM_BUILD_ROOT%{_rundir}/openvswitch
install -d -m 0750 $RPM_BUILD_ROOT%{_localstatedir}/log/openvswitch
install -d -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch

install -p -D -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysusersdir}/openvswitch.conf
%ifarch %{dpdkarches}
install -p -D -m 0644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysusersdir}/openvswitch-hugetlbfs.conf
%endif

install -p -D -m 0644 rhel/usr_lib_udev_rules.d_91-vfio.rules \
        $RPM_BUILD_ROOT%{_udevrulesdir}/91-vfio.rules

install -p -D -m 0644 \
        rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
        $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/openvswitch

for service in openvswitch ovsdb-server ovs-vswitchd \
               ovs-delete-transient-ports; do
        install -p -D -m 0644 \
                        rhel/usr_lib_systemd_system_${service}.service \
                        $RPM_BUILD_ROOT%{_unitdir}/${service}.service
done

%if %{with ipsec}
install -p -D -m 0644 rhel/usr_lib_systemd_system_openvswitch-ipsec.service \
                      $RPM_BUILD_ROOT%{_unitdir}/openvswitch-ipsec.service
%endif

install -m 0755 rhel/etc_init.d_openvswitch \
        $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/openvswitch.init

install -p -D -m 0644 rhel/etc_openvswitch_default.conf \
        $RPM_BUILD_ROOT/%{_sysconfdir}/openvswitch/default.conf

install -p -D -m 0644 rhel/etc_logrotate.d_openvswitch \
        $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/openvswitch

install -m 0644 vswitchd/vswitch.ovsschema \
        $RPM_BUILD_ROOT/%{_datadir}/openvswitch/vswitch.ovsschema

%if 0%{?rhel} < 9
install -d -m 0755 $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/
install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifdown-ovs \
        $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifup-ovs \
        $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
%endif

install -d -m 0755 $RPM_BUILD_ROOT%{python3_sitelib}
cp -a $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/ovstest \
        $RPM_BUILD_ROOT%{python3_sitelib}

# Build the JSON C extension for the Python lib (#1417738)
pushd python
(
export CPPFLAGS="-I ../include -I ../build-shared/include"
export LDFLAGS="%{__global_ldflags} -L $RPM_BUILD_ROOT%{_libdir}"
%py3_build
%py3_install
[ -f "$RPM_BUILD_ROOT/%{python3_sitearch}/ovs/_json$(python3-config --extension-suffix)" ]
)
popd

rm -rf $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/

install -d -m 0755 $RPM_BUILD_ROOT/%{_sharedstatedir}/openvswitch

install -d -m 0755 $RPM_BUILD_ROOT%{_prefix}/lib/firewalld/services/

install -p -D -m 0755 \
        rhel/usr_share_openvswitch_scripts_ovs-systemd-reload \
        $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/ovs-systemd-reload

touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/conf.db
# The db needs special permission as IPsec Pre-shared keys are stored in it.
chmod 0640 $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/conf.db

touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/system-id.conf

# remove unpackaged files
rm -f $RPM_BUILD_ROOT/%{_bindir}/ovs-benchmark \
        $RPM_BUILD_ROOT/%{_bindir}/ovs-docker \
        $RPM_BUILD_ROOT/%{_bindir}/ovs-parse-backtrace \
        $RPM_BUILD_ROOT/%{_bindir}/ovs-testcontroller \
        $RPM_BUILD_ROOT/%{_sbindir}/ovs-vlan-bug-workaround \
        $RPM_BUILD_ROOT/%{_mandir}/man1/ovs-benchmark.1* \
        $RPM_BUILD_ROOT/%{_mandir}/man8/ovs-testcontroller.* \
        $RPM_BUILD_ROOT/%{_mandir}/man8/ovs-vlan-bug-workaround.8*

%if ! %{with ipsec}
rm -f $RPM_BUILD_ROOT/%{_datadir}/openvswitch/scripts/ovs-monitor-ipsec
%endif

# remove ovn unpackages files
rm -f $RPM_BUILD_ROOT%{_bindir}/ovn*
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/ovn*
rm -f $RPM_BUILD_ROOT%{_mandir}/man5/ovn*
rm -f $RPM_BUILD_ROOT%{_mandir}/man7/ovn*
rm -f $RPM_BUILD_ROOT%{_mandir}/man8/ovn*
rm -f $RPM_BUILD_ROOT%{_datadir}/openvswitch/ovn*
rm -f $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/ovn*
rm -f $RPM_BUILD_ROOT%{_includedir}/ovn/*

%check
%if %{with check}
    pushd build-static
    touch resolv.conf
    export OVS_RESOLV_CONF=$(pwd)/resolv.conf
    if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
       make check TESTSUITEFLAGS='--recheck'; then :;
    else
        cat tests/testsuite.log
        exit 1
    fi
    popd
%endif
%if %{with check_datapath_kernel}
    pushd build-static
    if make check-kernel RECHECK=yes; then :;
    else
        cat tests/system-kmod-testsuite.log
        exit 1
    fi
    popd
%endif

%clean
rm -rf $RPM_BUILD_ROOT

%preun
%if 0%{?systemd_preun:1}
    %systemd_preun openvswitch.service
%else
    if [ $1 -eq 0 ] ; then
    # Package removal, not upgrade
        /bin/systemctl --no-reload disable openvswitch.service >/dev/null 2>&1 || :
        /bin/systemctl stop openvswitch.service >/dev/null 2>&1 || :
    fi
%endif

%pre
%sysusers_create_compat %{SOURCE2}
%ifarch %{dpdkarches}
%sysusers_create_compat %{SOURCE3}
%endif

%post
if [ $1 -eq 1 ]; then
    sed -i 's:^#OVS_USER_ID=:OVS_USER_ID=:' /etc/sysconfig/openvswitch

%ifarch %{dpdkarches}
    sed -i \
        's@OVS_USER_ID="openvswitch:openvswitch"@OVS_USER_ID="openvswitch:hugetlbfs"@'\
        /etc/sysconfig/openvswitch
%endif
fi
chown -R openvswitch:openvswitch /etc/openvswitch

%if 0%{?systemd_post:1}
    %systemd_post openvswitch.service
%else
    # Package install, not upgrade
    if [ $1 -eq 1 ]; then
        /bin/systemctl daemon-reload >dev/null || :
    fi
%endif

%postun
%if 0%{?systemd_postun:1}
    %systemd_postun openvswitch.service
%else
    /bin/systemctl daemon-reload >/dev/null 2>&1 || :
%endif

%triggerun -- openvswitch < 2.5.0-22.git20160727%{?dist}
# old rpm versions restart the service in postun, but
# due to systemd some preparation is needed.
if systemctl is-active openvswitch >/dev/null 2>&1 ; then
    /usr/share/openvswitch/scripts/ovs-ctl stop >/dev/null 2>&1 || :
    systemctl daemon-reload >/dev/null 2>&1 || :
    systemctl stop openvswitch ovsdb-server ovs-vswitchd >/dev/null 2>&1 || :
    systemctl start openvswitch >/dev/null 2>&1 || :
fi
exit 0

%files -n python3-%{pkgname}
%{python3_sitearch}/ovs
%{python3_sitearch}/ovs-*.egg-info
%doc LICENSE

%files test
%{_bindir}/ovs-pcap
%{_bindir}/ovs-tcpdump
%{_bindir}/ovs-tcpundump
%{_datadir}/openvswitch/scripts/usdt/*
%{_mandir}/man1/ovs-pcap.1*
%{_mandir}/man8/ovs-tcpdump.8*
%{_mandir}/man1/ovs-tcpundump.1*
%{_bindir}/ovs-test
%{_bindir}/ovs-vlan-test
%{_bindir}/ovs-l3ping
%{_mandir}/man8/ovs-test.8*
%{_mandir}/man8/ovs-vlan-test.8*
%{_mandir}/man8/ovs-l3ping.8*
%{python3_sitelib}/ovstest

%files devel
%{_libdir}/*.so
%{_libdir}/pkgconfig/*.pc
%{_includedir}/openvswitch/*
%{_includedir}/openflow/*
%exclude %{_libdir}/*.a
%exclude %{_libdir}/*.la

%if 0%{?rhel} == 8 || 0%{?fedora} > 28
%files -n network-scripts-%{name}
%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
%endif

%files
%defattr(-,openvswitch,openvswitch)
%dir %{_sysconfdir}/openvswitch
%{_sysconfdir}/openvswitch/default.conf
%config %ghost %verify(not owner group md5 size mtime) %{_sysconfdir}/openvswitch/conf.db
%ghost %attr(0600,-,-) %verify(not owner group md5 size mtime) %{_sysconfdir}/openvswitch/.conf.db.~lock~
%config %ghost %{_sysconfdir}/openvswitch/system-id.conf
%defattr(-,root,root)
%config(noreplace) %verify(not md5 size mtime) %{_sysconfdir}/sysconfig/openvswitch
%{_sysconfdir}/bash_completion.d/ovs-appctl-bashcomp.bash
%{_sysconfdir}/bash_completion.d/ovs-vsctl-bashcomp.bash
%config(noreplace) %{_sysconfdir}/logrotate.d/openvswitch
%{_unitdir}/openvswitch.service
%{_unitdir}/ovsdb-server.service
%{_unitdir}/ovs-vswitchd.service
%{_unitdir}/ovs-delete-transient-ports.service
%{_datadir}/openvswitch/scripts/openvswitch.init
%{_datadir}/openvswitch/scripts/ovs-check-dead-ifs
%{_datadir}/openvswitch/scripts/ovs-lib
%{_datadir}/openvswitch/scripts/ovs-save
%{_datadir}/openvswitch/scripts/ovs-vtep
%{_datadir}/openvswitch/scripts/ovs-ctl
%{_datadir}/openvswitch/scripts/ovs-kmod-ctl
%{_datadir}/openvswitch/scripts/ovs-systemd-reload
%config %{_datadir}/openvswitch/local-config.ovsschema
%config %{_datadir}/openvswitch/vswitch.ovsschema
%config %{_datadir}/openvswitch/vtep.ovsschema
%{_bindir}/ovs-appctl
%{_bindir}/ovs-dpctl
%{_bindir}/ovs-ofctl
%{_bindir}/ovs-vsctl
%{_bindir}/ovsdb-client
%{_bindir}/ovsdb-tool
%{_bindir}/ovs-pki
%{_bindir}/vtep-ctl
%{_libdir}/*.so.*
%{_sbindir}/ovs-vswitchd
%{_sbindir}/ovsdb-server
%{_mandir}/man1/ovsdb-client.1*
%{_mandir}/man1/ovsdb-server.1*
%{_mandir}/man1/ovsdb-tool.1*
%{_mandir}/man5/ovsdb.5*
%{_mandir}/man5/ovsdb.local-config.5*
%{_mandir}/man5/ovsdb-server.5.*
%{_mandir}/man5/ovs-vswitchd.conf.db.5*
%{_mandir}/man5/vtep.5*
%{_mandir}/man7/ovsdb-server.7*
%{_mandir}/man7/ovsdb.7*
%{_mandir}/man7/ovs-actions.7*
%{_mandir}/man7/ovs-fields.7*
%{_mandir}/man8/vtep-ctl.8*
%{_mandir}/man8/ovs-appctl.8*
%{_mandir}/man8/ovs-ctl.8*
%{_mandir}/man8/ovs-dpctl.8*
%{_mandir}/man8/ovs-kmod-ctl.8.*
%{_mandir}/man8/ovs-ofctl.8*
%{_mandir}/man8/ovs-pki.8*
%{_mandir}/man8/ovs-vsctl.8*
%{_mandir}/man8/ovs-vswitchd.8*
%{_mandir}/man8/ovs-parse-backtrace.8*
%{_udevrulesdir}/91-vfio.rules
%doc LICENSE NOTICE README.rst NEWS rhel/README.RHEL.rst
%ifarch %{dpdkarches}
%doc %{dpdkdir}/README.DPDK-PMDS
%attr(750,openvswitch,hugetlbfs) %verify(not owner group) /var/log/openvswitch
%else
%attr(750,openvswitch,openvswitch) %verify(not owner group) /var/log/openvswitch
%endif
/var/lib/openvswitch
%ghost %attr(755,root,root) %verify(not owner group) %{_rundir}/openvswitch
%{_datadir}/openvswitch/bugtool-plugins/
%{_datadir}/openvswitch/scripts/ovs-bugtool-*
%{_bindir}/ovs-dpctl-top
%{_sbindir}/ovs-bugtool
%{_mandir}/man8/ovs-dpctl-top.8*
%{_mandir}/man8/ovs-bugtool.8*
%if (0%{?rhel} && 0%{?rhel} <= 7) || (0%{?fedora} && 0%{?fedora} < 29)
%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
%endif
%{_sysusersdir}/openvswitch.conf
%ifarch %{dpdkarches}
%{_sysusersdir}/openvswitch-hugetlbfs.conf
%endif

%if %{with ipsec}
%files ipsec
%{_datadir}/openvswitch/scripts/ovs-monitor-ipsec
%{_unitdir}/openvswitch-ipsec.service
%endif

%changelog
* Mon Aug 12 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-42
- Merging upstream branch-3.3 [RH git: 7188a23809]
    Commit list:
    73c563efc7 tunnel, tests: Add test for mirroring over tunnels.
    81e64f47d7 ofproto-dpif-xlate: Add a recursion limit to tunnel address lookup.


* Thu Aug 08 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-41
- Merging upstream branch-3.3 [RH git: 65b2f8cd44]
    Commit list:
    7428125173 netdev-dpdk: Fix race condition in mempool information dump.
    e0c0302d71 ovsdb: transaction: Remove incorrect transaction abort in pre-commit.


* Mon Jul 22 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-40
- Merging upstream branch-3.3 [RH git: 62b757012a]
    Commit list:
    59d80787ad netlink-notifier: Silence the UBsan's function pointer mismatch error.
    bd133fcf6b Documentation: Update QEMU documentation URLs.
    6738b680ec match: Fix false-positive snprintf size warning.
    5bf4c0f09e util: Add non-NULL format assertion to xvasprintf.
    9cbd8804dd docs: Define Read the Docs configuration for Sphinx HTML parameters.
    6eca4d13c8 flow: Fix unaligned access to the ND target in miniflow_extract.
    d2119feb01 dpif-netlink-rtnl: Fix netdev leak in out-of-tree tunnels probe.
    9c439c23e6 dpctl: Fix netdev reference leak in "show" command.


* Wed Jul 17 2024 Timothy Redaelli <tredaelli@redhat.com> - 3.3.0-39
- Use --with-version-suffix [RH git: 03cc07cae1]


* Wed Jul 17 2024 Timothy Redaelli <tredaelli@redhat.com> - 3.3.0-38
- rhel: Make the version, displayed to the user, customizable. [RH git: 470b5520a5]
    Since on CentOS/RHEL the builds are based on stable branches and not on
    tags for debugging purpose it's better to have the downstream version as
    version so it's easier to know which commits are included in a build.
    
    This commit adds --with-version-suffix as ./configure option in
    order to set an OVS version suffix that should be shown to the user via
    ovs-vsctl -V and, so, also on database, on ovs-vsctl show and the other
    utilities.
    
    --with-version-suffix is used in Fedora/CentOS/RHEL spec file in order to have
    the version be aligned with the downstream one.
    
    Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
    Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
    (cherry picked from commit 9e6d43ef32152527f7887d7f316a191adb5f338c)


* Wed Jul 03 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-37
- Merging upstream branch-3.3 [RH git: 59364717e8]
    Commit list:
    15cbfb19fa cirrus: Update to FreeBSD 14.1.


* Wed Jul 03 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-36
- Merging upstream branch-3.3 [RH git: eb0ad890f2]
    Commit list:
    a3722ab1f7 ovs-monitor-ipsec: LibreSwan v5 support.
    bd18a13732 ovs-monitor-ipsec: LibreSwan autodetect version.


* Tue Jul 02 2024 Michael Santana <msantana@redhat.com> - 3.3.0-35
- netdev-offload-tc: Reserve lower tc prio for vlan ethertype. [RH git: c2202ea6e8]
    The cited commit reserved lower tc priorities for IP ethertypes in order
    to give IP traffic higher priority than other management traffic.
    In case of of vlan encap traffic, IP traffic will still get lower
    priority.
    
    Fix it by also reserving low priority tc prio for vlan.
    
    Fixes: c230c7579c14 ("netdev-offload-tc: Reserve lower tc prios for ip ethertypes")
    Signed-off-by: Maor Dickman <maord@nvidia.com>
    Acked-by: Roi Dayan <roid@nvidia.com>
    Signed-off-by: Simon Horman <horms@ovn.org>


* Tue Jul 02 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-34
- Merging upstream branch-3.3 [RH git: c09d2d60bb]
    Commit list:
    504efbe923 netdev-dpdk: Check pending reset when adding device.


* Tue Jun 25 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-33
- Merging upstream branch-3.3 [RH git: 3ecc0a5b13]
    Commit list:
    2393305d96 odp-execute: Check IPv4 checksum offload flag in AVX.
    0aec0c2cc0 odp-execute: Set IPv6 traffic class in AVX implementation.


* Fri Jun 21 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-32
- Merging upstream branch-3.3 [RH git: ecd756e0cf]
    Commit list:
    dd1aea7f8b ofp-prop: Fix unaligned 128 bit access.


* Wed Jun 19 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-31
- Merging upstream branch-3.3 [RH git: 92e783ebee]
    Commit list:
    830fd48237 dpdk: Check other_config:dpdk-extra for '--lcores'.


* Fri Jun 07 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-30
- Merging upstream branch-3.3 [RH git: b79bfd3e3b]
    Commit list:
    8499e90274 Prepare for 3.3.2.
    2b87b844db Set release date for 3.3.1.


* Fri Jun 07 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-29
- Merging upstream branch-3.3 [RH git: 9d435dd64a]
    Commit list:
    81d2804fc3 python: ovs: flow: Fix nested check_pkt_len acts.
    8c15b5c0f3 python: idl: Fix index not being updated on row modification.
    80c935dba3 python: ovsdb-idl: Convert new_uuid insert() arg to UUID.
    6b6d7f05db python: ovsdb-idl: Make IndexedRows mirror hmap.


* Fri Jun 07 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-28
- Merging upstream branch-3.3 [RH git: e5ee6d743e]
    Commit list:
    479dd96e18 ci: Restore vhost-user unit tests in check-dpdk.
    cc99622485 system-dpdk: Fix socket conflict when starting testpmd.


* Thu Jun 06 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-27
- Merging upstream branch-3.3 [RH git: 63995fdae6]
    Commit list:
    5bb95ad089 netdev-dpdk: Refactor tunnel checksum offloading.
    a9248871af netdev-dpdk: Use guest TSO segmentation size hint.
    55d2e6d3dc netdev-dpdk: Refactor TSO request code.
    2fe3ab83ab netdev-dpdk: Fix inner checksum when outer is not supported.
    537a6bcda7 netdev-dpdk: Disable outer UDP checksum for net/iavf.
    2e03f5567c netdev-dpdk: Fallback to non tunnel checksum offloading.


* Wed Jun 05 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-26
- Merging upstream branch-3.3 [RH git: 00e3d428c5]
    Commit list:
    7916a24171 nsh: Add support to compose-packet and use it in system tests.
    310cf419e7 tests: Convert ND, MPLS and CT sendpkt tests to compose-packet.
    96efed3499 tests: sendpkt: Allow different input formats.
    2e89ed9946 ipf: Handle common case of ipf defragmentation.
    69424e53b6 ipf: Only add fragments to batch of same dl_type.


* Mon Jun 03 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-25
- Merging upstream branch-3.3 [RH git: 05cf3a52ce]
    Commit list:
    5cfbc915de python: ovsdb-idl: Use monitor_cond for _Server DB.
    84c83589b6 ovsdb-idl: Add C IDL test for "monitor" fallback.


* Mon Jun 03 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-24
- Merging upstream branch-3.3 [RH git: 0a6f4082a3]
    Commit list:
    79608c4fdd tests: Fix non-portable plus match in python vlog test.


* Fri May 31 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-23
- Merging upstream branch-3.3 [RH git: bc25876bb0]
    Commit list:
    6688bff495 odp-execute: Fix AVX checksum calculation.


* Thu May 30 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-22
- Merging upstream branch-3.3 [RH git: 4a1c8a2b9c]
    Commit list:
    0ec55bbe95 dpdk: Use DPDK 23.11.1 release for OVS 3.3.


* Tue May 28 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-21
- Merging upstream branch-3.3 [RH git: 4793020729]
    Commit list:
    a3022b08ac netdev-linux: Initialize link speed in error conditions.
    216c2c1ff9 netdev-linux: Return an error if device feature names are empty.
    1b78323a21 socket: Fix uninitialized values in inet_parse_ functions.
    4ece94d2ab dpctl: Fix uninitialized value when deleting flows.
    7ee12c5ae1 netdev-native-tnl: Fix use of uninitialized offset on SRv6 header pop.
    258bc1e0c6 netdev-linux: Fix ethtool_cmd is partly outside array bounds.


* Thu May 23 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-20
- Merging upstream branch-3.3 [RH git: e37661f387]
    Commit list:
    ffbce0c428 atlocal: Replace deprecated pkg_resources.
    1f0423a4ee atlocal: Fix setting HAVE_PYTEST on unexpected errors.
    95baf295af srv6: Fix misaligned writes to segment list.


* Fri May 17 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-19
- Merging upstream branch-3.3 [RH git: f3bdc58258]
    Commit list:
    8d4ba3b5a8 compiler: Fix errors in Clang 17 ubsan checks.
    d153eff606 table: Fix freeing global variable.
    f02dc3cfec vlog: Destroy async_append first then close log_fd.


* Tue May 14 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-18
- Merging upstream branch-3.3 [RH git: 2c450fb957]
    Commit list:
    bf1b16364b conntrack: Fully initialize conn struct before insertion.
    cf461fe282 conntrack: Do not use {0} to initialize unions.


* Tue May 07 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-17
- Merging upstream branch-3.3 [RH git: a2b1d49351]
    Commit list:
    20ed5491c5 ovsdb-client: Add missing arg to help for 'dump'.


* Fri May 03 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-16
- Merging upstream branch-3.3 [RH git: 8c52aecb56]
    Commit list:
    4756bf4baf ofproto-dpif-trace: Fix access to an out-of-scope stack memory.
    01eca18be1 hash, jhash: Fix unaligned access to the hash remainder.
    4f61523c0d sparse: Add additional define for sparse on GCC >= 14.


* Tue Apr 30 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-15
- Merging upstream branch-3.3 [RH git: 1cb679f528]
    Commit list:
    9a5c24d70f sparse: Add immintrin.h header.
    3528cc6f45 tc: Fix -Wgnu-variable-sized-type-not-at-end warning with Clang 18.
    5814de5687 tests: Fix build failure with Clang 18 due to -Wformat-truncation.


* Mon Apr 29 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-14
- Merging upstream branch-3.3 [RH git: fd340e5b9e]
    Commit list:
    a6c3b5202c netdev-dpdk: Fix possible memory leak configuring VF MAC address.


* Tue Apr 23 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-13
- Merging upstream branch-3.3 [RH git: 2914158441]
    Commit list:
    42e685916e ovsdb: raft: Fix probe intervals after install snapshot request.
    1c44cb5963 ovsdb: raft: Fix inability to join a cluster with a large database.
    5966c22b85 rhel/systemd: Set ovsdb-server timeout to 5 minutes.


* Thu Apr 11 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-12
- Merging upstream branch-3.3 [RH git: 9b5e829705]
    Commit list:
    f19448b861 github: Update python to 3.12.
    b705fb8dd2 ovsdb-dot: Fix flake8 issues.
    1ac823cb03 ovsdb-doc: Fix syntax warning with Python 3.12 and flake8 issues.


* Wed Apr 10 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-11
- Merging upstream branch-3.3 [RH git: 7956e878a6]
    Commit list:
    7e99dbd8a0 python: Remove hacking dependency and use recent flake8.
    41055da769 cirrus: Update to FreeBSD 13.3.
    6448c1b697 vlog: Log stack trace on vlog_abort.


* Tue Apr 09 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-10
- Merging upstream branch-3.3 [RH git: 41fe6a6437]
    Commit list:
    a6852319b4 tests: Fix compatibility issue with Python 3.13 in vlog.at.


* Fri Apr 05 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-9
- Merging upstream branch-3.3 [RH git: 3b2958ef7b]
    Commit list:
    775507fe91 ofproto-dpif-upcall: Fix ukey installation failure logs and counters.


* Wed Apr 03 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-8
- Merging upstream branch-3.3 [RH git: 69817f7024]
    Commit list:
    b26baf873e conntrack: Do not use icmp reverse helper for icmpv6.
    b9f28c5862 conntrack: Fix SNAT with exhaustion system test.


* Wed Mar 27 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-7
- Merging upstream branch-3.3 [RH git: 1a2a88672e]
    Commit list:
    43db937876 ovsdb: raft: Fix inability to join after leadership change round trip.
    2a2f162b57 ovsdb: raft: Fix assertion when 1-node cluster looses leadership.
    a174a5ab8b ovsdb: raft: Fix permanent joining state on a cluster member.
    5eac230f22 ovsdb: raft: Fix time intervals for multitasking while joining.
    99fe661f04 ovsdb: raft: Avoid transferring leadership to unavailable servers.


* Wed Mar 27 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-6
- Merging upstream branch-3.3 [RH git: 918ba37710]
    Commit list:
    c560f6ca32 ofproto-dpif-xlate: Fix continuations with associated metering.


* Fri Mar 22 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-5
- Merging upstream branch-3.3 [RH git: 53f3f1b833]
    Commit list:
    1c1f173ce8 dpif-netdev: Fix crash due to tunnel offloading on recirculation.
    feb0fefd8d netdev-dpdk: Disable outer UDP checksum offload for ice/i40e driver.
    3280d95c42 ovs-monitor-ipsec: LibreSwan autodetect paths. (#1975039)
    4fedcae6ee route-table: Avoid routes from non-standard routing tables.
    9f39cd4a11 ovs-tcpdump: Fix cleanup mirror failed with twice fatal signals.


* Tue Mar 19 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-4
- Merging upstream branch-3.3 [RH git: e9ada703c5]
    Commit list:
    7fa40643e7 ofproto-dpif: Fix tunnel with different name del/add failure.
    04dc9d117a ofpbuf: Prevent undefined behavior in ofpbuf_clone.


* Sat Mar 16 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-3
- Merging upstream branch-3.3 [RH git: 742462843f]
    Commit list:
    667c9eb2b0 netdev-dpdk: Fix tunnel type check during Tx offload preparation.
    332300c360 netdev-dpdk: Fix TCP check during Tx offload preparation.
    e7778b3716 netdev-dpdk: Clear inner packet marks if no inner offloads requested.


* Wed Mar 13 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-2
- Merging upstream branch-3.3 [RH git: ed97fb253e]
    Commit list:
    c85158e265 netdev-dpdk: Clean up all marker flags if no offloads requested.
    a6bb8be429 github: Reduce ASLR entropy to be compatible with asan in llvm 14.
    70dcee98f4 netdev-dpdk: Dump packets that fail Tx preparation.
    5ae591757a bfd: Improve state change log message. (#2258496)
    efbc37b946 tests: Fix "SSL db: Implementation" test with openssl > 3.2.0.
    0f1af687cc conntrack: Fix flush not flushing all elements.
    04f1984a44 m4: Fix linking with OpenSSL 1.1.0+ and 3+ on Windows.
    8f903b598f ovs-pki: Fix file permissions on Windows.
    3002010658 bond: Reset stats when deleting post recirc rule.
    02f0d6db14 ofproto-dpif-trace: Fix infinite recirculation tracing.
    e68ddb34bc github: Temporarily disable SNAT with exhaustion system test.
    95d4d7108a dp-packet: Don't offload inner csum if outer isn't supported.
    05453d807d ofproto-dpif-xlate: Fix ignoring IPv6 local_ip for native tunnels.
    a0df9c85de netdev-dummy: Add local route entries for IP addresses.
    2f742d7afc tests: Move the non-local port as tunnel endpoint test.
    a6bdf7d310 Prepare for 3.3.1.


* Wed Mar 13 2024 Timothy Redaelli <tredaelli@redhat.com> - 3.3.0-1
- redhat: Imported Red Hat OVS 3.3 build files. [RH git: dfdea27000]