]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
extensions: libxt_bpf: Fix build with old kernel versions
authorHauke Mehrtens <hauke@hauke-m.de>
Tue, 27 Feb 2018 15:56:55 +0000 (16:56 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 28 Feb 2018 18:38:19 +0000 (19:38 +0100)
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>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
extensions/libxt_bpf.c

index 9510c190f3159c7a4f26d896669801950edf82e0..92958247c7565b752c7b049ba156b777586a9310 100644 (file)
@@ -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_opts_v1[] = {
 
 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));