summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Roovers <jer@gentoo.org>2018-02-10 12:21:57 +0100
committerJeroen Roovers <jer@gentoo.org>2018-02-10 12:22:08 +0100
commite67466e42c6fc3c2775258cad58e1803b352e3bf (patch)
tree4b6ce02fe9ccadf1476b38e92310984f57aa03c5
parentdev-java/oracle-jdk-bin: Add elfutils as Linux-only dep to 9 (diff)
downloadgentoo-e67466e42c6fc3c2775258cad58e1803b352e3bf.tar.gz
gentoo-e67466e42c6fc3c2775258cad58e1803b352e3bf.tar.bz2
gentoo-e67466e42c6fc3c2775258cad58e1803b352e3bf.zip
net-firewall/ipt_netflow: Fix kernel 4.15 compatibility (bug #646798).
Package-Manager: Portage-2.3.24, Repoman-2.3.6
-rw-r--r--net-firewall/ipt_netflow/files/ipt_netflow-2.2-linux-4.15.patch26
-rw-r--r--net-firewall/ipt_netflow/ipt_netflow-2.2-r3.ebuild102
2 files changed, 128 insertions, 0 deletions
diff --git a/net-firewall/ipt_netflow/files/ipt_netflow-2.2-linux-4.15.patch b/net-firewall/ipt_netflow/files/ipt_netflow-2.2-linux-4.15.patch
new file mode 100644
index 000000000000..aa5feef3279f
--- /dev/null
+++ b/net-firewall/ipt_netflow/files/ipt_netflow-2.2-linux-4.15.patch
@@ -0,0 +1,26 @@
+--- a/ipt_NETFLOW.c
++++ b/ipt_NETFLOW.c
+@@ -4357,7 +4357,11 @@
+ #define CALC_RATE(ewma, cur, minutes) ewma += _A(cur - ewma, minutes)
+
+ // calculate EWMA throughput rate for whole module
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)
++static void rate_timer_calc(struct timer_list *t)
++#else
+ static void rate_timer_calc(unsigned long dummy)
++#endif
+ {
+ static u64 old_pkt_total = 0;
+ static u64 old_traf_total = 0;
+@@ -5525,7 +5525,11 @@
+
+ netflow_switch_version(protocol);
+ _schedule_scan_worker(0);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)
++ timer_setup(&rate_timer, rate_timer_calc, 0);
++#else
+ setup_timer(&rate_timer, rate_timer_calc, 0);
++#endif
+ mod_timer(&rate_timer, jiffies + (HZ * SAMPLERATE));
+
+ peakflows_at = jiffies;
diff --git a/net-firewall/ipt_netflow/ipt_netflow-2.2-r3.ebuild b/net-firewall/ipt_netflow/ipt_netflow-2.2-r3.ebuild
new file mode 100644
index 000000000000..b2bda0e58894
--- /dev/null
+++ b/net-firewall/ipt_netflow/ipt_netflow-2.2-r3.ebuild
@@ -0,0 +1,102 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+MY_PN="${PN/_/-}"
+MY_P="${MY_PN}-${PV}"
+inherit linux-info linux-mod toolchain-funcs
+
+DESCRIPTION="Netflow iptables module"
+HOMEPAGE="https://sourceforge.net/projects/ipt-netflow"
+SRC_URI="mirror://sourceforge/${MY_PN}/${MY_P}.tgz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE="debug natevents snmp"
+
+RDEPEND="
+ net-firewall/iptables
+ snmp? ( net-analyzer/net-snmp )
+"
+DEPEND="${RDEPEND}
+ virtual/linux-sources
+ virtual/pkgconfig
+"
+
+# set S before MODULE_NAMES
+S="${WORKDIR}/${MY_P}"
+PATCHES=(
+ # bug #455984
+ "${FILESDIR}/${PN}-2.0-configure.patch"
+ # Compatibility with kernel 4.6
+ "${FILESDIR}/${P}-linux-4.6.patch"
+ # Compatibility with kernel 4.10, bug #617484
+ "${FILESDIR}/${P}-linux-4.10.patch"
+ # Compatibility with kernel 4.13, bug #630446
+ "${FILESDIR}/${P}-linux-4.13.patch"
+ # Compatibility with kernel 4.15, bug #646798
+ "${FILESDIR}/${P}-linux-4.15.patch"
+)
+
+pkg_setup() {
+ BUILD_TARGETS="all"
+ MODULE_NAMES="ipt_NETFLOW(ipt_netflow:${S})"
+ IPT_LIB="/usr/$(get_libdir)/xtables"
+ local CONFIG_CHECK="~IP_NF_IPTABLES"
+ use debug && CONFIG_CHECK+=" ~DEBUG_FS"
+ use natevents && CONFIG_CHECK+=" NF_CONNTRACK_EVENTS NF_NAT_NEEDED"
+ linux-mod_pkg_setup
+}
+
+src_prepare() {
+ sed -i \
+ -e 's:make -C:$(MAKE) -C:g' \
+ -e 's:gcc -O2:$(CC) $(CFLAGS) $(LDFLAGS):' \
+ -e 's:gcc:$(CC) $(CFLAGS) $(LDFLAGS):' \
+ Makefile.in || die
+
+ # Checking for directory is enough
+ sed -i -e 's:-s /etc/snmp/snmpd.conf:-d /etc/snmp:' configure || die
+
+ default
+}
+
+do_conf() {
+ echo ./configure $*
+ ./configure $* ${EXTRA_ECONF} || die 'configure failed'
+}
+
+src_configure() {
+ local IPT_VERSION="$($(tc-getPKG_CONFIG) --modversion xtables)"
+ # this configure script is not based on autotools
+ # ipt-src need to be defined, see bug #455984
+ do_conf \
+ --disable-dkms \
+ --enable-aggregation \
+ --enable-direction \
+ --enable-macaddress \
+ --enable-vlan \
+ --ipt-lib="${IPT_LIB}" \
+ --ipt-src="/usr/" \
+ --ipt-ver="${IPT_VERSION}" \
+ --kdir="${KV_DIR}" \
+ --kver="${KV_FULL}" \
+ $(use debug && echo '--enable-debugfs') \
+ $(use natevents && echo '--enable-natevents') \
+ $(use snmp && echo '--enable-snmp-rules' || echo '--disable-snmp-agent')
+}
+
+src_compile() {
+ emake ARCH="$(tc-arch-kernel)" CC="$(tc-getCC)" all
+}
+
+src_install() {
+ linux-mod_src_install
+ exeinto "${IPT_LIB}"
+ doexe libipt_NETFLOW.so
+ use snmp && emake DESTDIR="${D}" SNMPTGSO="/usr/$(get_libdir)/snmp/dlmod/snmp_NETFLOW.so" sinstall
+ doheader ipt_NETFLOW.h
+ dodoc README*
+}