From 1e6137dd0940236354b3319ffdd0d58b1e8fe34d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zoran=20Peri=C4=8Di=C4=87?= Date: Sat, 25 Apr 2026 17:51:07 +0200 Subject: [PATCH] Add mstpd 0.2.0 RPM spec for Fedora --- mstpd.spec | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 mstpd.spec diff --git a/mstpd.spec b/mstpd.spec new file mode 100644 index 0000000..04b6f40 --- /dev/null +++ b/mstpd.spec @@ -0,0 +1,103 @@ +Name: mstpd +Summary: STP/RSTP/PVST+/MSTP Spanning Tree Protocol Daemon +URL: https://github.com/mstpd/mstpd +Version: 0.2.0 +Release: 1%{?dist} + +License: GPL-2.0-or-later +Group: System Environment/Daemons + +Source0: https://github.com/mstpd/mstpd/archive/%{version}/%{name}-%{version}.tar.gz + +%{?systemd_requires} +BuildRequires: gcc +BuildRequires: make +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: pkgconfig +BuildRequires: systemd-rpm-macros +Requires: bridge-utils +Requires: iproute +Requires: python3 + +%description +This package provides a user-space daemon which replaces the STP handling that +is built into the Linux kernel Ethernet bridge and adds support for RSTP and +PVST+. + +This daemon also supports participating in MSTP. However, due to the way the +Linux kernel implements its FIBs, it is not currently possible to map MSTP +topologies onto Linux bridges. Therefore, mstpd will not actually block ports +on Linux bridges when MSTP is used. + +%prep +%setup -q + +%build +./autogen.sh +%configure --with-systemdunitdir=%{_unitdir} +%make_build + +%install +%make_install + +mkdir -p %{buildroot}%{_prefix}/lib/NetworkManager/dispatcher.d +install -m 755 -p utils/nm-dispatcher \ + %{buildroot}%{_prefix}/lib/NetworkManager/dispatcher.d/45-mstpd + +sed -i -e 's|/etc/network/interfaces|%{_sysconfdir}/mstpd/bridges.conf|g' \ + %{buildroot}%{_libexecdir}/mstpctl-utils/ifquery \ + %{buildroot}%{_libexecdir}/mstpctl-utils/mstp_config_bridge + +mkdir -p %{buildroot}%{_sysconfdir}/mstpd +cat <<'END' > %{buildroot}%{_sysconfdir}/mstpd/bridges.conf +# Per-bridge MSTP configuration for mstpd. +# See `man mstpctl-utils-interfaces` for documentation on the options. +# +# iface br0 +# mstpctl_ports eth0 eth1 +# mstpctl_stp on +# mstpctl_forcevers rstp +# mstpctl_maxwait auto +# mstpctl_hello 2 +# mstpctl_maxage 20 +# mstpctl_fdelay 15 +# mstpctl_txholdcount 6 +# mstpctl_maxhops 20 +# mstpctl_treeprio 8 +END + +%post +%systemd_post %{name}.service + +%preun +%systemd_preun %{name}.service + +%postun +%systemd_postun_with_restart %{name}.service + +%files +%defattr(-,root,root,-) +%{_sbindir}/mstpd +%{_sbindir}/mstpctl +%{_sbindir}/bridge-stp +%{_sbindir}/mstp_restart +%config(noreplace) %{_sysconfdir}/bridge-stp.conf +%config(noreplace) %{_sysconfdir}/mstpd/bridges.conf +%{_sysconfdir}/bash_completion.d/mstpctl +%{_unitdir}/mstpd.service +%{_prefix}/lib/NetworkManager/dispatcher.d/45-mstpd +%{_libexecdir}/mstpctl-utils/mstpctl_restart_config +%{_libexecdir}/mstpctl-utils/mstp_config_bridge +%{_libexecdir}/mstpctl-utils/ifquery +%{_libexecdir}/mstpctl-utils/ifupdown.sh +%{_libexecdir}/mstpctl-utils/mstpctl-utils-functions.sh +%doc %{_mandir}/man8/mstpctl.8.gz +%doc %{_mandir}/man5/mstpctl-utils-interfaces.5.gz +%doc %{_docdir}/mstpd/README.VLANs +%doc %{_docdir}/mstpd/README +%license %{_docdir}/mstpd/LICENSE + +%changelog +* Sat Apr 25 2026 Zoran Pericic - 0.2.0-1 +- Initial package