• Martin KaFai Lau's avatar
    bpf: tcp: Add bpf_skops_parse_hdr() · 00d211a4
    Martin KaFai Lau authored
    The patch adds a function bpf_skops_parse_hdr().
    It will call the bpf prog to parse the TCP header received at
    a tcp_sock that has at least reached the ESTABLISHED state.
    
    For the packets received during the 3WHS (SYN, SYNACK and ACK),
    the received skb will be available to the bpf prog during the callback
    in bpf_skops_established() introduced in the previous patch and
    in the bpf_skops_write_hdr_opt() that will be added in the
    next patch.
    
    Calling bpf prog to parse header is controlled by two new flags in
    tp->bpf_sock_ops_cb_flags:
    BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG and
    BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG.
    
    When BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG is set,
    the bpf prog will only be called when there is unknown
    option in the TCP header.
    
    When BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG is set,
    the bpf prog will be called on all received TCP header.
    
    This function is half implemented to highlight the changes in
    TCP stack.  The actual codes preparing the bpf running context and
    invoking the bpf prog will be added in the later patch with other
    necessary bpf pieces.
    Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/bpf/20200820190046.2885054-1-kafai@fb.com
    00d211a4
tcp_input.c 195 KB