Message ID | 20190416201347.200839-1-rdna@fb.com |
---|---|
State | Accepted |
Delegated to: | BPF Maintainers |
Headers | show |
Series | [bpf-next] bpftool: Support sysctl hook | expand |
> On Apr 16, 2019, at 1:13 PM, Andrey Ignatov <rdna@fb.com> wrote: > > 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> > --- > tools/bpf/bpftool/Documentation/bpftool-cgroup.rst | 5 +++-- > tools/bpf/bpftool/Documentation/bpftool-prog.rst | 3 ++- > tools/bpf/bpftool/bash-completion/bpftool | 7 ++++--- > tools/bpf/bpftool/cgroup.c | 3 ++- > tools/bpf/bpftool/main.h | 1 + > tools/bpf/bpftool/prog.c | 2 +- > 6 files changed, 13 insertions(+), 8 deletions(-) > > diff --git a/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst b/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst > index 5e3b7d9d7599..89b6b10e2183 100644 > --- a/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst > +++ b/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst > @@ -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 > diff --git a/tools/bpf/bpftool/Documentation/bpftool-prog.rst b/tools/bpf/bpftool/Documentation/bpftool-prog.rst > index bb9bb00c0c2c..2f183ffd8351 100644 > --- a/tools/bpf/bpftool/Documentation/bpftool-prog.rst > +++ b/tools/bpf/bpftool/Documentation/bpftool-prog.rst > @@ -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** > diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool > index b803827d01e8..9f3ffe1e26ab 100644 > --- a/tools/bpf/bpftool/bash-completion/bpftool > +++ b/tools/bpf/bpftool/bash-completion/bpftool > @@ -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 > diff --git a/tools/bpf/bpftool/cgroup.c b/tools/bpf/bpftool/cgroup.c > index a81b34343eb8..7e22f115c8c1 100644 > --- a/tools/bpf/bpftool/cgroup.c > +++ b/tools/bpf/bpftool/cgroup.c > @@ -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, > }; > > diff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h > index d7dd84d3c660..1ccc46169a19 100644 > --- a/tools/bpf/bpftool/main.h > +++ b/tools/bpf/bpftool/main.h > @@ -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[]; > diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c > index 4b7a307b9fc9..fc495b27f0fc 100644 > --- a/tools/bpf/bpftool/prog.c > +++ b/tools/bpf/bpftool/prog.c > @@ -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" > -- > 2.17.1 >
On Tue, 16 Apr 2019 13:13:47 -0700, Andrey Ignatov wrote: > 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: Jakub Kicinski <jakub.kicinski@netronome.com>
On Tue, Apr 16, 2019 at 1:13 PM Andrey Ignatov <rdna@fb.com> wrote: > > 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> Applied. Thanks
diff --git a/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst b/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst index 5e3b7d9d7599..89b6b10e2183 100644 --- a/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst +++ b/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst @@ -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 diff --git a/tools/bpf/bpftool/Documentation/bpftool-prog.rst b/tools/bpf/bpftool/Documentation/bpftool-prog.rst index bb9bb00c0c2c..2f183ffd8351 100644 --- a/tools/bpf/bpftool/Documentation/bpftool-prog.rst +++ b/tools/bpf/bpftool/Documentation/bpftool-prog.rst @@ -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** diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool index b803827d01e8..9f3ffe1e26ab 100644 --- a/tools/bpf/bpftool/bash-completion/bpftool +++ b/tools/bpf/bpftool/bash-completion/bpftool @@ -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 diff --git a/tools/bpf/bpftool/cgroup.c b/tools/bpf/bpftool/cgroup.c index a81b34343eb8..7e22f115c8c1 100644 --- a/tools/bpf/bpftool/cgroup.c +++ b/tools/bpf/bpftool/cgroup.c @@ -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, }; diff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h index d7dd84d3c660..1ccc46169a19 100644 --- a/tools/bpf/bpftool/main.h +++ b/tools/bpf/bpftool/main.h @@ -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[]; diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index 4b7a307b9fc9..fc495b27f0fc 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -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"
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> --- tools/bpf/bpftool/Documentation/bpftool-cgroup.rst | 5 +++-- tools/bpf/bpftool/Documentation/bpftool-prog.rst | 3 ++- tools/bpf/bpftool/bash-completion/bpftool | 7 ++++--- tools/bpf/bpftool/cgroup.c | 3 ++- tools/bpf/bpftool/main.h | 1 + tools/bpf/bpftool/prog.c | 2 +- 6 files changed, 13 insertions(+), 8 deletions(-)