bpftool: Support sysctl hook
Add support for recently added BPF_PROG_TYPE_CGROUP_SYSCTL program type
and BPF_CGROUP_SYSCTL attach type.
Example of bpftool output with sysctl program from selftests:
  # bpftool p load ./test_sysctl_prog.o /mnt/bpf/sysctl_prog type cgroup/sysctl
  # bpftool p l
  9: cgroup_sysctl  name sysctl_tcp_mem  tag 0dd05f81a8d0d52e  gpl
          loaded_at 2019-04-16T12:57:27-0700  uid 0
          xlated 1008B  jited 623B  memlock 4096B
  # bpftool c a /mnt/cgroup2/bla sysctl id 9
  # bpftool c t
  CgroupPath
  ID       AttachType      AttachFlags     Name
  /mnt/cgroup2/bla
      9        sysctl                          sysctl_tcp_mem
  # bpftool c d /mnt/cgroup2/bla sysctl id 9
  # bpftool c t
  CgroupPath
  ID       AttachType      AttachFlags     Name
Signed-off-by: Andrey Ignatov <rdna@fb.com>
Acked-by: Song Liu <songliubraving@fb.com>
Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
			
			
This commit is contained in:
		
							parent
							
								
									e1d1dc4653
								
							
						
					
					
						commit
						f25377ee4f
					
				| @ -29,7 +29,7 @@ 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** } | ||||
| |		**sendmsg4** | **sendmsg6** | **sysctl** } | ||||
| |	*ATTACH_FLAGS* := { **multi** | **override** } | ||||
| 
 | ||||
| DESCRIPTION | ||||
| @ -85,7 +85,8 @@ DESCRIPTION | ||||
| 		  **sendmsg4** call to sendto(2), sendmsg(2), sendmmsg(2) for an | ||||
| 		  unconnected udp4 socket (since 4.18); | ||||
| 		  **sendmsg6** call to sendto(2), sendmsg(2), sendmmsg(2) for an | ||||
| 		  unconnected udp6 socket (since 4.18). | ||||
| 		  unconnected udp6 socket (since 4.18); | ||||
| 		  **sysctl** sysctl access (since 5.2). | ||||
| 
 | ||||
| 	**bpftool cgroup detach** *CGROUP* *ATTACH_TYPE* *PROG* | ||||
| 		  Detach *PROG* from the cgroup *CGROUP* and attach type | ||||
|  | ||||
| @ -39,7 +39,8 @@ PROG COMMANDS | ||||
| |		**cgroup/sock** | **cgroup/dev** | **lwt_in** | **lwt_out** | **lwt_xmit** | | ||||
| |		**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/connect4** | **cgroup/connect6** | **cgroup/sendmsg4** | **cgroup/sendmsg6** | | ||||
| |		**cgroup/sysctl** | ||||
| |	} | ||||
| |       *ATTACH_TYPE* := { | ||||
| |		**msg_verdict** | **stream_verdict** | **stream_parser** | **flow_dissector** | ||||
|  | ||||
| @ -370,7 +370,8 @@ _bpftool() | ||||
|                                 lirc_mode2 cgroup/bind4 cgroup/bind6 \ | ||||
|                                 cgroup/connect4 cgroup/connect6 \ | ||||
|                                 cgroup/sendmsg4 cgroup/sendmsg6 \ | ||||
|                                 cgroup/post_bind4 cgroup/post_bind6" -- \ | ||||
|                                 cgroup/post_bind4 cgroup/post_bind6 \ | ||||
|                                 cgroup/sysctl" -- \ | ||||
|                                                    "$cur" ) ) | ||||
|                             return 0 | ||||
|                             ;; | ||||
| @ -619,7 +620,7 @@ _bpftool() | ||||
|                 attach|detach) | ||||
|                     local ATTACH_TYPES='ingress egress sock_create sock_ops \ | ||||
|                         device bind4 bind6 post_bind4 post_bind6 connect4 \ | ||||
|                         connect6 sendmsg4 sendmsg6' | ||||
|                         connect6 sendmsg4 sendmsg6 sysctl' | ||||
|                     local ATTACH_FLAGS='multi override' | ||||
|                     local PROG_TYPE='id pinned tag' | ||||
|                     case $prev in | ||||
| @ -629,7 +630,7 @@ _bpftool() | ||||
|                             ;; | ||||
|                         ingress|egress|sock_create|sock_ops|device|bind4|bind6|\ | ||||
|                         post_bind4|post_bind6|connect4|connect6|sendmsg4|\ | ||||
|                         sendmsg6) | ||||
|                         sendmsg6|sysctl) | ||||
|                             COMPREPLY=( $( compgen -W "$PROG_TYPE" -- \ | ||||
|                                 "$cur" ) ) | ||||
|                             return 0 | ||||
|  | ||||
| @ -25,7 +25,7 @@ | ||||
| 	"       ATTACH_TYPE := { ingress | egress | sock_create |\n"	       \ | ||||
| 	"                        sock_ops | device | bind4 | bind6 |\n"	       \ | ||||
| 	"                        post_bind4 | post_bind6 | connect4 |\n"       \ | ||||
| 	"                        connect6 | sendmsg4 | sendmsg6 }" | ||||
| 	"                        connect6 | sendmsg4 | sendmsg6 | sysctl }" | ||||
| 
 | ||||
| static const char * const attach_type_strings[] = { | ||||
| 	[BPF_CGROUP_INET_INGRESS] = "ingress", | ||||
| @ -41,6 +41,7 @@ static const char * const attach_type_strings[] = { | ||||
| 	[BPF_CGROUP_INET6_POST_BIND] = "post_bind6", | ||||
| 	[BPF_CGROUP_UDP4_SENDMSG] = "sendmsg4", | ||||
| 	[BPF_CGROUP_UDP6_SENDMSG] = "sendmsg6", | ||||
| 	[BPF_CGROUP_SYSCTL] = "sysctl", | ||||
| 	[__MAX_BPF_ATTACH_TYPE] = NULL, | ||||
| }; | ||||
| 
 | ||||
|  | ||||
| @ -73,6 +73,7 @@ static const char * const prog_type_name[] = { | ||||
| 	[BPF_PROG_TYPE_LIRC_MODE2]		= "lirc_mode2", | ||||
| 	[BPF_PROG_TYPE_SK_REUSEPORT]		= "sk_reuseport", | ||||
| 	[BPF_PROG_TYPE_FLOW_DISSECTOR]		= "flow_dissector", | ||||
| 	[BPF_PROG_TYPE_CGROUP_SYSCTL]		= "cgroup_sysctl", | ||||
| }; | ||||
| 
 | ||||
| extern const char * const map_type_name[]; | ||||
|  | ||||
| @ -1060,7 +1060,7 @@ static int do_help(int argc, char **argv) | ||||
| 		"                 tracepoint | raw_tracepoint | xdp | perf_event | cgroup/skb |\n" | ||||
| 		"                 cgroup/sock | cgroup/dev | lwt_in | lwt_out | lwt_xmit |\n" | ||||
| 		"                 lwt_seg6local | sockops | sk_skb | sk_msg | lirc_mode2 |\n" | ||||
| 		"                 sk_reuseport | flow_dissector |\n" | ||||
| 		"                 sk_reuseport | flow_dissector | cgroup/sysctl |\n" | ||||
| 		"                 cgroup/bind4 | cgroup/bind6 | cgroup/post_bind4 |\n" | ||||
| 		"                 cgroup/post_bind6 | cgroup/connect4 | cgroup/connect6 |\n" | ||||
| 		"                 cgroup/sendmsg4 | cgroup/sendmsg6 }\n" | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user