# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=iptables
pkgver=1.8.11
pkgrel=1
pkgdesc="Linux kernel firewall, NAT and packet mangling tools"
url="https://www.netfilter.org/projects/iptables/index.html"
arch="all"
license="GPL-2.0-or-later"
depends_dev="linux-headers"
install="$pkgname.post-upgrade"
makedepends="$depends_dev libnftnl-dev bison flex autoconf automake libtool"
subpackages="
	iptables-legacy
	libip4tc
	libip6tc
	libipq
	libxtables
	$pkgname-doc
	$pkgname-dev
	$pkgname-openrc
	"
provides="ip6tables=$pkgver-r$pkgrel ebtables=$pkgver-r$pkgrel" # for backards compat
replaces="ip6tables ebtables"
source="https://www.netfilter.org/projects/iptables/files/iptables-$pkgver.tar.xz
	use-sh-iptables-apply.patch
	iptables.initd
	iptables.confd
	ip6tables.confd
	ebtables.initd
	ebtables.confd
	configure-Avoid-addition-assignment-operators.patch
	fix-interface-comparissons-in-dash-C-commands.patch
	drop-interface-mask-leftovers-from-post-parse-callbacks.patch
	"
options="!check"

prepare() {
	default_prepare

	# For configure-Avoid-addition-assignment-operators.patch
	autoreconf -vfi
}

build() {
	./configure \
		--build="$CBUILD" \
		--host="$CHOST" \
		--prefix=/usr \
		--mandir=/usr/share/man \
		--sysconfdir=/etc \
		--without-kernel \
		--enable-devel \
		--enable-libipq \
		--enable-shared

	# do not use rpath
	sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
	sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool

	make
}

package() {
	make install DESTDIR="$pkgdir"

	mkdir -p "$pkgdir"/usr/lib \
		"$pkgdir"/var/lib/iptables \
		"$pkgdir"/var/lib/ip6tables \
		"$pkgdir"/etc/iptables

	install -Dm644 include/iptables.h include/ip6tables.h \
		-t "$pkgdir"/usr/include/
	install -Dm644 include/libiptc/*.h -t "$pkgdir"/usr/include/libiptc/

	install -D -m755 "$srcdir"/iptables.initd "$pkgdir"/etc/init.d/iptables
	install -D -m644 "$srcdir"/iptables.confd "$pkgdir"/etc/conf.d/iptables
	install -D -m755 "$srcdir"/iptables.initd "$pkgdir"/etc/init.d/ip6tables
	install -D -m644 "$srcdir"/ip6tables.confd "$pkgdir"/etc/conf.d/ip6tables
	install -D -m755 "$srcdir"/ebtables.initd "$pkgdir"/etc/init.d/ebtables
	install -D -m644 "$srcdir"/ebtables.confd "$pkgdir"/etc/conf.d/ebtables

	ln -sfv xtables-nft-multi "$pkgdir"/usr/sbin/iptables
	ln -sfv xtables-nft-multi "$pkgdir"/usr/sbin/iptables-save
	ln -sfv xtables-nft-multi "$pkgdir"/usr/sbin/iptables-restore
	ln -sfv xtables-nft-multi "$pkgdir"/usr/sbin/ip6tables
	ln -sfv xtables-nft-multi "$pkgdir"/usr/sbin/ip6tables-save
	ln -sfv xtables-nft-multi "$pkgdir"/usr/sbin/ip6tables-restore
}

legacy() {
	pkgdesc="$pkgdesc (legacy xtables-legacy binaries)"

	amove \
		usr/sbin/*legacy* \
		usr/bin/iptables-xml
}

libip4tc() {
	pkgdesc="$pkgdesc (legacy libip4tc library)"

	amove usr/lib/libip4tc.so.*
}

libip6tc() {
	pkgdesc="$pkgdesc (legacy libip6tc library)"

	amove usr/lib/libip6tc.so.*
}

libipq() {
	pkgdesc="$pkgdesc (legacy libipq library)"

	amove usr/lib/libipq.so.*
}

libxtables() {
	pkgdesc="$pkgdesc (xtables library)"

	amove usr/lib/libxtables.so.*
}

openrc() {
	default_openrc
	provides="ip6tables-openrc=$pkgver-r$pkgrel"
	replaces="ip6tables-openrc"
}

sha512sums="
4937020bf52d57a45b76e1eba125214a2f4531de52ff1d15185faeef8bea0cd90eb77f99f81baa573944aa122f350a7198cef41d70594e1b65514784addbcc40  iptables-1.8.11.tar.xz
ac78898c2acbe66ed8d32a06f41ff08cde7c22c3df6dfec6bc89a912d2cef2bde730de19d25a5407886d567cb0972a0b7bde7e6b18a34c4511495b4dad3b90ad  use-sh-iptables-apply.patch
5e216351e1295ccd9db13b22720a4e5502584fe8bceacfc5c02e59ac9bf700be7b0128cf4845e717837270dbe1561e1a66b6fb82c8e0e55d56aa4ff89108b9f3  iptables.initd
cb7fecd5cab2c78bd3f215a41f39ec11c37eb360efbe83982378a0e647e0aa9dc0b7ec915a5b5081aa2f7747464787e69404aa15ba15a063c32cb8fb7dd13d1e  iptables.confd
0897a7a22f8b700f7f1f5c355ad6cbf39740e44d6c962af99e479978d8a2d556ca7fe4e31f238829046b4a871ce0b5fd52e2544f1361d15dd1ea3e33992646c4  ip6tables.confd
0fa11231240c3a4a6c23e425b29a8e917bff4ab1283d971d7bcc134840c8a25aabfd2fcfb8fe8aeea866ac3895012554055f0c64a7cc0a649f581088fe5226fa  ebtables.initd
1623109d7b564b817904e35b6c6964ce84fe123a8ae1b656944648a39cfef719431cfad313b48eb36ae53a0d1a6b388a5caec1a990448d02f77e5d12b1f7ee9d  ebtables.confd
21f75404ed26ebb437c8e31b0867112b62037af743f9f957798ac1fc50e1ef7e0ef63a7ecbc4d8b7aa69b3143ed5bfe9080b7e2bb82ea62d40d3c235a2eae37c  configure-Avoid-addition-assignment-operators.patch
4ed70d21abe2128413acfb2c86354a688270843773b73a81dc30318173dd45145d4b1a8f09f0ec170034956037c478874ca210a85e8ae7cc678d124d4a69adb6  fix-interface-comparissons-in-dash-C-commands.patch
3c32c3cb3d8132612fc83ec6c31456dddeaa39113175d203e687ed827fedfd1d79a841b66543a25f230959fbde03e81d8b15df1b407ac34e636994d67c7726a6  drop-interface-mask-leftovers-from-post-parse-callbacks.patch
"
