File quagga.spec of Package quagga.36746
#
# spec file for package quagga
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
#Compat macro for new _fillupdir macro introduced in Nov 2017
%if ! %{defined _fillupdir}
%define _fillupdir /var/adm/fillup-templates
%endif
%if 0%{?suse_version} > 1230
%bcond_without systemd
%else
%bcond_with systemd
%endif
%bcond_with tcp_zebra
%bcond_without irdp
%bcond_with isis
%bcond_with isis_topology
%bcond_without pcre
%if %{defined _rundir}
%define quagga_statedir %{_rundir}/%{name}
%else
%define quagga_statedir %{_localstatedir}/run/%{name}
%endif
Name: quagga
Version: 1.1.1
Release: 0
Summary: Routing Software for BGP, OSPF and RIP
License: LGPL-2.1+
Group: Productivity/Networking/Routing
Url: http://www.quagga.net
Source: http://download.savannah.gnu.org/releases/quagga/%{name}-%{version}.tar.gz
Source1: %{name}-SUSE.tar.bz2
Source2: %{name}.pam
Source3: http://download.savannah.gnu.org/releases/quagga/%{name}-%{version}.tar.gz.asc
# downloaded from: http://download.savannah.gnu.org/releases/quagga/pgp-54CD2E60.asc
# new download from:
# http://www.nongnu.org/quagga/quagga.net.pgp.asc
Source4: %{name}.keyring
Source5: %{name}-tmpfs.conf
Source6: sysconfig.%{name}
Source7: %{name}.logrotate
Patch1: %{name}-add-ospf6_main-return-value.patch
Patch2: %{name}-add-table_test-return-value.patch
Patch3: 0001-systemd-change-the-WantedBy-target.patch
Patch4: quagga-CVE-2017-16227-bgpd-Fix-AS_PATH-size-calculation.patch
Patch5: Quagga-2018-0543-bgpd.bsc1079798.patch
Patch6: Quagga-2018-1114-bgpd.bsc1079799.patch
Patch7: Quagga-2018-1550-bgpd-bsc1079800.patch
Patch8: Quagga-2018-1975-bdpd.bsc1079801.patch
Patch9: Quagga-CVE-2023-41358-bgpd-NLRIs.bsc1214735.patch
Patch10: Quagga-CVE-2023-38802-bgpd-withdraw.bsc1213284.patch
Patch11: quagga-11-CVE-2022-37032_bsc1202023.patch
Patch12: quagga-12-CVE-2024-44070_bsc1229438.patch
Patch13: quagga-13-CVE-2017-15865_rewind-fix.patch
BuildRequires: autoconf >= 2.6
BuildRequires: automake >= 1.6
BuildRequires: libtool
BuildRequires: net-snmp-devel
BuildRequires: pam-devel
BuildRequires: readline-devel
BuildRequires: xz
Requires(post): %fillup_prereq
Requires(post): %{install_info_prereq}
# pwdutils for useradd and groupadd
Requires(pre): pwdutils
Recommends: logrotate
Provides: zebra = %{version}
Obsoletes: zebra < %{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with pcre}
BuildRequires: pcre-devel
%endif
%if 0%{?suse_version} > 1220
BuildRequires: makeinfo
%endif
%if %{with systemd}
BuildRequires: systemd-rpm-macros
%{?systemd_requires}
%else
Requires(post): %insserv_prereq
%endif
%description
Quagga is a routing software suite, providing implementations of
OSPFv2, OSPFv3, RIP v1 and v2, RIPv3 and BGPv4. Quagga is a fork of
GNU Zebra.
%package -n libospf0
Summary: Quagga's implementation of the OSPF protocol
Group: System/Libraries
%description -n libospf0
This library contains part of the OSPFv2 implementation of Quagga.
%package -n libospfapiclient0
Summary: API for Quagga's OSPFv2 implementation
Group: System/Libraries
%description -n libospfapiclient0
This library contains part of the OSPFv2 implementation of Quagga.
%package -n libzebra1
Summary: Quagga utility library
Group: System/Libraries
%description -n libzebra1
This library contains various utility functions to Quagga, such as
data types, buffers and socket handling.
%package -n libfpm_pb0
Summary: Quagga fpm protobuf library
Group: System/Libraries
%description -n libfpm_pb0
This library contains forwarding plane manager protobuf definitions
for Quagga.
%package -n libquagga_pb0
Summary: Quagga quagga protobuf library
Group: System/Libraries
%description -n libquagga_pb0
This library contains protobuf memory management for Quagga.
%package devel
Summary: Development files for quagga, a routing software for BGP, OSPF, RIP
Group: Development/Libraries/C and C++
Requires: libfpm_pb0 = %{version}
Requires: libospf0 = %{version}
Requires: libospfapiclient0 = %{version}
Requires: libquagga_pb0 = %{version}
Requires: libzebra1 = %{version}
%description devel
Quagga is a routing software suite, providing implementations of
OSPFv2, OSPFv3, RIP v1 and v2, RIPv3 and BGPv4. Quagga is a fork of
GNU Zebra.
This subpackage contains the headers for the Quagga libraries.
%prep
%setup -q -a 1
%patch1 -p 1
%patch2 -p 1
%patch3 -p 1
%patch4 -p 1
%patch5 -p 1
%patch6 -p 1
%patch7 -p 1
%patch8 -p 1
%patch9 -p 1
%patch10 -p 1
%patch11 -p 1
%patch12 -p 1
%patch13 -p 1
%build
export CFLAGS="%{optflags} -fno-strict-aliasing"
%configure --disable-static --with-pic \
--enable-vtysh \
--enable-rtadv \
--enable-snmp \
--enable-ipv6 \
--with-libpam \
--enable-netlink \
%if %{with isis}
--enable-isisd \
%endif
%if %{with isis_topology}
--enable-isis-topology \
%endif
%if %{with tcp_zebra}
--enable-tcp-zebra \
%endif
%if %{with irdp}
--enable-irdp \
%endif
%if %{with pcre}
--enable-pcreposix \
%endif
--sysconfdir=%{_sysconfdir}/quagga \
--localstatedir=%{quagga_statedir} \
--enable-multipath=0
make %{?_smp_mflags}
%install
rm -r doc/quagga.info
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
install -d %{buildroot}%{_sysconfdir}/{init.d,quagga,pam.d,logrotate.d}
%if %{with systemd}
install -d %{buildroot}%{_unitdir}
install -p -m 0644 redhat/zebra.service %{buildroot}%{_unitdir}/zebra.service
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rczebra
install -p -m 0644 redhat/isisd.service %{buildroot}%{_unitdir}/isisd.service
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcisisd
install -p -m 0644 redhat/ripd.service %{buildroot}%{_unitdir}/ripd.service
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcripd
install -p -m 0644 redhat/ospfd.service %{buildroot}%{_unitdir}/ospfd.service
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcospfd
install -p -m 0644 redhat/bgpd.service %{buildroot}%{_unitdir}/bgpd.service
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcbgpd
install -p -m 0644 redhat/ospf6d.service %{buildroot}%{_unitdir}/ospf6d.service
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcospf6d
install -p -m 0644 redhat/ripngd.service %{buildroot}%{_unitdir}/ripngd.service
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcripngd
install -d -m 0755 %{buildroot}/%{_tmpfilesdir}
install -p -m 0644 %{SOURCE5} %{buildroot}/%{_tmpfilesdir}/quagga.conf
sed -e "s|@quagga_statedir@|%{quagga_statedir}|g" -i \
%{buildroot}/%{_tmpfilesdir}/quagga.conf
%else
install -m 0755 SUSE/* %{buildroot}%{_sysconfdir}/init.d/
ln -sf %{_sysconfdir}/init.d/zebra %{buildroot}%{_sbindir}/rczebra
ln -sf %{_sysconfdir}/init.d/bgpd %{buildroot}%{_sbindir}/rcbgpd
ln -sf %{_sysconfdir}/init.d/ospf6d %{buildroot}%{_sbindir}/rcospf6d
ln -sf %{_sysconfdir}/init.d/ospfd %{buildroot}%{_sbindir}/rcospfd
ln -sf %{_sysconfdir}/init.d/ripngd %{buildroot}%{_sbindir}/rcripngd
ln -sf %{_sysconfdir}/init.d/ripd %{buildroot}%{_sbindir}/rcripd
%endif
install -d -m 0755 %{buildroot}%{_fillupdir}/
install -m 0644 %{SOURCE6} %{buildroot}%{_fillupdir}/sysconfig.%{name}
install -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/pam.d/quagga
install -d -m 0750 %{buildroot}%{_localstatedir}/log/quagga
install -d -m 0751 %{buildroot}%{quagga_statedir}
install -m 0644 %{SOURCE7} %{buildroot}%{_sysconfdir}/logrotate.d/quagga
rm -f %{buildroot}%{_sysconfdir}/quagga/*.sample*
cat > %{buildroot}%{_sysconfdir}/quagga/zebra.conf << __EOF__
!hostname quagga
!password quagga
!enable password quagga
log file %{_localstatedir}/log/quagga/zebra.log
__EOF__
cat > %{buildroot}%{_sysconfdir}/quagga/vtysh.conf << __EOF__
! vtysh is using PAM authentication allowing root to use it.
__EOF__
%pre
getent group quagga >/dev/null || %{_sbindir}/groupadd -r quagga || :
getent passwd quagga >/dev/null || \
%{_sbindir}/useradd -r -g quagga -s %{_bindir}/false \
-c "Quagga routing daemon" \
-d %{quagga_statedir} quagga || :
%if %{with systemd}
%service_add_pre zebra.service isisd.service ripd.service ospfd.service bgpd.service ospf6d.service ripngd.service
%endif
%post
%if %{with systemd}
# Use %%tmpfiles_create when Leap 43.0 is oldest in support scope
%{_bindir}/systemd-tmpfiles --create %{_tmpfilesdir}/%{name}.conf || :
%service_add_post zebra.service isisd.service ripd.service ospfd.service bgpd.service ospf6d.service ripngd.service
%fillup_only
%else
%fillup_and_insserv
test -d %{quagga_statedir} || mkdir -m 0751 -p %{quagga_statedir}
%endif
%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info%{ext_info}
%preun
%if %{with systemd}
%service_del_preun zebra.service isisd.service ripd.service ospfd.service bgpd.service ospf6d.service ripngd.service
%else
%stop_on_removal zebra bgpd ospf6d ospfd ripd ripngd
%endif
%postun
%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info%{ext_info}
%if %{with systemd}
%service_del_postun zebra.service isisd.service ripd.service ospfd.service bgpd.service ospf6d.service ripngd.service
%else
%restart_on_update zebra bgpd ospf6d ospfd ripd ripngd
%insserv_cleanup
%endif
%post -n libospf0 -p /sbin/ldconfig
%postun -n libospf0 -p /sbin/ldconfig
%post -n libospfapiclient0 -p /sbin/ldconfig
%postun -n libospfapiclient0 -p /sbin/ldconfig
%post -n libzebra1 -p /sbin/ldconfig
%postun -n libzebra1 -p /sbin/ldconfig
%post -n libfpm_pb0 -p /sbin/ldconfig
%postun -n libfpm_pb0 -p /sbin/ldconfig
%post -n libquagga_pb0 -p /sbin/ldconfig
%postun -n libquagga_pb0 -p /sbin/ldconfig
%posttrans
mkdir -p %{_localstatedir}/adm/update-messages
rm -f %{_localstatedir}/adm/update-messages/%{name}-%{version}-%{release}
cat > %{_localstatedir}/adm/update-messages/%{name}-%{version}-%{release} <<__EOF__
Quagga has not been developed further since 2018 and the package
will not receive further maintenance updates.
The frr package providing the functionality is available since
SLE-15-SP3 (see release notes) and openSUSE Leap 15.3 and quagga
has been also removed from openSUSE Tumbleweed.
FRR has its roots in the Quagga project and is actively developed.
The configuration is mostly backward compatible, including the vtysh
shell to configure the routing protocols. However, there were several
changes, improvements, and new functionality added to frr.
See https://frrouting.org/ for more information.
Please migrate to FRR, preferably using the vtysh shell as described
in the FRRouting User Guide.
__EOF__
%files
%defattr(-,root,root)
%doc */*.sample* AUTHORS COPYING* ChangeLog NEWS README REPORTING-BUGS SERVICES TODO
%{_sbindir}/*
%dir %attr(750,quagga,quagga) %{_sysconfdir}/quagga/
%config(noreplace) %attr(640,quagga,quagga) %{_sysconfdir}/%{name}/*.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/*
%{_fillupdir}/sysconfig.quagga
%if %{with systemd}
%{_unitdir}/*.service
%dir %{_tmpfilesdir}
%{_tmpfilesdir}/quagga.conf
%else
%config %{_sysconfdir}/init.d/*
%endif
%config (noreplace)%{_sysconfdir}/pam.d/*
%{_bindir}/*
%dir %attr(-,quagga,quagga) %{_localstatedir}/log/quagga
%dir %attr(-,quagga,quagga) %ghost %{quagga_statedir}
%{_infodir}/quagga.info*
%{_mandir}/man?/*
%files -n libospf0
%defattr(-,root,root)
%{_libdir}/libospf.so.*
%files -n libospfapiclient0
%defattr(-,root,root)
%{_libdir}/libospfapiclient.so.*
%files -n libzebra1
%defattr(-,root,root)
%{_libdir}/libzebra.so.*
%files -n libfpm_pb0
%defattr(-,root,root)
%{_libdir}/libfpm_pb.so.*
%files -n libquagga_pb0
%defattr(-,root,root)
%{_libdir}/libquagga_pb.so.*
%files devel
%defattr(-,root,root)
%{_libdir}/*.so
%dir %{_includedir}/%{name}
%{_includedir}/%{name}/*.h
%dir %{_includedir}/%{name}/ospfd
%{_includedir}/%{name}/ospfd/*.h
%dir %{_includedir}/%{name}/ospfapi
%{_includedir}/%{name}/ospfapi/*.h
%changelog