OSDN Git Service

bpf: Support socket lookup in CGROUP_SOCK_ADDR progs
authorAndrey Ignatov <rdna@fb.com>
Fri, 9 Nov 2018 18:54:01 +0000 (10:54 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Sat, 17 Nov 2018 01:54:29 +0000 (17:54 -0800)
commit6c49e65e0d462963b4fac97ebd87014342167027
tree849fe73b6599a012d371d6dcf792877cd7953f7a
parentcac6cc2f5ac710334ae0f6bba5630d791c253574
bpf: Support socket lookup in CGROUP_SOCK_ADDR progs

Make bpf_sk_lookup_tcp, bpf_sk_lookup_udp and bpf_sk_release helpers
available in programs of type BPF_PROG_TYPE_CGROUP_SOCK_ADDR.

Such programs operate on sockets and have access to socket and struct
sockaddr passed by user to system calls such as sys_bind, sys_connect,
sys_sendmsg.

It's useful to be able to lookup other sockets from these programs.
E.g. sys_connect may lookup IP:port endpoint and if there is a server
socket bound to that endpoint ("server" can be defined by saddr & sport
being zero), redirect client connection to it by rewriting IP:port in
sockaddr passed to sys_connect.

Signed-off-by: Andrey Ignatov <rdna@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
net/core/filter.c