Commit f6d08d9d authored by Stanislav Fomichev's avatar Stanislav Fomichev Committed by Alexei Starovoitov
Browse files

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: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarStanislav Fomichev <sdf@google.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 0c51b369
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -29,7 +29,8 @@ CGROUP COMMANDS
|	*PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* }
|	*ATTACH_TYPE* := { **ingress** | **egress** | **sock_create** | **sock_ops** | **device** |
|		**bind4** | **bind6** | **post_bind4** | **post_bind6** | **connect4** | **connect6** |
|		**sendmsg4** | **sendmsg6** | **recvmsg4** | **recvmsg6** | **sysctl** }
|		**sendmsg4** | **sendmsg6** | **recvmsg4** | **recvmsg6** | **sysctl** |
|		**getsockopt** | **setsockopt** }
|	*ATTACH_FLAGS* := { **multi** | **override** }

DESCRIPTION
@@ -90,7 +91,9 @@ DESCRIPTION
                  an unconnected udp4 socket (since 5.2);
		  **recvmsg6** call to recvfrom(2), recvmsg(2), recvmmsg(2) for
                  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*
		  Detach *PROG* from the cgroup *CGROUP* and attach type
+2 −1
Original line number Diff line number Diff line
@@ -40,7 +40,8 @@ PROG COMMANDS
|		**lwt_seg6local** | **sockops** | **sk_skb** | **sk_msg** | **lirc_mode2** |
|		**cgroup/bind4** | **cgroup/bind6** | **cgroup/post_bind4** | **cgroup/post_bind6** |
|		**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* := {
|		**msg_verdict** | **stream_verdict** | **stream_parser** | **flow_dissector**
+6 −3
Original line number Diff line number Diff line
@@ -379,7 +379,8 @@ _bpftool()
                                cgroup/sendmsg4 cgroup/sendmsg6 \
                                cgroup/recvmsg4 cgroup/recvmsg6 \
                                cgroup/post_bind4 cgroup/post_bind6 \
                                cgroup/sysctl" -- \
                                cgroup/sysctl cgroup/getsockopt \
                                cgroup/setsockopt" -- \
                                                   "$cur" ) )
                            return 0
                            ;;
@@ -689,7 +690,8 @@ _bpftool()
                attach|detach)
                    local ATTACH_TYPES='ingress egress sock_create sock_ops \
                        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 PROG_TYPE='id pinned tag'
                    case $prev in
@@ -699,7 +701,8 @@ _bpftool()
                            ;;
                        ingress|egress|sock_create|sock_ops|device|bind4|bind6|\
                        post_bind4|post_bind6|connect4|connect6|sendmsg4|\
                        sendmsg6|recvmsg4|recvmsg6|sysctl)
                        sendmsg6|recvmsg4|recvmsg6|sysctl|getsockopt|\
                        setsockopt)
                            COMPREPLY=( $( compgen -W "$PROG_TYPE" -- \
                                "$cur" ) )
                            return 0
+4 −1
Original line number Diff line number Diff line
@@ -26,7 +26,8 @@
	"                        sock_ops | device | bind4 | bind6 |\n"	       \
	"                        post_bind4 | post_bind6 | connect4 |\n"       \
	"                        connect6 | sendmsg4 | sendmsg6 |\n"           \
	"                        recvmsg4 | recvmsg6 | sysctl }"
	"                        recvmsg4 | recvmsg6 | sysctl |\n"	       \
	"                        getsockopt | setsockopt }"

static const char * const attach_type_strings[] = {
	[BPF_CGROUP_INET_INGRESS] = "ingress",
@@ -45,6 +46,8 @@ static const char * const attach_type_strings[] = {
	[BPF_CGROUP_SYSCTL] = "sysctl",
	[BPF_CGROUP_UDP4_RECVMSG] = "recvmsg4",
	[BPF_CGROUP_UDP6_RECVMSG] = "recvmsg6",
	[BPF_CGROUP_GETSOCKOPT] = "getsockopt",
	[BPF_CGROUP_SETSOCKOPT] = "setsockopt",
	[__MAX_BPF_ATTACH_TYPE] = NULL,
};

+1 −0
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ static const char * const prog_type_name[] = {
	[BPF_PROG_TYPE_SK_REUSEPORT]		= "sk_reuseport",
	[BPF_PROG_TYPE_FLOW_DISSECTOR]		= "flow_dissector",
	[BPF_PROG_TYPE_CGROUP_SYSCTL]		= "cgroup_sysctl",
	[BPF_PROG_TYPE_CGROUP_SOCKOPT]		= "cgroup_sockopt",
};

extern const char * const map_type_name[];
Loading