# Copyright 1999-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 inherit multilib systemd toolchain-funcs autotools flag-o-matic usr-ldscript DESCRIPTION="Linux kernel (2.4+) firewall, NAT and packet mangling tools" HOMEPAGE="https://www.netfilter.org/projects/iptables/" SRC_URI="https://www.netfilter.org/projects/iptables/files/${P}.tar.bz2" LICENSE="GPL-2" # Subslot reflects PV when libxtables and/or libip*tc was changed # the last time. SLOT="0/1.8.3" KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86" IUSE="conntrack ipv6 netlink nftables pcap static-libs" BUILD_DEPEND=" >=app-eselect/eselect-iptables-20200508 " COMMON_DEPEND=" conntrack? ( >=net-libs/libnetfilter_conntrack-1.0.6 ) netlink? ( net-libs/libnfnetlink ) nftables? ( >=net-libs/libmnl-1.0:0= >=net-libs/libnftnl-1.1.6:0= ) pcap? ( net-libs/libpcap ) " DEPEND="${COMMON_DEPEND} virtual/os-headers >=sys-kernel/linux-headers-4.4:0 " BDEPEND="${BUILD_DEPEND} app-eselect/eselect-iptables virtual/pkgconfig nftables? ( sys-devel/flex virtual/yacc ) " RDEPEND="${COMMON_DEPEND} ${BUILD_DEPEND} nftables? ( net-misc/ethertypes ) !/dev/null; then elog "Current iptables implementation is unset, setting to ${default_iptables}" eselect iptables set "${default_iptables}" fi if use nftables; then local tables for tables in {arp,eb}tables; do if ! eselect ${tables} show &>/dev/null; then elog "Current ${tables} implementation is unset, setting to ${default_iptables}" eselect ${tables} set xtables-nft-multi fi done fi eselect iptables show } pkg_prerm() { elog "Unsetting iptables symlinks before removal" eselect iptables unset if ! has_version 'net-firewall/ebtables'; then elog "Unsetting ebtables symlinks before removal" 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 # the eselect module failing should not be fatal return 0 }