android_kernel_msm-6.1_noth.../tools/include/uapi/linux
Joe Stringer 6acc9b432e bpf: Add helper to retrieve socket in BPF
This patch adds new BPF helper functions, bpf_sk_lookup_tcp() and
bpf_sk_lookup_udp() which allows BPF programs to find out if there is a
socket listening on this host, and returns a socket pointer which the
BPF program can then access to determine, for instance, whether to
forward or drop traffic. bpf_sk_lookup_xxx() may take a reference on the
socket, so when a BPF program makes use of this function, it must
subsequently pass the returned pointer into the newly added sk_release()
to return the reference.

By way of example, the following pseudocode would filter inbound
connections at XDP if there is no corresponding service listening for
the traffic:

  struct bpf_sock_tuple tuple;
  struct bpf_sock_ops *sk;

  populate_tuple(ctx, &tuple); // Extract the 5tuple from the packet
  sk = bpf_sk_lookup_tcp(ctx, &tuple, sizeof tuple, netns, 0);
  if (!sk) {
    // Couldn't find a socket listening for this traffic. Drop.
    return TC_ACT_SHOT;
  }
  bpf_sk_release(sk, 0);
  return TC_ACT_OK;

Signed-off-by: Joe Stringer <joe@wand.net.nz>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2018-10-03 02:53:47 +02:00
..
bpf.h bpf: Add helper to retrieve socket in BPF 2018-10-03 02:53:47 +02: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
btf.h bpf: btf: Sync uapi btf.h to tools 2018-07-25 06:57:55 +02:00
erspan.h tools, include: Grab a copy of linux/erspan.h 2018-04-30 17:56:24 +02:00
fcntl.h tools/headers: Synchronize kernel ABI headers 2017-11-04 09:27:46 +01:00
hw_breakpoint.h tools/headers: Synchronize kernel ABI headers 2017-11-04 09:27:46 +01:00
if_link.h Merge ra.kernel.org:/pub/scm/linux/kernel/git/davem/net 2018-09-18 09:33:27 -07:00
in.h tools include uapi: Grab a copy of linux/in.h 2018-07-31 10:52:37 -03:00
kcmp.h tools headers: Synchronize kernel ABI headers wrt SPDX tags 2017-11-28 14:29:20 -03:00
kvm.h tools headers uapi: Update tools's copies of kvm headers 2018-09-11 13:09:26 -03:00
lirc.h bpf: add selftest for lirc_mode2 type program 2018-05-30 12:40:14 +02:00
mman.h tools/headers: Synchronize kernel ABI headers 2017-11-04 09:27:46 +01:00
netlink.h tools: add netlink.h and if_link.h in tools uapi 2018-02-02 17:53:47 -08:00
perf_event.h tools headers uapi: Update tools's copy of linux/perf_event.h 2018-09-11 10:57:13 -03:00
prctl.h docs: Fix some broken references 2018-06-15 18:10:01 -03:00
sched.h tools headers: Synchronize uapi/linux/sched.h 2018-02-02 17:17:13 -03:00
seg6.h selftests/bpf: missing headers test_lwt_seg6local 2018-05-28 17:41:00 +02:00
seg6_local.h selftests/bpf: missing headers test_lwt_seg6local 2018-05-28 17:41:00 +02:00
stat.h tools/headers: Synchronize kernel ABI headers 2017-11-04 09:27:46 +01:00
vhost.h tools headers uapi: Update tools's copy of linux/vhost.h 2018-09-11 13:12:40 -03:00