• brakmo's avatar
    bpf: Create BPF_PROG_CGROUP_INET_EGRESS_RUN_ARRAY · 1f52f6c0
    brakmo authored
    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: default avatarLawrence Brakmo <brakmo@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    1f52f6c0
bpf.h 34.9 KB