| From 9be721a828bb39d2003f563aee6842aa5763e2fd Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 29 Apr 2022 13:38:02 +0800 |
| Subject: ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL |
| |
| From: jianghaoran <jianghaoran@kylinos.cn> |
| |
| [ Upstream commit b52e1cce31ca721e937d517411179f9196ee6135 ] |
| |
| ARPHRD_TUNNEL interface can't process rs packets |
| and will generate TX errors |
| |
| ex: |
| ip tunnel add ethn mode ipip local 192.168.1.1 remote 192.168.1.2 |
| ifconfig ethn x.x.x.x |
| |
| ethn: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1480 |
| inet x.x.x.x netmask 255.255.255.255 destination x.x.x.x |
| inet6 fe80::5efe:ac1e:3cdb prefixlen 64 scopeid 0x20<link> |
| tunnel txqueuelen 1000 (IPIP Tunnel) |
| RX packets 0 bytes 0 (0.0 B) |
| RX errors 0 dropped 0 overruns 0 frame 0 |
| TX packets 0 bytes 0 (0.0 B) |
| TX errors 3 dropped 0 overruns 0 carrier 0 collisions 0 |
| |
| Signed-off-by: jianghaoran <jianghaoran@kylinos.cn> |
| Link: https://lore.kernel.org/r/20220429053802.246681-1-jianghaoran@kylinos.cn |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| net/ipv6/addrconf.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c |
| index 30ca73c78125..02f62253a835 100644 |
| --- a/net/ipv6/addrconf.c |
| +++ b/net/ipv6/addrconf.c |
| @@ -3993,7 +3993,8 @@ static void addrconf_dad_completed(struct inet6_ifaddr *ifp, bool bump_id) |
| send_rs = send_mld && |
| ipv6_accept_ra(ifp->idev) && |
| ifp->idev->cnf.rtr_solicits != 0 && |
| - (dev->flags&IFF_LOOPBACK) == 0; |
| + (dev->flags & IFF_LOOPBACK) == 0 && |
| + (dev->type != ARPHRD_TUNNEL); |
| read_unlock_bh(&ifp->idev->lock); |
| |
| /* While dad is in progress mld report's source address is in6_addrany. |
| -- |
| 2.35.1 |
| |