sk_msg
BPF_PROG_TYPE(BPF_PROG_TYPE_SK_MSG, sk_msg,
struct sk_msg_md, struct sk_msg)
int sk_msg_alloc(struct sock *sk, struct sk_msg *msg, int len,
int sk_msg_clone(struct sock *sk, struct sk_msg *dst, struct sk_msg *src,
void sk_msg_trim(struct sock *sk, struct sk_msg *msg, int len);
int sk_msg_free(struct sock *sk, struct sk_msg *msg);
int sk_msg_free_nocharge(struct sock *sk, struct sk_msg *msg);
void sk_msg_free_partial(struct sock *sk, struct sk_msg *msg, u32 bytes);
void sk_msg_free_partial_nocharge(struct sock *sk, struct sk_msg *msg,
void sk_msg_return(struct sock *sk, struct sk_msg *msg, int bytes);
void sk_msg_return_zero(struct sock *sk, struct sk_msg *msg, int bytes);
struct sk_msg *msg, u32 bytes);
struct sk_msg *msg, u32 bytes);
static inline void sk_msg_check_to_free(struct sk_msg *msg, u32 i, u32 bytes)
static inline void sk_msg_init(struct sk_msg *msg)
static inline void sk_msg_xfer(struct sk_msg *dst, struct sk_msg *src,
static inline void sk_msg_xfer_full(struct sk_msg *dst, struct sk_msg *src)
static inline bool sk_msg_full(const struct sk_msg *msg)
static inline u32 sk_msg_elem_used(const struct sk_msg *msg)
static inline struct scatterlist *sk_msg_elem(struct sk_msg *msg, int which)
static inline struct scatterlist sk_msg_elem_cpy(struct sk_msg *msg, int which)
static inline struct page *sk_msg_page(struct sk_msg *msg, int which)
static inline bool sk_msg_to_ingress(const struct sk_msg *msg)
static inline void sk_msg_compute_data_pointers(struct sk_msg *msg)
static inline void sk_msg_page_add(struct sk_msg *msg, struct page *page,
static inline void sk_msg_sg_copy(struct sk_msg *msg, u32 i, bool copy_state)
static inline void sk_msg_sg_copy_set(struct sk_msg *msg, u32 start)
static inline void sk_msg_sg_copy_clear(struct sk_msg *msg, u32 start)
struct sk_msg *msg)
static inline struct sk_msg *sk_psock_dequeue_msg(struct sk_psock *psock)
struct sk_msg *msg;
msg = list_first_entry_or_null(&psock->ingress_msg, struct sk_msg, list);
static inline struct sk_msg *sk_psock_peek_msg_locked(struct sk_psock *psock)
return list_first_entry_or_null(&psock->ingress_msg, struct sk_msg, list);
static inline struct sk_msg *sk_psock_peek_msg(struct sk_psock *psock)
struct sk_msg *msg;
static inline struct sk_msg *sk_psock_next_msg(struct sk_psock *psock,
struct sk_msg *msg)
struct sk_msg *ret;
static inline void kfree_sk_msg(struct sk_msg *msg)
struct sk_msg *msg);
struct sk_msg *msg;
struct sk_msg *cork;
struct sk_msg skmsg;
struct sk_msg;
struct sk_msg *msg, u32 bytes, int flags);
BUILD_BUG_ON(offsetof(struct sk_msg, sg) != 0);
*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_msg, data),
offsetof(struct sk_msg, data));
*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_msg, data_end),
offsetof(struct sk_msg, data_end));
struct sk_msg, sk),
offsetof(struct sk_msg, sk));
struct sk_msg, sk),
offsetof(struct sk_msg, sk));
struct sk_msg, sk),
offsetof(struct sk_msg, sk));
struct sk_msg, sk),
offsetof(struct sk_msg, sk));
struct sk_msg, sk),
offsetof(struct sk_msg, sk));
struct sk_msg, sk),
offsetof(struct sk_msg, sk));
struct sk_msg, sk),
offsetof(struct sk_msg, sk));
*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_msg, sk),
offsetof(struct sk_msg, sk));
BPF_CALL_2(bpf_msg_apply_bytes, struct sk_msg *, msg, u32, bytes)
BPF_CALL_2(bpf_msg_cork_bytes, struct sk_msg *, msg, u32, bytes)
static void sk_msg_reset_curr(struct sk_msg *msg)
BPF_CALL_4(bpf_msg_pull_data, struct sk_msg *, msg, u32, start,
BPF_CALL_4(bpf_msg_push_data, struct sk_msg *, msg, u32, start,
static void sk_msg_shift_left(struct sk_msg *msg, int i)
static void sk_msg_shift_right(struct sk_msg *msg, int i)
BPF_CALL_4(bpf_msg_pop_data, struct sk_msg *, msg, u32, start,
BPF_CALL_1(bpf_get_netns_cookie_sk_msg, struct sk_msg *, ctx)
static bool sk_msg_try_coalesce_ok(struct sk_msg *msg, int elem_first_coalesce)
void sk_msg_return_zero(struct sock *sk, struct sk_msg *msg, int bytes)
void sk_msg_return(struct sock *sk, struct sk_msg *msg, int bytes)
static int sk_msg_free_elem(struct sock *sk, struct sk_msg *msg, u32 i,
static int __sk_msg_free(struct sock *sk, struct sk_msg *msg, u32 i,
int sk_msg_free_nocharge(struct sock *sk, struct sk_msg *msg)
int sk_msg_free(struct sock *sk, struct sk_msg *msg)
static void __sk_msg_free_partial(struct sock *sk, struct sk_msg *msg,
void sk_msg_free_partial(struct sock *sk, struct sk_msg *msg, u32 bytes)
void sk_msg_free_partial_nocharge(struct sock *sk, struct sk_msg *msg,
void sk_msg_trim(struct sock *sk, struct sk_msg *msg, int len)
int sk_msg_alloc(struct sock *sk, struct sk_msg *msg, int len,
struct sk_msg *msg, u32 bytes)
struct sk_msg *msg, u32 bytes)
struct sk_msg *msg_rx;
static struct sk_msg *alloc_sk_msg(gfp_t gfp)
struct sk_msg *msg;
static struct sk_msg *sk_psock_create_ingress_msg(struct sock *sk,
struct sk_msg *msg,
struct sk_msg *msg;
struct sk_msg *msg = alloc_sk_msg(GFP_ATOMIC);
struct sk_msg *msg, *tmp;
int sk_msg_clone(struct sock *sk, struct sk_msg *dst, struct sk_msg *src,
struct sk_msg *msg)
BPF_CALL_4(bpf_msg_redirect_hash, struct sk_msg *, msg,
BPF_CALL_4(bpf_msg_redirect_map, struct sk_msg *, msg,
static int tcp_bpf_push_locked(struct sock *sk, struct sk_msg *msg,
struct sk_msg *msg, u32 bytes, int flags)
struct sk_msg *msg_rx;
struct sk_msg *msg, u32 apply_bytes)
struct sk_msg *tmp;
struct sk_msg *msg, int *copied, int flags)
struct sk_msg tmp, *msg_tx = NULL;
static int tcp_bpf_push(struct sock *sk, struct sk_msg *msg, u32 apply_bytes,
struct sk_msg msg_plaintext;
struct sk_msg msg_encrypted;
struct sk_msg *msg_pl, size_t try_to_copy,
struct sk_msg *msg_pl, *msg_en;
struct sk_msg *msg_pl;
struct sk_msg *msg_en = &rec->msg_encrypted;
struct sk_msg *msg_pl = &rec->msg_plaintext;
struct sk_msg *msg_en = &rec->msg_encrypted;
struct sk_msg *msg_pl, *msg_en;
struct sk_msg *msg_en;
struct sk_msg *msg_en;
struct sk_msg *msg_en = &rec->msg_encrypted;
struct tls_rec **to, struct sk_msg *msg_opl,
struct sk_msg *msg_oen, u32 split_point,
struct sk_msg *msg_npl;
struct sk_msg *msg_npl = &from->msg_plaintext;
struct sk_msg *msg_opl = &to->msg_plaintext;
struct sk_msg *msg_pl, *msg_en;
static int bpf_exec_tx_verdict(struct sk_msg *msg, struct sock *sk,
struct sk_msg msg_redir = { };
struct sk_msg *enc = &ctx->open_rec->msg_encrypted;
struct sk_msg *msg_pl;
struct sk_msg *skmsg = &emsg->skmsg;
bpf_program__set_autoload(skel->progs.sk_msg, true);
verdict = bpf_program__fd(skel->progs.sk_msg);
bool sk_msg;
sk_msg = type == SK_MSG_INGRESS || type == SK_MSG_EGRESS;
prog = sk_msg ? skel->progs.prog_msg_verdict : skel->progs.prog_skb_verdict;
*attach_type = sk_msg ? BPF_SK_MSG_VERDICT : BPF_SK_SKB_VERDICT;
int sk_msg(struct sk_msg_md *msg)