diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2022-04-27 16:21:45 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2022-04-27 17:43:05 +0200 |
| commit | 8a1f1f07b4d5c51a99e439c5b13b0cd8bb742856 (patch) | |
| tree | d36af787bbc16b9e0efae1c866ed280d57a78471 /sys/linux | |
| parent | d6b461d9bcc04628b6e782d80e373469bccef743 (diff) | |
sys/linux: make bpf_link_create_arg a template
Make bpf_link_create_arg a template so that it's possible to create more specialized versions.
Add a specialized version for XDP links. First, they need a special program type,
plus a special attach type and target fd is not an fd, but rather ifindex.
Diffstat (limited to 'sys/linux')
| -rw-r--r-- | sys/linux/bpf.txt | 20 | ||||
| -rw-r--r-- | sys/linux/bpf.txt.const | 5 | ||||
| -rw-r--r-- | sys/linux/dev_msr.txt.const | 1 |
3 files changed, 20 insertions, 6 deletions
diff --git a/sys/linux/bpf.txt b/sys/linux/bpf.txt index 11c028d4b..f700967a4 100644 --- a/sys/linux/bpf.txt +++ b/sys/linux/bpf.txt @@ -7,6 +7,7 @@ include <uapi/linux/bpf.h> include <uapi/linux/btf.h> +include <uapi/linux/if_link.h> resource fd_bpf_map[fd]: BPF_PSEUDO_MAP_FD resource fd_bpf_prog[fd] @@ -69,6 +70,13 @@ bpf$LINK_GET_NEXT_ID(cmd const[BPF_LINK_GET_NEXT_ID], arg ptr[inout, bpf_link_ge bpf$LINK_DETACH(cmd const[BPF_LINK_DETACH], arg ptr[in, fd_bpf_link], size len[arg]) bpf$PROG_BIND_MAP(cmd const[BPF_PROG_BIND_MAP], arg ptr[in, bpf_prog_bind_map_arg], size len[arg]) +resource fd_bpf_prog_xdp[fd_bpf_prog] +bpf$PROG_LOAD_XDP(cmd const[BPF_PROG_LOAD], arg ptr[in, bpf_prog_xdp], size len[arg]) fd_bpf_prog_xdp +bpf$BPF_LINK_CREATE_XDP(cmd const[BPF_LINK_CREATE], arg ptr[in, bpf_link_create_xdp], size len[arg]) fd_bpf_link +type bpf_prog_xdp bpf_prog_t[const[BPF_PROG_TYPE_XDP, int32], const[BPF_XDP, int32], const[0, int32], const[0, int32]] +type bpf_link_create_xdp bpf_link_create_arg_t[fd_bpf_prog_xdp, ifindex, const[BPF_XDP, int32], flags[xdp_flags, int32]] +xdp_flags = XDP_FLAGS_UPDATE_IF_NOEXIST, XDP_FLAGS_SKB_MODE, XDP_FLAGS_DRV_MODE, XDP_FLAGS_HW_MODE, XDP_FLAGS_REPLACE + bpf_map_create_arg [ base bpf_map_create_arg_base bloom_filter bpf_map_create_arg_bf @@ -161,13 +169,15 @@ bpf_map_batch_arg { flags const[0, int64] } -bpf_link_create_arg { - prog_fd fd_bpf_prog - target_fd fd_cgroup - attach_type flags[bpf_attach_types_link_create, int32] - flags const[0, int32] +type bpf_link_create_arg_t[PROG_FD, TARGET_FD, ATTACH_TYPE, FLAGS] { + prog_fd PROG_FD + target_fd TARGET_FD + attach_type ATTACH_TYPE + flags FLAGS } +type bpf_link_create_arg bpf_link_create_arg_t[fd_bpf_prog, fd_cgroup, flags[bpf_attach_types_link_create, int32], const[0, int32]] + bpf_link_update_arg { link_fd fd_bpf_link new_prog_fd fd_bpf_prog diff --git a/sys/linux/bpf.txt.const b/sys/linux/bpf.txt.const index 967221523..8fe5e1ac8 100644 --- a/sys/linux/bpf.txt.const +++ b/sys/linux/bpf.txt.const @@ -253,6 +253,11 @@ BTF_KIND_VOLATILE = 9 BTF_MAGIC = 60319 BTF_VERSION = 1 MAX_BPF_REG = 11 +XDP_FLAGS_DRV_MODE = 4 +XDP_FLAGS_HW_MODE = 8 +XDP_FLAGS_REPLACE = 16 +XDP_FLAGS_SKB_MODE = 2 +XDP_FLAGS_UPDATE_IF_NOEXIST = 1 __BPF_FUNC_MAX_ID = 194 __MAX_BPF_REG = 11 __NR_bpf = 280, 386:357, amd64:321, arm:386, mips64le:5315, ppc64le:361, s390x:351 diff --git a/sys/linux/dev_msr.txt.const b/sys/linux/dev_msr.txt.const index 6413bdb5b..8941369f7 100644 --- a/sys/linux/dev_msr.txt.const +++ b/sys/linux/dev_msr.txt.const @@ -2,6 +2,5 @@ arches = 386, amd64, arm, arm64, mips64le, ppc64le, riscv64, s390x O_RDONLY = 0 X86_IOC_RDMSR_REGS = 3223348128, arm:arm64:mips64le:ppc64le:riscv64:s390x:??? -X86_IOC_WRMSR_REGS = 3223348129, arm:arm64:mips64le:ppc64le:riscv64:s390x:??? __NR_ioctl = 54, amd64:16, arm64:riscv64:29, mips64le:5015 __NR_read = 3, amd64:0, arm64:riscv64:63, mips64le:5000 |
