diff options
author | Lawrence Brakmo <brakmo@fb.com> | 2018-01-26 01:14:10 +0100 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2018-01-26 01:41:14 +0100 |
commit | b13d880721729384757f235166068c315326f4a1 (patch) | |
tree | 7d117afdbf662f4bc89261885e547053fbed90f7 /net/ipv4/tcp_timer.c | |
parent | bpf: Support passing args to sock_ops bpf function (diff) | |
download | linux-b13d880721729384757f235166068c315326f4a1.tar.xz linux-b13d880721729384757f235166068c315326f4a1.zip |
bpf: Adds field bpf_sock_ops_cb_flags to tcp_sock
Adds field bpf_sock_ops_cb_flags to tcp_sock and bpf_sock_ops. Its primary
use is to determine if there should be calls to sock_ops bpf program at
various points in the TCP code. The field is initialized to zero,
disabling the calls. A sock_ops BPF program can set it, per connection and
as necessary, when the connection is established.
It also adds support for reading and writting the field within a
sock_ops BPF program. Reading is done by accessing the field directly.
However, writing is done through the helper function
bpf_sock_ops_cb_flags_set, in order to return an error if a BPF program
is trying to set a callback that is not supported in the current kernel
(i.e. running an older kernel). The helper function returns 0 if it was
able to set all of the bits set in the argument, a positive number
containing the bits that could not be set, or -EINVAL if the socket is
not a full TCP socket.
Examples of where one could call the bpf program:
1) When RTO fires
2) When a packet is retransmitted
3) When the connection terminates
4) When a packet is sent
5) When a packet is received
Signed-off-by: Lawrence Brakmo <brakmo@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'net/ipv4/tcp_timer.c')
0 files changed, 0 insertions, 0 deletions