mirror_ubuntu-kernels/tools/include/uapi/linux
Joe Stringer cf7fbe660f bpf: Add socket assign support
Add support for TPROXY via a new bpf helper, bpf_sk_assign().

This helper requires the BPF program to discover the socket via a call
to bpf_sk*_lookup_*(), then pass this socket to the new helper. The
helper takes its own reference to the socket in addition to any existing
reference that may or may not currently be obtained for the duration of
BPF processing. For the destination socket to receive the traffic, the
traffic must be routed towards that socket via local route. The
simplest example route is below, but in practice you may want to route
traffic more narrowly (eg by CIDR):

  $ ip route add local default dev lo

This patch avoids trying to introduce an extra bit into the skb->sk, as
that would require more invasive changes to all code interacting with
the socket to ensure that the bit is handled correctly, such as all
error-handling cases along the path from the helper in BPF through to
the orphan path in the input. Instead, we opt to use the destructor
variable to switch on the prefetch of the socket.

Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20200329225342.16317-2-joe@wand.net.nz
2020-03-30 13:45:04 -07:00
..
tc_act net: Move all TC actions identifiers to one place 2019-02-10 09:28:43 -08:00
bpf_common.h bpf: Sync kernel ABI header with tooling header for bpf_common.h 2018-02-09 00:24:38 +01:00
bpf_perf_event.h selftests/bpf: sync kernel headers and introduce arch support in Makefile 2017-12-05 15:02:41 +01:00
bpf.h bpf: Add socket assign support 2020-03-30 13:45:04 -07:00
btf.h libbpf: Sanitize global functions 2020-01-10 17:20:07 +01:00
const.h tools headers: Grab copy of linux/const.h, needed by linux/bits.h 2019-08-20 12:08:23 -03:00
erspan.h tools, include: Grab a copy of linux/erspan.h 2018-04-30 17:56:24 +02:00
ethtool.h libbpf: add support for using AF_XDP sockets 2019-02-25 23:21:42 +01:00
fadvise.h tools headers uapi: Grab a copy of fadvise.h 2018-12-18 16:17:40 -03:00
fcntl.h tools include UAPI: Sync x86's syscalls_64.tbl, generic unistd.h and fcntl.h to pick up openat2 and pidfd_getfd 2020-02-11 16:41:06 -03:00
fs.h tools headers uapi: Sync linux/fs.h with the kernel sources 2019-09-30 17:29:22 -03:00
fscrypt.h tools headers uapi: Sync linux/fscrypt.h with the kernel sources 2020-02-12 10:13:25 -03:00
hw_breakpoint.h tools/headers: Synchronize kernel ABI headers 2017-11-04 09:27:46 +01:00
if_link.h tools: Add EXPECTED_FD-related definitions in if_link.h 2020-03-28 14:24:41 -07:00
if_tun.h selftests/bpf: fix compilation error for flow_dissector.c 2019-05-29 15:15:07 +02:00
if_xdp.h libbpf: add flags to umem config 2019-08-31 01:08:26 +02:00
in.h tcp: Define IPPROTO_MPTCP 2020-01-09 18:41:41 -08:00
kcmp.h tools headers: Synchronize kernel ABI headers wrt SPDX tags 2017-11-28 14:29:20 -03:00
kvm.h tools headers kvm: Sync linux/kvm.h with the kernel sources 2020-02-12 12:45:24 -03:00
lirc.h media: rc: rcmm decoder and encoder 2019-02-18 15:39:49 -05:00
mman.h tools headers uapi: Sync asm-generic/mman-common.h and linux/mman.h 2019-03-28 14:31:56 -03:00
mount.h tools include UAPI: Update copy of files related to new fspick, fsmount, fsconfig, fsopen, move_mount and open_tree syscalls 2019-05-28 09:49:03 -03:00
netlink.h net: netlink: rename NETLINK_DUMP_STRICT_CHK -> NETLINK_GET_STRICT_CHK 2018-12-14 11:44:31 -08:00
openat2.h tools include UAPI: Sync x86's syscalls_64.tbl, generic unistd.h and fcntl.h to pick up openat2 and pidfd_getfd 2020-02-11 16:41:06 -03:00
perf_event.h perf tools: Add kernel AUX area sampling definitions 2019-11-21 10:54:20 -03:00
pkt_cls.h net: sched: remove NET_CLS_IND config option 2019-06-15 14:06:13 -07:00
pkt_sched.h bpf: pull in pkt_sched.h header for tooling to fix bpftool build 2019-01-18 15:16:36 -08:00
prctl.h tools headers UAPI: Sync prctl.h with the kernel sources 2020-02-11 16:41:50 -03:00
sched.h tools headers UAPI: Sync sched.h with the kernel 2020-02-11 16:41:50 -03:00
seg6_local.h selftests/bpf: missing headers test_lwt_seg6local 2018-05-28 17:41:00 +02:00
seg6.h selftests/bpf: missing headers test_lwt_seg6local 2018-05-28 17:41:00 +02:00
stat.h tools headers uapi: Sync linux/stat.h with the kernel sources 2019-12-02 12:24:52 -03:00
tls.h bpf, tls: add tls header to tools infrastructure 2018-10-16 08:10:01 -07:00
types.h tools/bpf: Move linux/types.h for selftests and bpftool 2020-03-13 20:56:34 +01:00
usbdevice_fs.h tools headers uapi: Sync linux/usbdevice_fs.h with the kernel sources 2019-09-30 17:29:02 -03:00
vhost.h tools include uapi: Sync linux/vhost.h with the kernel sources 2019-01-08 14:09:33 -03:00