diff options
Diffstat (limited to 'sys/linux')
| -rw-r--r-- | sys/linux/bpf.txt | 6 | ||||
| -rw-r--r-- | sys/linux/bpf_prog.txt | 44 | ||||
| -rw-r--r-- | sys/linux/bpf_prog.txt.const | 36 | ||||
| -rw-r--r-- | sys/linux/test/bpf_cgroup | 2 | ||||
| -rw-r--r-- | sys/linux/test/bpf_helpers | 12 |
5 files changed, 89 insertions, 11 deletions
diff --git a/sys/linux/bpf.txt b/sys/linux/bpf.txt index 28e15f7d2..b373afbd1 100644 --- a/sys/linux/bpf.txt +++ b/sys/linux/bpf.txt @@ -429,7 +429,7 @@ define BPF_F_LINK_OR_ID BPF_F_LINK | BPF_F_ID bpf_attach_arg { target bpf_attach_targets attach_bpf_fd fd_bpf_prog - type flags[bpf_attach_type, int32] + type flags[bpf_attach_types, int32] flags flags[bpf_attach_flags, int32] replace_bpf_fd fd_bpf_prog relative_link_fd fd_bpf_link (if[value[flags] & BPF_F_LINK_OR_ID == BPF_F_LINK]) @@ -442,7 +442,7 @@ bpf_attach_arg { bpf_detach_arg { target bpf_attach_targets prog fd_bpf_prog - type flags[bpf_attach_type, int32] + type flags[bpf_attach_types, int32] flags flags[bpf_mprog_attach_flags, int32] replace_bpf_fd const[0, int32] relative_link_fd fd_bpf_link (if[value[flags] & BPF_F_LINK_OR_ID == BPF_F_LINK]) @@ -822,7 +822,7 @@ bpf_map_flags = BPF_ANY, BPF_NOEXIST, BPF_EXIST, BPF_F_LOCK bpf_lookup_flags = BPF_F_LOCK bpf_prog_type = BPF_PROG_TYPE_SOCKET_FILTER, BPF_PROG_TYPE_KPROBE, BPF_PROG_TYPE_SCHED_CLS, BPF_PROG_TYPE_SCHED_ACT, BPF_PROG_TYPE_TRACEPOINT, BPF_PROG_TYPE_XDP, BPF_PROG_TYPE_PERF_EVENT, BPF_PROG_TYPE_CGROUP_SKB, BPF_PROG_TYPE_CGROUP_SOCK, BPF_PROG_TYPE_LWT_IN, BPF_PROG_TYPE_LWT_OUT, BPF_PROG_TYPE_LWT_XMIT, BPF_PROG_TYPE_SOCK_OPS, BPF_PROG_TYPE_SK_SKB, BPF_PROG_TYPE_CGROUP_DEVICE, BPF_PROG_TYPE_SK_MSG, BPF_PROG_TYPE_RAW_TRACEPOINT, BPF_PROG_TYPE_CGROUP_SOCK_ADDR, BPF_PROG_TYPE_LWT_SEG6LOCAL, BPF_PROG_TYPE_LIRC_MODE2, BPF_PROG_TYPE_SK_REUSEPORT, BPF_PROG_TYPE_FLOW_DISSECTOR, BPF_PROG_TYPE_CGROUP_SYSCTL, BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE, BPF_PROG_TYPE_CGROUP_SOCKOPT, BPF_PROG_TYPE_TRACING, BPF_PROG_TYPE_EXT, BPF_PROG_TYPE_STRUCT_OPS, BPF_PROG_TYPE_LSM, BPF_PROG_TYPE_SK_LOOKUP, BPF_PROG_TYPE_SYSCALL, BPF_PROG_TYPE_NETFILTER map_flags = BPF_F_NO_PREALLOC, BPF_F_NO_COMMON_LRU, BPF_F_NUMA_NODE, BPF_F_RDONLY, BPF_F_WRONLY, BPF_F_STACK_BUILD_ID, BPF_F_ZERO_SEED, BPF_F_RDONLY_PROG, BPF_F_WRONLY_PROG, BPF_F_CLONE, BPF_F_MMAPABLE, BPF_F_INNER_MAP, BPF_F_PRESERVE_ELEMS, BPF_F_LINK, BPF_F_PATH_FD, BPF_F_VTYPE_BTF_OBJ_FD, BPF_F_TOKEN_FD, BPF_F_SEGV_ON_FAULT, BPF_F_NO_USER_CONV -bpf_attach_type = BPF_XDP_DEVMAP, BPF_XDP_CPUMAP, BPF_SK_REUSEPORT_SELECT, BPF_SK_REUSEPORT_SELECT_OR_MIGRATE, BPF_PERF_EVENT, BPF_TRACE_KPROBE_MULTI, BPF_STRUCT_OPS, BPF_NETFILTER, BPF_TRACE_UPROBE_MULTI, BPF_TRACE_KPROBE_SESSION, bpf_attach_types_link_create +bpf_attach_types = BPF_XDP_DEVMAP, BPF_XDP_CPUMAP, BPF_SK_REUSEPORT_SELECT, BPF_SK_REUSEPORT_SELECT_OR_MIGRATE, BPF_PERF_EVENT, BPF_TRACE_KPROBE_MULTI, BPF_STRUCT_OPS, BPF_NETFILTER, BPF_TRACE_UPROBE_MULTI, BPF_TRACE_KPROBE_SESSION, bpf_attach_types_link_create bpf_attach_types_link_create = BPF_CGROUP_INET_INGRESS, BPF_CGROUP_INET_EGRESS, BPF_CGROUP_INET_SOCK_CREATE, BPF_CGROUP_INET4_POST_BIND, BPF_CGROUP_INET6_POST_BIND, BPF_CGROUP_INET4_BIND, BPF_CGROUP_INET6_BIND, BPF_CGROUP_INET4_CONNECT, BPF_CGROUP_INET6_CONNECT, BPF_CGROUP_UDP4_SENDMSG, BPF_CGROUP_UDP6_SENDMSG, BPF_CGROUP_UDP4_RECVMSG, BPF_CGROUP_UDP6_RECVMSG, BPF_CGROUP_SOCK_OPS, BPF_CGROUP_DEVICE, BPF_SK_MSG_VERDICT, BPF_SK_SKB_STREAM_PARSER, BPF_SK_SKB_STREAM_VERDICT, BPF_LIRC_MODE2, BPF_FLOW_DISSECTOR, BPF_CGROUP_SYSCTL, BPF_CGROUP_GETSOCKOPT, BPF_CGROUP_SETSOCKOPT, BPF_CGROUP_INET4_GETPEERNAME, BPF_CGROUP_INET4_GETSOCKNAME, BPF_CGROUP_INET6_GETPEERNAME, BPF_CGROUP_INET6_GETSOCKNAME, BPF_TRACE_ITER, BPF_CGROUP_INET_SOCK_RELEASE, BPF_SK_LOOKUP, BPF_XDP, BPF_SK_SKB_VERDICT, BPF_LSM_CGROUP, BPF_LSM_MAC, BPF_MODIFY_RETURN, BPF_TRACE_FENTRY, BPF_TRACE_FEXIT, BPF_TRACE_RAW_TP, BPF_TCX_EGRESS, BPF_TCX_INGRESS, BPF_NETKIT_PRIMARY, BPF_NETKIT_PEER, BPF_CGROUP_UNIX_CONNECT, BPF_CGROUP_UNIX_SENDMSG, BPF_CGROUP_UNIX_RECVMSG, BPF_CGROUP_UNIX_GETPEERNAME, BPF_CGROUP_UNIX_GETSOCKNAME bpf_prog_load_flags = BPF_F_STRICT_ALIGNMENT, BPF_F_ANY_ALIGNMENT, BPF_F_TEST_RND_HI32, BPF_F_TEST_STATE_FREQ, BPF_F_SLEEPABLE, BPF_F_XDP_DEV_BOUND_ONLY, BPF_F_XDP_HAS_FRAGS bpf_mprog_attach_flags = BPF_F_REPLACE, BPF_F_BEFORE, BPF_F_AFTER, BPF_F_ID, BPF_F_LINK diff --git a/sys/linux/bpf_prog.txt b/sys/linux/bpf_prog.txt index 5681c253a..82ae0b217 100644 --- a/sys/linux/bpf_prog.txt +++ b/sys/linux/bpf_prog.txt @@ -39,7 +39,49 @@ type bpf_prog_t[TYPE, ATTACH_TYPE, BTF_ID, PROG_FD] { pad const[0, int32] (if[value[flags] & BPF_F_TOKEN_FD == 0]) } [packed] -type bpf_prog bpf_prog_t[flags[bpf_prog_type, int32], flags[bpf_attach_type, int32], bpf_btf_id[opt], fd_bpf_prog[opt]] +# These flags should match the mappings in bpf_prog_load_check_attach and attach_type_to_prog_type upstream. +cgroup_sock_attach_types = BPF_CGROUP_INET_SOCK_CREATE, BPF_CGROUP_INET_SOCK_RELEASE, BPF_CGROUP_INET4_POST_BIND, BPF_CGROUP_INET6_POST_BIND +cgroup_sock_addr_attach_types = BPF_CGROUP_INET4_BIND, BPF_CGROUP_INET6_BIND, BPF_CGROUP_INET4_CONNECT, BPF_CGROUP_INET6_CONNECT, BPF_CGROUP_UNIX_CONNECT, BPF_CGROUP_INET4_GETPEERNAME, BPF_CGROUP_INET6_GETPEERNAME, BPF_CGROUP_UNIX_GETPEERNAME, BPF_CGROUP_INET4_GETSOCKNAME, BPF_CGROUP_INET6_GETSOCKNAME, BPF_CGROUP_UNIX_GETSOCKNAME, BPF_CGROUP_UDP4_SENDMSG, BPF_CGROUP_UDP6_SENDMSG, BPF_CGROUP_UNIX_SENDMSG, BPF_CGROUP_UDP4_RECVMSG, BPF_CGROUP_UDP6_RECVMSG, BPF_CGROUP_UNIX_RECVMSG +cgroup_skb_attach_types = BPF_CGROUP_INET_INGRESS, BPF_CGROUP_INET_EGRESS +cgroup_sockopt_attach_types = BPF_CGROUP_SETSOCKOPT, BPF_CGROUP_GETSOCKOPT +sk_lookup_attach_types = BPF_SK_LOOKUP +sk_reuseport_attach_types = BPF_SK_REUSEPORT_SELECT, BPF_SK_REUSEPORT_SELECT_OR_MIGRATE +netfilter_attach_types = BPF_NETFILTER +sock_ops_attach_types = BPF_CGROUP_SOCK_OPS +cgroup_device_attach_types = BPF_CGROUP_DEVICE +sk_msg_attach_types = BPF_SK_MSG_VERDICT +sk_skb_attach_types = BPF_SK_SKB_STREAM_PARSER, BPF_SK_SKB_STREAM_VERDICT, BPF_SK_SKB_VERDICT +lirc_mode2_attach_types = BPF_LIRC_MODE2 +flow_dissector_attach_types = BPF_FLOW_DISSECTOR +cgroup_sysctl_attach_types = BPF_CGROUP_SYSCTL +tracing_attach_types = BPF_TRACE_ITER, BPF_TRACE_RAW_TP, BPF_TRACE_FENTRY, BPF_TRACE_FEXIT, BPF_MODIFY_RETURN +lsm_attach_types = BPF_LSM_MAC, BPF_LSM_CGROUP +xdp_attach_types = BPF_XDP +sched_cls_attach_types = BPF_TCX_INGRESS, BPF_TCX_EGRESS, BPF_NETKIT_PRIMARY, BPF_NETKIT_PEER + +bpf_prog_attach_types [ + cgroup_sock flags[cgroup_sock_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_CGROUP_SOCK]) + cgroup_sock_addr flags[cgroup_sock_addr_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_CGROUP_SOCK_ADDR]) + cgroup_skb flags[cgroup_skb_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_CGROUP_SKB]) + cgroup_sockopt flags[cgroup_sockopt_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_CGROUP_SOCKOPT]) + sk_lookup flags[sk_lookup_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_SK_LOOKUP]) + sk_reuseport flags[sk_reuseport_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_SK_REUSEPORT]) + netfilter flags[netfilter_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_NETFILTER]) + sock_ops flags[sock_ops_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_SOCK_OPS]) + cgroup_device flags[cgroup_device_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_CGROUP_DEVICE]) + sk_msg flags[sk_msg_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_SK_MSG]) + sk_skb flags[sk_skb_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_SK_SKB]) + lirc_mode2 flags[lirc_mode2_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_LIRC_MODE2]) + flow_dissector flags[flow_dissector_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_FLOW_DISSECTOR]) + cgroup_sysctl flags[cgroup_sysctl_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_CGROUP_SYSCTL]) + tracing flags[tracing_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_TRACING]) + lsm flags[lsm_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_LSM]) + xdp flags[xdp_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_XDP]) + sched_cls flags[sched_cls_attach_types, int32] (if[value[bpf_prog_t:type] == BPF_PROG_TYPE_SCHED_CLS]) + fallback flags[bpf_attach_types, int32] +] + +type bpf_prog bpf_prog_t[flags[bpf_prog_type, int32], bpf_prog_attach_types, bpf_btf_id[opt], fd_bpf_prog[opt]] bpf_licenses = "GPL", "syzkaller" bpf_kern_version = 0x40f00, 0x41000, 0x41100 diff --git a/sys/linux/bpf_prog.txt.const b/sys/linux/bpf_prog.txt.const index e9a276f11..bf536a058 100644 --- a/sys/linux/bpf_prog.txt.const +++ b/sys/linux/bpf_prog.txt.const @@ -8,6 +8,31 @@ BPF_AND0 = 5 BPF_ARSH0 = 12 BPF_B0 = 2 BPF_CALL0 = 8 +BPF_CGROUP_GETSOCKOPT = 21 +BPF_CGROUP_INET4_BIND = 8 +BPF_CGROUP_INET4_CONNECT = 10 +BPF_CGROUP_INET4_GETPEERNAME = 29 +BPF_CGROUP_INET4_GETSOCKNAME = 31 +BPF_CGROUP_INET4_POST_BIND = 12 +BPF_CGROUP_INET6_BIND = 9 +BPF_CGROUP_INET6_CONNECT = 11 +BPF_CGROUP_INET6_GETPEERNAME = 30 +BPF_CGROUP_INET6_GETSOCKNAME = 32 +BPF_CGROUP_INET6_POST_BIND = 13 +BPF_CGROUP_INET_EGRESS = 1 +BPF_CGROUP_INET_INGRESS = 0 +BPF_CGROUP_INET_SOCK_CREATE = 2 +BPF_CGROUP_INET_SOCK_RELEASE = 34 +BPF_CGROUP_SETSOCKOPT = 22 +BPF_CGROUP_UDP4_RECVMSG = 19 +BPF_CGROUP_UDP4_SENDMSG = 14 +BPF_CGROUP_UDP6_RECVMSG = 20 +BPF_CGROUP_UDP6_SENDMSG = 15 +BPF_CGROUP_UNIX_CONNECT = 49 +BPF_CGROUP_UNIX_GETPEERNAME = 52 +BPF_CGROUP_UNIX_GETSOCKNAME = 53 +BPF_CGROUP_UNIX_RECVMSG = 51 +BPF_CGROUP_UNIX_SENDMSG = 50 BPF_CORE_RELO_SIZE = 16 BPF_DIV0 = 3 BPF_DW0 = 3 @@ -50,8 +75,16 @@ BPF_MOD0 = 9 BPF_MOV0 = 11 BPF_MUL0 = 2 BPF_NEG0 = 8 +BPF_NETFILTER = 45 BPF_OBJ_NAME_LEN = 16 BPF_OR0 = 4 +BPF_PROG_TYPE_CGROUP_SKB = 8 +BPF_PROG_TYPE_CGROUP_SOCK = 9 +BPF_PROG_TYPE_CGROUP_SOCKOPT = 25 +BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 18 +BPF_PROG_TYPE_NETFILTER = 32 +BPF_PROG_TYPE_SK_LOOKUP = 30 +BPF_PROG_TYPE_SK_REUSEPORT = 21 BPF_PSEUDO_BTF_ID = 3 BPF_PSEUDO_CALL = 1 BPF_PSEUDO_FUNC = 4 @@ -74,6 +107,9 @@ BPF_REG_7 = 7 BPF_REG_8 = 8 BPF_REG_9 = 9 BPF_RSH0 = 7 +BPF_SK_LOOKUP = 36 +BPF_SK_REUSEPORT_SELECT = 39 +BPF_SK_REUSEPORT_SELECT_OR_MIGRATE = 40 BPF_ST = 2 BPF_STX = 3 BPF_SUB0 = 1 diff --git a/sys/linux/test/bpf_cgroup b/sys/linux/test/bpf_cgroup index 1ec4c55a9..e87ecdbc5 100644 --- a/sys/linux/test/bpf_cgroup +++ b/sys/linux/test/bpf_cgroup @@ -6,7 +6,7 @@ r1 = write$tcp_congestion(r0, &AUTO='reno\x00', AUTO) # Now, load a BPF_PROG_TYPE_CGROUP_SYSCTL that simply returns 0, which will block all writes to /proc/sys -r2 = bpf$PROG_LOAD(AUTO, &AUTO={0x17, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) +r2 = bpf$PROG_LOAD(AUTO, &AUTO={0x17, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, @cgroup_sysctl=0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) r3 = openat(0xffffffffffffff9c, &AUTO='./cgroup\x00', 0x0, 0x0) diff --git a/sys/linux/test/bpf_helpers b/sys/linux/test/bpf_helpers index 0ff7e4c0d..43a5601c4 100644 --- a/sys/linux/test/bpf_helpers +++ b/sys/linux/test/bpf_helpers @@ -1,6 +1,6 @@ # bpf_trace_printk -r1 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [@printk={@d=AUTO, AUTO, AUTO, AUTO, AUTO, {AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, 0x1234}, AUTO}], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) +r1 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [@printk={@d=AUTO, AUTO, AUTO, AUTO, AUTO, {AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, 0x1234}, AUTO}], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, @sched_cls=0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) # bpf_snprintf @@ -8,25 +8,25 @@ r1 = bpf$MAP_CREATE_CONST_STR(AUTO, &AUTO={AUTO, AUTO, AUTO, AUTO, AUTO, 0x0, 0x r2 = bpf$MAP_UPDATE_CONST_STR(AUTO, &AUTO={{r1, r1}, &AUTO=0x0, &AUTO='%-010d \x00', AUTO}, 0x1c) r3 = bpf$BPF_MAP_CONST_STR_FREEZE(AUTO, &AUTO={r1, r1}, 0x4) -r4 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [@snprintf={AUTO, AUTO, {AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, 0x1234}, AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, {AUTO, AUTO, AUTO, AUTO, r1, AUTO, AUTO, AUTO, AUTO}, AUTO, AUTO}], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) +r4 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [@snprintf={AUTO, AUTO, {AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, 0x1234}, AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, {AUTO, AUTO, AUTO, AUTO, r1, AUTO, AUTO, AUTO, AUTO}, AUTO, AUTO}], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, @sched_cls=0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) # bpf_tail_call r10 = bpf$MAP_CREATE_TAIL_CALL(AUTO, &AUTO={AUTO, AUTO, AUTO, AUTO, AUTO, 0x0, 0x0, "00000000000000000000000000000000", 0x0, 0x0, 0x0, 0x0, 0x0, AUTO, @void, @value=AUTO, @void, @value=AUTO}, 0x48) r11 = bpf$MAP_UPDATE_ELEM_TAIL_CALL(AUTO, &AUTO={{r10, r10}, &AUTO=0x0, &AUTO=r4, AUTO}, 0x1c) -r4 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [@tail_call={{AUTO, AUTO, AUTO, AUTO, r10, AUTO, AUTO, AUTO, AUTO}, AUTO, AUTO, AUTO}], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) +r4 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [@tail_call={{AUTO, AUTO, AUTO, AUTO, r10, AUTO, AUTO, AUTO, AUTO}, AUTO, AUTO, AUTO}], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, @sched_cls=0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) # bpf_ringbuf_reserve and bpf_ringbuf_submit r1 = bpf$MAP_CREATE_RINGBUF(AUTO, &AUTO={AUTO, AUTO, AUTO, 0x40000, AUTO, 0x0, 0x0, "00000000000000000000000000000000", 0x0, 0x0, 0x0, 0x0, 0x0, AUTO, @void, @value=AUTO, @void, @value=AUTO}, 0x48) -r2 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@ringbuf={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, {{AUTO, AUTO, AUTO, AUTO, r1, AUTO, AUTO, AUTO, AUTO}, AUTO, AUTO, AUTO, AUTO}, AUTO, [], {AUTO, {AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, 0x1}, {AUTO, AUTO, AUTO, 0x84}, AUTO}, AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) +r2 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@ringbuf={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, {{AUTO, AUTO, AUTO, AUTO, r1, AUTO, AUTO, AUTO, AUTO}, AUTO, AUTO, AUTO, AUTO}, AUTO, [], {AUTO, {AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, 0x1}, {AUTO, AUTO, AUTO, 0x84}, AUTO}, AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, @sched_cls=0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) # bpf_ringbuf_query -r3 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [@ringbuf_query={{AUTO, AUTO, AUTO, AUTO, r1, AUTO, AUTO, AUTO, AUTO}, AUTO, AUTO}], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) +r3 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [@ringbuf_query={{AUTO, AUTO, AUTO, AUTO, r1, AUTO, AUTO, AUTO, AUTO}, AUTO, AUTO}], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, @sched_cls=0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) # bpf_ringbuf_output -r3 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [@ringbuf_output={{AUTO, AUTO, AUTO, AUTO, r1, AUTO, AUTO, AUTO, AUTO}, {AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, 0x1234}, AUTO, AUTO, AUTO, AUTO, {AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, 0x2}, AUTO}], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) +r3 = bpf$PROG_LOAD(AUTO, &AUTO={0x3, AUTO, &AUTO=@framed={{AUTO, AUTO, AUTO, AUTO, 0x0, AUTO, AUTO, AUTO, 0x0}, [@ringbuf_output={{AUTO, AUTO, AUTO, AUTO, r1, AUTO, AUTO, AUTO, AUTO}, {AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, 0x1234}, AUTO, AUTO, AUTO, AUTO, {AUTO, AUTO, AUTO, AUTO, AUTO, AUTO, 0x2}, AUTO}], AUTO}, &AUTO='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, "00000000000000000000000000000000", 0x0, @sched_cls=0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, @void, @value=AUTO}, 0xa0) |
