summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorBrendan McGrath <redmcg@redmandi.dyndns.org>2017-12-13 22:14:57 +1100
committerSasha Levin <alexander.levin@microsoft.com>2018-03-20 23:49:44 -0400
commit17710634e40d84baab05c79447686cd6fbdf8c77 (patch)
tree2fa553de36b179323937698c5f7960e915b948f4 /net
parentb8bbe2041321334cd2fab3ab08c891bb7306a415 (diff)
downloadlinux-17710634e40d84baab05c79447686cd6fbdf8c77.tar.gz
linux-17710634e40d84baab05c79447686cd6fbdf8c77.tar.bz2
linux-17710634e40d84baab05c79447686cd6fbdf8c77.zip
ipv6: icmp6: Allow icmp messages to be looped back
[ Upstream commit 588753f1eb18978512b1c9b85fddb457d46f9033 ] One example of when an ICMPv6 packet is required to be looped back is when a host acts as both a Multicast Listener and a Multicast Router. A Multicast Router will listen on address ff02::16 for MLDv2 messages. Currently, MLDv2 messages originating from a Multicast Listener running on the same host as the Multicast Router are not being delivered to the Multicast Router. This is due to dst.input being assigned the default value of dst_discard. This results in the packet being looped back but discarded before being delivered to the Multicast Router. This patch sets dst.input to ip6_input to ensure a looped back packet is delivered to the Multicast Router. Signed-off-by: Brendan McGrath <redmcg@redmandi.dyndns.org> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Diffstat (limited to 'net')
-rw-r--r--net/ipv6/route.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 135fe458bfac..d17efa1b8473 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1379,6 +1379,7 @@ struct dst_entry *icmp6_dst_alloc(struct net_device *dev,
}
rt->dst.flags |= DST_HOST;
+ rt->dst.input = ip6_input;
rt->dst.output = ip6_output;
atomic_set(&rt->dst.__refcnt, 1);
rt->rt6i_gateway = fl6->daddr;