ipv4: Fix raw socket lookup for local traffic
authorDavid Ahern <dsahern@gmail.com>
Wed, 8 May 2019 03:44:59 +0000 (20:44 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 May 2019 17:43:46 +0000 (19:43 +0200)
commit4dbefd9d79ca91be957bcb163c1d4f48a7a7fcde
treea61a57d4760e1081cda36f20a23666cf214dd8a6
parent2854d4536dea421c6badce8a6c1f04f96d1b97c5
ipv4: Fix raw socket lookup for local traffic

[ Upstream commit 19e4e768064a87b073a4b4c138b55db70e0cfb9f ]

inet_iif should be used for the raw socket lookup. inet_iif considers
rt_iif which handles the case of local traffic.

As it stands, ping to a local address with the '-I <dev>' option fails
ever since ping was changed to use SO_BINDTODEVICE instead of
cmsg + IP_PKTINFO.

IPv6 works fine.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/ipv4/raw.c