bpftool: support cgroup sockopt
Support sockopt prog type and cgroup hooks in the bpftool. Cc: Andrii Nakryiko <andriin@fb.com> Cc: Martin Lau <kafai@fb.com> Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Stanislav Fomichev <sdf@google.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
Родитель
0c51b3697a
Коммит
f6d08d9d85
|
@ -29,7 +29,8 @@ CGROUP COMMANDS
|
||||||
| *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* }
|
| *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* }
|
||||||
| *ATTACH_TYPE* := { **ingress** | **egress** | **sock_create** | **sock_ops** | **device** |
|
| *ATTACH_TYPE* := { **ingress** | **egress** | **sock_create** | **sock_ops** | **device** |
|
||||||
| **bind4** | **bind6** | **post_bind4** | **post_bind6** | **connect4** | **connect6** |
|
| **bind4** | **bind6** | **post_bind4** | **post_bind6** | **connect4** | **connect6** |
|
||||||
| **sendmsg4** | **sendmsg6** | **recvmsg4** | **recvmsg6** | **sysctl** }
|
| **sendmsg4** | **sendmsg6** | **recvmsg4** | **recvmsg6** | **sysctl** |
|
||||||
|
| **getsockopt** | **setsockopt** }
|
||||||
| *ATTACH_FLAGS* := { **multi** | **override** }
|
| *ATTACH_FLAGS* := { **multi** | **override** }
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
|
@ -90,7 +91,9 @@ DESCRIPTION
|
||||||
an unconnected udp4 socket (since 5.2);
|
an unconnected udp4 socket (since 5.2);
|
||||||
**recvmsg6** call to recvfrom(2), recvmsg(2), recvmmsg(2) for
|
**recvmsg6** call to recvfrom(2), recvmsg(2), recvmmsg(2) for
|
||||||
an unconnected udp6 socket (since 5.2);
|
an unconnected udp6 socket (since 5.2);
|
||||||
**sysctl** sysctl access (since 5.2).
|
**sysctl** sysctl access (since 5.2);
|
||||||
|
**getsockopt** call to getsockopt (since 5.3);
|
||||||
|
**setsockopt** call to setsockopt (since 5.3).
|
||||||
|
|
||||||
**bpftool cgroup detach** *CGROUP* *ATTACH_TYPE* *PROG*
|
**bpftool cgroup detach** *CGROUP* *ATTACH_TYPE* *PROG*
|
||||||
Detach *PROG* from the cgroup *CGROUP* and attach type
|
Detach *PROG* from the cgroup *CGROUP* and attach type
|
||||||
|
|
|
@ -40,7 +40,8 @@ PROG COMMANDS
|
||||||
| **lwt_seg6local** | **sockops** | **sk_skb** | **sk_msg** | **lirc_mode2** |
|
| **lwt_seg6local** | **sockops** | **sk_skb** | **sk_msg** | **lirc_mode2** |
|
||||||
| **cgroup/bind4** | **cgroup/bind6** | **cgroup/post_bind4** | **cgroup/post_bind6** |
|
| **cgroup/bind4** | **cgroup/bind6** | **cgroup/post_bind4** | **cgroup/post_bind6** |
|
||||||
| **cgroup/connect4** | **cgroup/connect6** | **cgroup/sendmsg4** | **cgroup/sendmsg6** |
|
| **cgroup/connect4** | **cgroup/connect6** | **cgroup/sendmsg4** | **cgroup/sendmsg6** |
|
||||||
| **cgroup/recvmsg4** | **cgroup/recvmsg6** | **cgroup/sysctl**
|
| **cgroup/recvmsg4** | **cgroup/recvmsg6** | **cgroup/sysctl** |
|
||||||
|
| **cgroup/getsockopt** | **cgroup/setsockopt**
|
||||||
| }
|
| }
|
||||||
| *ATTACH_TYPE* := {
|
| *ATTACH_TYPE* := {
|
||||||
| **msg_verdict** | **stream_verdict** | **stream_parser** | **flow_dissector**
|
| **msg_verdict** | **stream_verdict** | **stream_parser** | **flow_dissector**
|
||||||
|
|
|
@ -379,7 +379,8 @@ _bpftool()
|
||||||
cgroup/sendmsg4 cgroup/sendmsg6 \
|
cgroup/sendmsg4 cgroup/sendmsg6 \
|
||||||
cgroup/recvmsg4 cgroup/recvmsg6 \
|
cgroup/recvmsg4 cgroup/recvmsg6 \
|
||||||
cgroup/post_bind4 cgroup/post_bind6 \
|
cgroup/post_bind4 cgroup/post_bind6 \
|
||||||
cgroup/sysctl" -- \
|
cgroup/sysctl cgroup/getsockopt \
|
||||||
|
cgroup/setsockopt" -- \
|
||||||
"$cur" ) )
|
"$cur" ) )
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
|
@ -689,7 +690,8 @@ _bpftool()
|
||||||
attach|detach)
|
attach|detach)
|
||||||
local ATTACH_TYPES='ingress egress sock_create sock_ops \
|
local ATTACH_TYPES='ingress egress sock_create sock_ops \
|
||||||
device bind4 bind6 post_bind4 post_bind6 connect4 \
|
device bind4 bind6 post_bind4 post_bind6 connect4 \
|
||||||
connect6 sendmsg4 sendmsg6 recvmsg4 recvmsg6 sysctl'
|
connect6 sendmsg4 sendmsg6 recvmsg4 recvmsg6 sysctl \
|
||||||
|
getsockopt setsockopt'
|
||||||
local ATTACH_FLAGS='multi override'
|
local ATTACH_FLAGS='multi override'
|
||||||
local PROG_TYPE='id pinned tag'
|
local PROG_TYPE='id pinned tag'
|
||||||
case $prev in
|
case $prev in
|
||||||
|
@ -699,7 +701,8 @@ _bpftool()
|
||||||
;;
|
;;
|
||||||
ingress|egress|sock_create|sock_ops|device|bind4|bind6|\
|
ingress|egress|sock_create|sock_ops|device|bind4|bind6|\
|
||||||
post_bind4|post_bind6|connect4|connect6|sendmsg4|\
|
post_bind4|post_bind6|connect4|connect6|sendmsg4|\
|
||||||
sendmsg6|recvmsg4|recvmsg6|sysctl)
|
sendmsg6|recvmsg4|recvmsg6|sysctl|getsockopt|\
|
||||||
|
setsockopt)
|
||||||
COMPREPLY=( $( compgen -W "$PROG_TYPE" -- \
|
COMPREPLY=( $( compgen -W "$PROG_TYPE" -- \
|
||||||
"$cur" ) )
|
"$cur" ) )
|
||||||
return 0
|
return 0
|
||||||
|
|
|
@ -26,7 +26,8 @@
|
||||||
" sock_ops | device | bind4 | bind6 |\n" \
|
" sock_ops | device | bind4 | bind6 |\n" \
|
||||||
" post_bind4 | post_bind6 | connect4 |\n" \
|
" post_bind4 | post_bind6 | connect4 |\n" \
|
||||||
" connect6 | sendmsg4 | sendmsg6 |\n" \
|
" connect6 | sendmsg4 | sendmsg6 |\n" \
|
||||||
" recvmsg4 | recvmsg6 | sysctl }"
|
" recvmsg4 | recvmsg6 | sysctl |\n" \
|
||||||
|
" getsockopt | setsockopt }"
|
||||||
|
|
||||||
static const char * const attach_type_strings[] = {
|
static const char * const attach_type_strings[] = {
|
||||||
[BPF_CGROUP_INET_INGRESS] = "ingress",
|
[BPF_CGROUP_INET_INGRESS] = "ingress",
|
||||||
|
@ -45,6 +46,8 @@ static const char * const attach_type_strings[] = {
|
||||||
[BPF_CGROUP_SYSCTL] = "sysctl",
|
[BPF_CGROUP_SYSCTL] = "sysctl",
|
||||||
[BPF_CGROUP_UDP4_RECVMSG] = "recvmsg4",
|
[BPF_CGROUP_UDP4_RECVMSG] = "recvmsg4",
|
||||||
[BPF_CGROUP_UDP6_RECVMSG] = "recvmsg6",
|
[BPF_CGROUP_UDP6_RECVMSG] = "recvmsg6",
|
||||||
|
[BPF_CGROUP_GETSOCKOPT] = "getsockopt",
|
||||||
|
[BPF_CGROUP_SETSOCKOPT] = "setsockopt",
|
||||||
[__MAX_BPF_ATTACH_TYPE] = NULL,
|
[__MAX_BPF_ATTACH_TYPE] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,7 @@ static const char * const prog_type_name[] = {
|
||||||
[BPF_PROG_TYPE_SK_REUSEPORT] = "sk_reuseport",
|
[BPF_PROG_TYPE_SK_REUSEPORT] = "sk_reuseport",
|
||||||
[BPF_PROG_TYPE_FLOW_DISSECTOR] = "flow_dissector",
|
[BPF_PROG_TYPE_FLOW_DISSECTOR] = "flow_dissector",
|
||||||
[BPF_PROG_TYPE_CGROUP_SYSCTL] = "cgroup_sysctl",
|
[BPF_PROG_TYPE_CGROUP_SYSCTL] = "cgroup_sysctl",
|
||||||
|
[BPF_PROG_TYPE_CGROUP_SOCKOPT] = "cgroup_sockopt",
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const char * const map_type_name[];
|
extern const char * const map_type_name[];
|
||||||
|
|
|
@ -1071,7 +1071,8 @@ static int do_help(int argc, char **argv)
|
||||||
" cgroup/bind4 | cgroup/bind6 | cgroup/post_bind4 |\n"
|
" cgroup/bind4 | cgroup/bind6 | cgroup/post_bind4 |\n"
|
||||||
" cgroup/post_bind6 | cgroup/connect4 | cgroup/connect6 |\n"
|
" cgroup/post_bind6 | cgroup/connect4 | cgroup/connect6 |\n"
|
||||||
" cgroup/sendmsg4 | cgroup/sendmsg6 | cgroup/recvmsg4 |\n"
|
" cgroup/sendmsg4 | cgroup/sendmsg6 | cgroup/recvmsg4 |\n"
|
||||||
" cgroup/recvmsg6 }\n"
|
" cgroup/recvmsg6 | cgroup/getsockopt |\n"
|
||||||
|
" cgroup/setsockopt }\n"
|
||||||
" ATTACH_TYPE := { msg_verdict | stream_verdict | stream_parser |\n"
|
" ATTACH_TYPE := { msg_verdict | stream_verdict | stream_parser |\n"
|
||||||
" flow_dissector }\n"
|
" flow_dissector }\n"
|
||||||
" " HELP_SPEC_OPTIONS "\n"
|
" " HELP_SPEC_OPTIONS "\n"
|
||||||
|
|
Загрузка…
Ссылка в новой задаче