Hi, 2016-08-08 23:45 GMT+09:00 Lorenzo Colitti <lore...@google.com>: > On Mon, Aug 8, 2016 at 11:26 PM, Hannes Frederic Sowa > <han...@stressinduktion.org> wrote: >>> - if (sk->sk_bound_dev_if && >>> - sk->sk_bound_dev_if != u->sin6_scope_id) { >>> - return -EINVAL; >>> - } >> >> Hmm, sk->sk_bound_dev_if always has highest prio for the selection of >> the output interface. Thus this code made sense to me. > > Removing it is consistent with the other sendmsg functions such as > udpv6_sendmsg or rawv6_sendmsg. > > There is similar code in __ip6_datagram_connect, but that seems a bit > different because that code also *sets* sk_bound_dev_if. > > Personally I think it's better for pingv6_sendmsg be consistent with > the other *_sendmsg functions than with ip6_datagram_connect, and thus > the code should be removed. But I don't feel particularly strongly > about it.
Following must be met, at least, IMHO. - SO_BINDTODEVICE requires "root", which sets sk_bound_dev_if. - sin6_scope_id and sk_bound_dev_if should match (if the address it link-local address), or each or both should equal to 0. I think it would make more sense if former setting wins... --yoshfuji