[PATCH 3/4] bpf: support new field for BPF_PROG_ATTACH
Paul Chaignon
paul.chaignon at gmail.com
Sun Feb 23 10:13:26 UTC 2020
* bpf_attr.h (BPF_PROG_ATTACH_struct): New field introduced in Linux
commit v5.6-rc1~151^2~199^2~7^2~3.
* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_PROG_ATTACH)): Decode the new field.
* NEWS: Mention this.
* tests/bpf.c (BPF_PROG_ATTACH_checks): Update expected output.
Signed-off-by: Paul Chaignon <paul.chaignon at gmail.com>
---
NEWS | 3 ++-
bpf.c | 8 ++++++++
bpf_attr.h | 3 ++-
tests/bpf.c | 8 +++++---
4 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/NEWS b/NEWS
index c54b97e0..4c7ebe1c 100644
--- a/NEWS
+++ b/NEWS
@@ -2,7 +2,8 @@ Noteworthy changes in release ?.? (????-??-??)
==============================================
* Improvements
- * Enhanced decoding of BPF_MAP_CREATE bpf syscall command.
+ * Enhanced decoding of BPF_MAP_CREATE and BPF_PROG_ATTACH bpf syscall
+ commands.
* Updated lists of BPF_* constants.
* Bug fixes
diff --git a/bpf.c b/bpf.c
index 74d46f1b..b2335d69 100644
--- a/bpf.c
+++ b/bpf.c
@@ -389,6 +389,14 @@ BEGIN_BPF_CMD_DECODER(BPF_PROG_ATTACH)
PRINT_FIELD_XVAL(", ", attr, attach_type, bpf_attach_type, "BPF_???");
PRINT_FIELD_FLAGS(", ", attr, attach_flags, bpf_attach_flags,
"BPF_F_???");
+
+ /*
+ * The following field was introduced by Linux commit
+ * v5.6-rc1~151^2~199^2~7^2~3.
+ */
+ if (len <= offsetof(struct BPF_PROG_ATTACH_struct, replace_bpf_fd))
+ break;
+ PRINT_FIELD_FD(", ", attr, replace_bpf_fd, tcp);
}
END_BPF_CMD_DECODER(RVAL_DECODED)
diff --git a/bpf_attr.h b/bpf_attr.h
index b569096b..e4826ec0 100644
--- a/bpf_attr.h
+++ b/bpf_attr.h
@@ -151,11 +151,12 @@ struct BPF_PROG_ATTACH_struct {
uint32_t attach_bpf_fd;
uint32_t attach_type;
uint32_t attach_flags;
+ uint32_t replace_bpf_fd;
};
# define BPF_PROG_ATTACH_struct_size \
sizeof(struct BPF_PROG_ATTACH_struct)
-# define expected_BPF_PROG_ATTACH_struct_size 16
+# define expected_BPF_PROG_ATTACH_struct_size 20
struct BPF_PROG_DETACH_struct {
uint32_t target_fd;
diff --git a/tests/bpf.c b/tests/bpf.c
index 2e4894a3..d9e349af 100644
--- a/tests/bpf.c
+++ b/tests/bpf.c
@@ -812,12 +812,14 @@ static const struct bpf_attr_check BPF_PROG_ATTACH_checks[] = {
.target_fd = -1,
.attach_bpf_fd = -2,
.attach_type = 2,
- .attach_flags = 1
+ .attach_flags = 1,
+ .replace_bpf_fd = -1
} },
- .size = offsetofend(struct BPF_PROG_ATTACH_struct, attach_flags),
+ .size = offsetofend(struct BPF_PROG_ATTACH_struct,
+ replace_bpf_fd),
.str = "target_fd=-1, attach_bpf_fd=-2"
", attach_type=BPF_CGROUP_INET_SOCK_CREATE"
- ", attach_flags=BPF_F_ALLOW_OVERRIDE"
+ ", attach_flags=BPF_F_ALLOW_OVERRIDE, replace_bpf_fd=-1"
}
};
--
2.20.1
More information about the Strace-devel
mailing list