Thread (22 messages) flat view 22 messages, 6 authors, 2016-08-16

Re: [PATCH net] net: ipv6: Fix ping to link-local addresses.

From: Lorenzo Colitti <hidden>
Date: 2016-08-12 15:46:04

On Wed, Aug 10, 2016 at 7:44 AM, YOSHIFUJI Hideaki
[off-list ref] wrote:
quoted
quoted
I could see a point of view that says when bound_if is in play sending
to destinations on/via other interfaces--by any mechanism--should
effectively get ENETUNREACH (or something).
VRF uses this capability to send on an enslaved interface. ie., socket is bound to VRF device to limit packets to that L3 domain and then uses PKTINFO to force a packet out a particular interface.
We could extend our code to allow enslave devices, maybe.
So something like this, then?

static inline bool inet_check_bound_oif(const struct sock *sk, int oif)
{
        if (!oif || !sk->sk_bound_dev_if || oif == sk->sk_bound_dev_if)
                return true;

#ifdef CONFIG_NET_L3_MASTER_DEV
        return l3mdev_master_ifindex_by_index(sock_net(sk), oif) ==
                sk->sk_bound_dev_if;
#endif

        return false;
}

and then in the various sendmsg functions:

        if (!inet_check_bound_oif(sk, oif))
                return -EINVAL;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help