diff options
Diffstat (limited to 'include/net/inet_sock.h')
| -rw-r--r-- | include/net/inet_sock.h | 21 | 
1 files changed, 21 insertions, 0 deletions
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index a80fd0ac4563..e8eef85006aa 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h @@ -130,6 +130,27 @@ static inline int inet_request_bound_dev_if(const struct sock *sk,  	return sk->sk_bound_dev_if;  } +static inline int inet_sk_bound_l3mdev(const struct sock *sk) +{ +#ifdef CONFIG_NET_L3_MASTER_DEV +	struct net *net = sock_net(sk); + +	if (!net->ipv4.sysctl_tcp_l3mdev_accept) +		return l3mdev_master_ifindex_by_index(net, +						      sk->sk_bound_dev_if); +#endif + +	return 0; +} + +static inline bool inet_bound_dev_eq(bool l3mdev_accept, int bound_dev_if, +				     int dif, int sdif) +{ +	if (!bound_dev_if) +		return !sdif || l3mdev_accept; +	return bound_dev_if == dif || bound_dev_if == sdif; +} +  struct inet_cork {  	unsigned int		flags;  	__be32			addr;  |