Skip to content

Commit e7143fd

Browse files
authored
iptables: Enable nftables. (#11027)
1 parent 1330d21 commit e7143fd

2 files changed

Lines changed: 65 additions & 13 deletions

File tree

SPECS/ebtables/ebtables.spec

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Name: ebtables
44
Version: 2.0.11
5-
Release: 8%{?dist}
5+
Release: 9%{?dist}
66
Summary: Ethernet Bridge frame table administration tool
77
License: GPLv2+
88
URL: http://ebtables.sourceforge.net/
@@ -35,6 +35,9 @@ like iptables. There are no known incompatibility issues.
3535

3636
%package legacy
3737
Summary: Legacy user space tool to configure bridge netfilter rules in kernel
38+
Requires(post): %{_sbindir}/update-alternatives
39+
Requires(post): %{_bindir}/readlink
40+
Requires(postun): %{_sbindir}/update-alternatives
3841
Provides: ebtables
3942

4043
%description legacy
@@ -90,10 +93,22 @@ rm %{buildroot}/%{_libdir}/libebtc.la
9093
# Drop these binaries (for now at least)
9194
rm %{buildroot}/%{_sbindir}/ebtables{d,u}
9295

93-
# Symlink ebtables-legacy to ebtables
94-
ln -sf ebtables-legacy %{buildroot}%{_sbindir}/ebtables
95-
ln -sf ebtables-legacy-save %{buildroot}%{_sbindir}/ebtables-save
96-
ln -sf ebtables-legacy-restore %{buildroot}%{_sbindir}/ebtables-restore
96+
# Prepare for Alternatives system
97+
touch %{buildroot}%{_sbindir}/ebtables
98+
touch %{buildroot}%{_sbindir}/ebtables-save
99+
touch %{buildroot}%{_sbindir}/ebtables-restore
100+
101+
%post legacy
102+
pfx=%{_sbindir}/ebtables
103+
%{_sbindir}/update-alternatives --install %{_sbindir}/%{name} %{name} %{_sbindir}/%{name}-legacy 10000 \
104+
--slave %{_sbindir}/%{name}-save %{name}-save %{_sbindir}/%{name}-legacy-save \
105+
--slave %{_sbindir}/%{name}-restore %{name}-restore %{_sbindir}/%{name}-legacy-restore
106+
107+
%postun legacy
108+
if [ $1 -eq 0 ]; then
109+
%{_sbindir}/update-alternatives --remove \
110+
%{name} %{_sbindir}/%{name}-legacy
111+
fi
97112

98113
%post services
99114
%systemd_post ebtables.service
@@ -108,10 +123,10 @@ ln -sf ebtables-legacy-restore %{buildroot}%{_sbindir}/ebtables-restore
108123
%license COPYING
109124
%doc ChangeLog THANKS
110125
%{_sbindir}/ebtables-legacy*
111-
%{_sbindir}/ebtables*
112126
%{_mandir}/*/ebtables-legacy*
113127
%{_libdir}/libebtc.so*
114128
%{_sysconfdir}/ethertypes
129+
%ghost %{_sbindir}/ebtables{,-save,-restore}
115130

116131
%files services
117132
%{_unitdir}/ebtables.service
@@ -120,6 +135,9 @@ ln -sf ebtables-legacy-restore %{buildroot}%{_sbindir}/ebtables-restore
120135
%ghost %{_sysconfdir}/sysconfig/ebtables
121136

122137
%changelog
138+
* Tue Nov 12 2024 Sumedh Sharma <sumsharma@microsoft.com> - 2.0.11-9
139+
- introduce alternatives for legacy
140+
123141
* Tue Sep 03 2024 Neha Agarwal <nehaagarwal@microsoft.com> - 2.0.11-8
124142
- Add missing Vendor and Distribution tags.
125143

SPECS/iptables/iptables.spec

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Summary: Linux kernel packet control tool
22
Name: iptables
33
Version: 1.8.10
4-
Release: 2%{?dist}
4+
Release: 3%{?dist}
55
License: GPLv2+
66
Vendor: Microsoft Corporation
77
Distribution: Azure Linux
@@ -18,6 +18,9 @@ BuildRequires: libmnl-devel
1818
BuildRequires: libnftnl-devel
1919
BuildRequires: systemd-bootstrap-rpm-macros
2020
Requires: iana-etc
21+
Requires: libnftnl
22+
Requires(post): %{_sbindir}/update-alternatives
23+
Requires(postun): %{_sbindir}/update-alternatives
2124
# Our build tooling cannot handle this
2225
#Requires: systemd
2326
Provides: %{name}-services = %{version}-%{release}
@@ -43,15 +46,14 @@ It contains the libraries and header files to create applications.
4346
--exec-prefix= \
4447
--with-xtlibdir=%{_libdir}/iptables \
4548
--with-pkgconfigdir=%{_libdir}/pkgconfig \
46-
--disable-nftables \
4749
--enable-libipq \
4850
--enable-devel
4951

50-
make V=0
52+
%make_build
5153

5254
%install
5355
%make_install
54-
ln -sfv ../../sbin/xtables-multi %{buildroot}%{_libdir}/iptables-xml
56+
5557
# Install daemon scripts
5658
install -vdm755 %{buildroot}%{_unitdir}
5759
install -m 644 %{SOURCE1} %{buildroot}%{_unitdir}
@@ -65,14 +67,40 @@ find %{buildroot} -name '*.a' -delete
6567
find %{buildroot} -type f -name "*.la" -delete -print
6668
%{_fixperms} %{buildroot}/*
6769

68-
%preun
69-
%systemd_preun iptables.service
70+
ln -sf --relative %{buildroot}%{_sbindir}/xtables-legacy-multi %{buildroot}%{_bindir}/iptables-xml
7071

7172
%post
73+
for target in %{name} \
74+
ip6tables \
75+
ebtables \
76+
arptables; do
77+
%{_sbindir}/update-alternatives --install %{_sbindir}/${target} ${target} %{_sbindir}/${target}-nft 30000 \
78+
--slave %{_sbindir}/${target}-save ${target}-save %{_sbindir}/${target}-nft-save \
79+
--slave %{_sbindir}/${target}-restore ${target}-restore %{_sbindir}/${target}-nft-restore
80+
done
81+
82+
for target in %{name} \
83+
ip6tables; do
84+
%{_sbindir}/update-alternatives --install %{_sbindir}/${target} ${target} %{_sbindir}/${target}-legacy 10000 \
85+
--slave %{_sbindir}/${target}-save ${target}-save %{_sbindir}/${target}-legacy-save \
86+
--slave %{_sbindir}/${target}-restore ${target}-restore %{_sbindir}/${target}-legacy-restore
87+
done
88+
7289
/sbin/ldconfig
7390
%systemd_post iptables.service
7491

92+
%preun
93+
%systemd_preun iptables.service
94+
7595
%postun
96+
if [ $1 -eq 0 ]; then
97+
%{_sbindir}/update-alternatives --remove %{name} %{_sbindir}/%{name}-nft
98+
%{_sbindir}/update-alternatives --remove ip6tables %{_sbindir}/ip6tables-nft
99+
%{_sbindir}/update-alternatives --remove ebtables %{_sbindir}/ebtables-nft
100+
%{_sbindir}/update-alternatives --remove arptables %{_sbindir}/arptables-nft
101+
%{_sbindir}/update-alternatives --remove %{name} %{_sbindir}/%{name}-legacy
102+
%{_sbindir}/update-alternatives --remove ip6tables %{_sbindir}/ip6tables-legacy
103+
fi
76104
/sbin/ldconfig
77105
%systemd_postun_with_restart iptables.service
78106

@@ -83,15 +111,18 @@ find %{buildroot} -type f -name "*.la" -delete -print
83111
%config(noreplace) %{_sysconfdir}/systemd/scripts/iptables.stop
84112
%config(noreplace) %{_sysconfdir}/systemd/scripts/ip4save
85113
%config(noreplace) %{_sysconfdir}/systemd/scripts/ip6save
114+
%config(noreplace) %{_sysconfdir}/ethertypes
86115
%{_unitdir}/iptables.service
87116
%{_sbindir}/*
88117
%{_bindir}/*
89118
%{_libdir}/*.so.*
90119
%{_libdir}/iptables/*
91-
%{_libdir}/iptables-xml
120+
%{_bindir}/iptables-xml
92121
%{_mandir}/man1/*
93122
%{_mandir}/man8/*
94123
/usr/share/xtables/iptables.xslt
124+
%ghost %{_sbindir}/ip{,6}tables{,-save,-restore}
125+
%ghost %{_sbindir}/{eb,arp}tables{,-save,-restore}
95126

96127
%files devel
97128
%{_libdir}/*.so
@@ -100,6 +131,9 @@ find %{buildroot} -type f -name "*.la" -delete -print
100131
%{_mandir}/man3/*
101132

102133
%changelog
134+
* Tue Nov 12 2024 Sumedh Sharma <sumsharma@microsoft.com> - 1.8.10-3
135+
- Enable nftables and use alternatives.
136+
103137
* Mon Mar 18 2024 Andy Zaugg <azaugg@linkedin.com> - 1.8.10-2
104138
- Flush raw table when restarting iptables service
105139

0 commit comments

Comments
 (0)