BPF_F_INGRESS
return msg->flags & BPF_F_INGRESS;
#define BPF_F_PTR_MASK ~(BPF_F_INGRESS | BPF_F_STRPARSER)
return sk_redir & BPF_F_INGRESS;
skb->_sk_redir |= BPF_F_INGRESS;
skb->_sk_redir |= BPF_F_INGRESS;
return flags & BPF_F_INGRESS ?
return flags & BPF_F_INGRESS ?
if (unlikely(flags & (~(BPF_F_INGRESS) | BPF_F_REDIRECT_INTERNAL)))
if (unlikely(flags & (~(BPF_F_INGRESS) | BPF_F_REDIRECT_INTERNAL)))
if (unlikely(flags & ~(BPF_F_INGRESS)))
if ((flags & BPF_F_INGRESS) && sk_is_vsock(sk))
skb_bpf_set_redir(skb, sk, flags & BPF_F_INGRESS);
if (unlikely(flags & ~(BPF_F_INGRESS)))
if (!(flags & BPF_F_INGRESS) && !sk_is_tcp(sk))
if (unlikely(flags & ~(BPF_F_INGRESS)))
if ((flags & BPF_F_INGRESS) && sk_is_vsock(sk))
skb_bpf_set_redir(skb, sk, flags & BPF_F_INGRESS);
if (unlikely(flags & ~(BPF_F_INGRESS)))
if (!(flags & BPF_F_INGRESS) && !sk_is_tcp(sk))
return bpf_redirect(*ifindex, BPF_F_INGRESS);
return bpf_redirect(*ifindex, BPF_F_INGRESS);
ctx.skel->bss->verdict_dir = BPF_F_INGRESS;
ctx.skel->bss->verdict_dir = BPF_F_INGRESS;
*redirect_flags = BPF_F_INGRESS;
ret = bpf_clone_redirect(skb, ifindex, BPF_F_INGRESS);
ret = bpf_clone_redirect(skb, ifindex, BPF_F_INGRESS);
return bpf_redirect(skb->ifindex, BPF_F_INGRESS);
return bpf_redirect(skb->ifindex, BPF_F_INGRESS);
return bpf_redirect(target, BPF_F_INGRESS);
return bpf_redirect(target, BPF_F_INGRESS);
test_ingress ? BPF_F_INGRESS : 0);
test_ingress ? BPF_F_INGRESS : 0);
return bpf_sk_redirect_map(skb, &sock_map_rx, one, BPF_F_INGRESS);
int in = BPF_F_INGRESS;
int ingress = BPF_F_INGRESS;
int ingress = BPF_F_INGRESS;
return bpf_redirect(skb->ifindex, BPF_F_INGRESS);