ip: fix mc_loop checks for tunnels with multicast outer addresses
When we have L3 tunnels with different inner/outer families (i.e. IPV4/IPV6) which use a multicast address as the outer tunnel destination address, multicast packets will be loopbacked back to the sending socket even if IP*_MULTICAST_LOOP is set to disabled. The mc_loop flag is present in the family specific part of the socket (e.g. the IPv4 or IPv4 specific part). setsockopt sets the inner family mc_loop flag. When the packet is pushed through the L3 tunnel it will eventually be processed by the outer family which if different will check the flag in a different part of the socket then it was set. Signed-off-by: Octavian Purdila <opurdila@ixiacom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
58933c643f
commit
7ad6848c7e
@ -254,7 +254,7 @@ int ip_mc_output(struct sk_buff *skb)
|
||||
*/
|
||||
|
||||
if (rt->rt_flags&RTCF_MULTICAST) {
|
||||
if ((!sk || inet_sk(sk)->mc_loop)
|
||||
if (sk_mc_loop(sk)
|
||||
#ifdef CONFIG_IP_MROUTE
|
||||
/* Small optimization: do not loopback not local frames,
|
||||
which returned after forwarding; they will be dropped
|
||||
|
Reference in New Issue
Block a user