From 0373ab459fd1cd25c1c702b1094e517543a52cc9 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Wed, 13 Mar 2019 18:38:51 +0000 Subject: [PATCH] bpf: implement decoding of BPF_MAP_LOOKUP_AND_DELETE_ELEM command BPF_MAP_LOOKUP_AND_DELETE_ELEM command was introduced by Linux commit v4.20-rc1~151^2~32^2~11^2~2. * bpf.c (decode_BPF_MAP_LOOKUP_AND_DELETE_ELEM): Alias to decode_BPF_MAP_LOOKUP_ELEM. (SYS_FUNC(bpf)) : Add BPF_CMD_ENTRY(BPF_MAP_LOOKUP_AND_DELETE_ELEM). * tests/bpf.c (BPF_MAP_LOOKUP_AND_DELETE_ELEM_checks): Alias to BPF_MAP_LOOKUP_ELEM_checks. (main) : Add CHK(BPF_MAP_LOOKUP_AND_DELETE_ELEM). --- bpf.c | 3 +++ tests/bpf.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/bpf.c b/bpf.c index 69c9a4f5..0bb02279 100644 --- a/bpf.c +++ b/bpf.c @@ -233,6 +233,8 @@ BEGIN_BPF_CMD_DECODER(BPF_MAP_LOOKUP_ELEM) } END_BPF_CMD_DECODER(RVAL_DECODED) +#define decode_BPF_MAP_LOOKUP_AND_DELETE_ELEM decode_BPF_MAP_LOOKUP_ELEM + BEGIN_BPF_CMD_DECODER(BPF_MAP_UPDATE_ELEM) { PRINT_FIELD_FD("{", attr, map_fd, tcp); @@ -866,6 +868,7 @@ SYS_FUNC(bpf) BPF_CMD_ENTRY(BPF_RAW_TRACEPOINT_OPEN), BPF_CMD_ENTRY(BPF_BTF_LOAD), BPF_CMD_ENTRY(BPF_BTF_GET_FD_BY_ID), + BPF_CMD_ENTRY(BPF_MAP_LOOKUP_AND_DELETE_ELEM), }; const unsigned int cmd = tcp->u_arg[0]; diff --git a/tests/bpf.c b/tests/bpf.c index 8f887fb0..5c04a825 100644 --- a/tests/bpf.c +++ b/tests/bpf.c @@ -441,6 +441,8 @@ static const struct bpf_attr_check BPF_MAP_LOOKUP_ELEM_checks[] = { } }; +#define BPF_MAP_LOOKUP_AND_DELETE_ELEM_checks BPF_MAP_LOOKUP_ELEM_checks + static const struct bpf_attr_check BPF_MAP_UPDATE_ELEM_checks[] = { { .data = { .BPF_MAP_UPDATE_ELEM_data = { .map_fd = -1 } }, @@ -1158,6 +1160,7 @@ main(void) CHK(BPF_RAW_TRACEPOINT_OPEN), CHK(BPF_BTF_LOAD), CHK(BPF_BTF_GET_FD_BY_ID), + CHK(BPF_MAP_LOOKUP_AND_DELETE_ELEM), }; page_size = get_page_size(); -- 2.40.0