bpf: Add ingress_ifindex to bpf_sk_lookup
It may be helpful to have access to the ifindex during bpf socket lookup. An example may be to scope certain socket lookup logic to specific interfaces, i.e. an interface may be made exempt from custom lookup code. Add the ifindex of the arriving connection to the bpf_sk_lookup API. Signed-off-by: Mark Pashmfouroush <markpash@cloudflare.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20211110111016.5670-2-markpash@cloudflare.com
This commit is contained in:
parent
1a8b597dda
commit
f89315650b
8 changed files with 30 additions and 18 deletions
|
|
@ -1374,6 +1374,7 @@ struct bpf_sk_lookup_kern {
|
|||
const struct in6_addr *daddr;
|
||||
} v6;
|
||||
struct sock *selected_sk;
|
||||
u32 ingress_ifindex;
|
||||
bool no_reuseport;
|
||||
};
|
||||
|
||||
|
|
@ -1436,7 +1437,7 @@ extern struct static_key_false bpf_sk_lookup_enabled;
|
|||
static inline bool bpf_sk_lookup_run_v4(struct net *net, int protocol,
|
||||
const __be32 saddr, const __be16 sport,
|
||||
const __be32 daddr, const u16 dport,
|
||||
struct sock **psk)
|
||||
const int ifindex, struct sock **psk)
|
||||
{
|
||||
struct bpf_prog_array *run_array;
|
||||
struct sock *selected_sk = NULL;
|
||||
|
|
@ -1452,6 +1453,7 @@ static inline bool bpf_sk_lookup_run_v4(struct net *net, int protocol,
|
|||
.v4.daddr = daddr,
|
||||
.sport = sport,
|
||||
.dport = dport,
|
||||
.ingress_ifindex = ifindex,
|
||||
};
|
||||
u32 act;
|
||||
|
||||
|
|
@ -1474,7 +1476,7 @@ static inline bool bpf_sk_lookup_run_v6(struct net *net, int protocol,
|
|||
const __be16 sport,
|
||||
const struct in6_addr *daddr,
|
||||
const u16 dport,
|
||||
struct sock **psk)
|
||||
const int ifindex, struct sock **psk)
|
||||
{
|
||||
struct bpf_prog_array *run_array;
|
||||
struct sock *selected_sk = NULL;
|
||||
|
|
@ -1490,6 +1492,7 @@ static inline bool bpf_sk_lookup_run_v6(struct net *net, int protocol,
|
|||
.v6.daddr = daddr,
|
||||
.sport = sport,
|
||||
.dport = dport,
|
||||
.ingress_ifindex = ifindex,
|
||||
};
|
||||
u32 act;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue