aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorYan Zheng <yanzheng@21cn.com>2005-10-27 20:02:08 -0400
committerArnaldo Carvalho de Melo <acme@mandriva.com>2005-11-02 18:03:57 -0500
commit8713dbf05754aa777f31bf491cb60a111f7ad828 (patch)
tree543da2e27a18d1deddfcccf503db882d2f6d2566 /net/ipv4
parentec1890c5df451799dec969a3581ff72e1934b5ee (diff)
[MCAST]: ip[6]_mc_add_src should be called when number of sources is zero
And filter mode is exclude. Further explanation by David Stevens: Multicast source filters aren't widely used yet, and that's really the only feature that's affected if an application actually exercises this bug, as far as I can tell. An ordinary filter-less multicast join should still work, and only forwarded multicast traffic making use of filters and doing empty-source filters with the MSFILTER ioctl would be at risk of not getting multicast traffic forwarded to them because the reports generated would not be based on the correct counts. Signed-off-by: Yan Zheng <yanzheng@21cn.com Acked-by: David L Stevens <dlstevens@us.ibm.com> Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/igmp.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 8b6d3939e1e6..c6247fc84060 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -1908,8 +1908,11 @@ int ip_mc_msfilter(struct sock *sk, struct ip_msfilter *msf, int ifindex)
1908 sock_kfree_s(sk, newpsl, IP_SFLSIZE(newpsl->sl_max)); 1908 sock_kfree_s(sk, newpsl, IP_SFLSIZE(newpsl->sl_max));
1909 goto done; 1909 goto done;
1910 } 1910 }
1911 } else 1911 } else {
1912 newpsl = NULL; 1912 newpsl = NULL;
1913 (void) ip_mc_add_src(in_dev, &msf->imsf_multiaddr,
1914 msf->imsf_fmode, 0, NULL, 0);
1915 }
1913 psl = pmc->sflist; 1916 psl = pmc->sflist;
1914 if (psl) { 1917 if (psl) {
1915 (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode, 1918 (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode,