aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/utils/iptables/patches/030-extensions-libxt_bpf-Fix-build-with-old-kernel-versi.patch
blob: c825eee3a971ab8a9d5cacff6ecf405791f6f5c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
From a12326ad330c4f7cd8d2b6ae1c4fbcd952c378dc Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Mon, 26 Feb 2018 17:39:09 +0100
Subject: [PATCH] extensions: libxt_bpf: Fix build with old kernel versions

In kernel 3.18 the union bpf_attr does not have a pathname attribute and
BPF_OBJ_GET is also not defined in these versions.
This was added in Linux commit b2197755b263 ("bpf: add support for
persistent maps/progs"). Check for the BPF_FS_MAGIC define which was
also added in this Linux commit and only activate this code in case we
find that define.

This fixes a build problem with Linux 3.18.
Netfilter bug: #1231

Fixes: f17f9ace8a8 ("extensions: libxt_bpf: support ebpf pinned objects")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
 extensions/libxt_bpf.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/extensions/libxt_bpf.c
+++ b/extensions/libxt_bpf.c
@@ -22,6 +22,7 @@
 #include <linux/bpf.h>
 #endif
 
+#include <linux/magic.h>
 #include <linux/unistd.h>
 
 #define BCODE_FILE_MAX_LEN_B	1024
@@ -62,7 +63,7 @@ static const struct xt_option_entry bpf_
 
 static int bpf_obj_get(const char *filepath)
 {
-#if defined HAVE_LINUX_BPF_H && defined __NR_bpf
+#if defined HAVE_LINUX_BPF_H && defined __NR_bpf && defined BPF_FS_MAGIC
 	union bpf_attr attr;
 
 	memset(&attr, 0, sizeof(attr));