net-firewall/iptables: Apply the Flatcar patches

Signed-off-by: Sayan Chowdhury <sayan@kinvolk.io>
This commit is contained in:
Sayan Chowdhury 2021-06-14 20:54:27 +05:30 committed by Krzesimir Nowak
parent fd2b43d9cf
commit f6efb50cb6
3 changed files with 32 additions and 21 deletions

View File

@ -0,0 +1,6 @@
[Unit]
Description=Store and restore ip6tables firewall rules
[Install]
Also=ip6tables-store.service
Also=ip6tables-restore.service

View File

@ -0,0 +1,6 @@
[Unit]
Description=Store and restore iptables firewall rules
[Install]
Also=iptables-store.service
Also=iptables-restore.service

View File

@ -32,19 +32,23 @@ DEPEND="${COMMON_DEPEND}
virtual/os-headers virtual/os-headers
>=sys-kernel/linux-headers-4.4:0 >=sys-kernel/linux-headers-4.4:0
" "
# Flatcar: Rename virtual/yacc to app-alternatives/yacc. The former is
# gone in favor of the latter in Gentoo. This modification will be
# dropped when we update this ebuild from Gentoo.
BDEPEND="${BUILD_DEPEND} BDEPEND="${BUILD_DEPEND}
app-eselect/eselect-iptables app-eselect/eselect-iptables
virtual/pkgconfig virtual/pkgconfig
nftables? ( nftables? (
sys-devel/flex sys-devel/flex
virtual/yacc app-alternatives/yacc
) )
" "
# Flatcar: Drop BUILD_DEPEND, as we would not like to ship
# eselect in the final image. Also, drop net-firewall/arptables as we don't
# ship arptables
RDEPEND="${COMMON_DEPEND} RDEPEND="${COMMON_DEPEND}
${BUILD_DEPEND}
nftables? ( net-misc/ethertypes ) nftables? ( net-misc/ethertypes )
!<net-firewall/ebtables-2.0.11-r1 !<net-firewall/ebtables-2.0.11-r1
!<net-firewall/arptables-0.0.5-r1
" "
PATCHES=( PATCHES=(
@ -120,12 +124,16 @@ src_install() {
rm "${ED}"/etc/ethertypes || die rm "${ED}"/etc/ethertypes || die
# Bugs 660886 and 669894 # Bugs 660886 and 669894
rm "${ED}"/sbin/{arptables,ebtables}{,-{save,restore}} || die # Flatcar: We don't provide arptables* binaries.
# Flatcar: Keeping the ebtables binaries
rm "${ED}"/sbin/arptables{{,-{save,restore}},-nft{,-{save,restore}}} || die
fi fi
systemd_dounit "${FILESDIR}"/systemd/iptables-{re,}store.service # Flatcar: Gentoo upstream dropped the iptables & ip6tables services
# but we continue to ship them
systemd_dounit "${FILESDIR}"/systemd/iptables{,-{re,}store}.service
if use ipv6 ; then if use ipv6 ; then
systemd_dounit "${FILESDIR}"/systemd/ip6tables-{re,}store.service systemd_dounit "${FILESDIR}"/systemd/ip6tables{,-{re,}store}.service
fi fi
# Move important libs to /lib #332175 # Move important libs to /lib #332175
@ -135,18 +143,20 @@ src_install() {
} }
pkg_postinst() { pkg_postinst() {
local default_iptables="xtables-legacy-multi" # Flatcar: Use xtables-nft-multi to use the nft backend instead of legacy backend
local default_iptables="xtables-nft-multi"
if ! eselect iptables show &>/dev/null; then if ! eselect iptables show &>/dev/null; then
elog "Current iptables implementation is unset, setting to ${default_iptables}" elog "Current iptables implementation is unset, setting to ${default_iptables}"
eselect iptables set "${default_iptables}" eselect iptables set "${default_iptables}"
fi fi
# Flatcar: Drop the arptables, but retain the `for` structure in favor of lesser diff
# to upstream
if use nftables; then if use nftables; then
local tables local tables
for tables in {arp,eb}tables; do for tables in ebtables; do
if ! eselect ${tables} show &>/dev/null; then if ! eselect ${tables} show &>/dev/null; then
elog "Current ${tables} implementation is unset, setting to ${default_iptables}" elog "Current ${tables} implementation is unset, setting to ${default_iptables}"
eselect ${tables} set xtables-nft-multi eselect ${tables} set "${default_iptables}"
fi fi
done done
fi fi
@ -161,17 +171,6 @@ pkg_prerm() {
if ! has_version 'net-firewall/ebtables'; then if ! has_version 'net-firewall/ebtables'; then
elog "Unsetting ebtables symlinks before removal" elog "Unsetting ebtables symlinks before removal"
eselect ebtables unset eselect ebtables unset
elif [[ -z ${REPLACED_BY_VERSION} ]]; then
elog "Resetting ebtables symlinks to ebtables-legacy"
eselect ebtables set ebtables-legacy
fi
if ! has_version 'net-firewall/arptables'; then
elog "Unsetting arptables symlinks before removal"
eselect arptables unset
elif [[ -z ${REPLACED_BY_VERSION} ]]; then
elog "Resetting arptables symlinks to arptables-legacy"
eselect arptables set arptables-legacy
fi fi
# the eselect module failing should not be fatal # the eselect module failing should not be fatal