summaryrefslogtreecommitdiffstats
path: root/net/802
diff options
context:
space:
mode:
authorbrakmo <brakmo@fb.com>2019-05-28 16:59:35 -0700
committerAlexei Starovoitov <ast@kernel.org>2019-05-31 16:41:29 -0700
commit1f52f6c0b0e846908e9c1082dab1b3f7088b82ac (patch)
tree9fb587851dd24117897651294575d36c7d85ce9e /net/802
parent399dc65e9ca0c35c8ceea7130b25e7be8f229a52 (diff)
downloadlinux-1f52f6c0b0e846908e9c1082dab1b3f7088b82ac.tar.bz2
bpf: Create BPF_PROG_CGROUP_INET_EGRESS_RUN_ARRAY
Create new macro BPF_PROG_CGROUP_INET_EGRESS_RUN_ARRAY() to be used by __cgroup_bpf_run_filter_skb for EGRESS BPF progs so BPF programs can request cwr for TCP packets. Current cgroup skb programs can only return 0 or 1 (0 to drop the packet. This macro changes the behavior so the low order bit indicates whether the packet should be dropped (0) or not (1) and the next bit is used for congestion notification (cn). Hence, new allowed return values of CGROUP EGRESS BPF programs are: 0: drop packet 1: keep packet 2: drop packet and call cwr 3: keep packet and call cwr This macro then converts it to one of NET_XMIT values or -EPERM that has the effect of dropping the packet with no cn. 0: NET_XMIT_SUCCESS skb should be transmitted (no cn) 1: NET_XMIT_DROP skb should be dropped and cwr called 2: NET_XMIT_CN skb should be transmitted and cwr called 3: -EPERM skb should be dropped (no cn) Note that when more than one BPF program is called, the packet is dropped if at least one of programs requests it be dropped, and there is cn if at least one program returns cn. Signed-off-by: Lawrence Brakmo <brakmo@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'net/802')
0 files changed, 0 insertions, 0 deletions