• Lawrence Brakmo's avatar
    bpf: Add write access to tcp_sock and sock fields · b73042b8
    Lawrence Brakmo authored
    This patch adds a macro, SOCK_OPS_SET_FIELD, for writing to
    struct tcp_sock or struct sock fields. This required adding a new
    field "temp" to struct bpf_sock_ops_kern for temporary storage that
    is used by sock_ops_convert_ctx_access. It is used to store and recover
    the contents of a register, so the register can be used to store the
    address of the sk. Since we cannot overwrite the dst_reg because it
    contains the pointer to ctx, nor the src_reg since it contains the value
    we want to store, we need an extra register to contain the address
    of the sk.
    
    Also adds the macro SOCK_OPS_GET_OR_SET_FIELD that calls one of the
    GET or SET macros depending on the value of the TYPE field.
    Signed-off-by: default avatarLawrence Brakmo <brakmo@fb.com>
    Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    b73042b8
tcp.h 61.6 KB