]> git.hungrycats.org Git - linux/commitdiff
[IPV4/IPV6]: In MLD, add new filter first, then delete old one.
authorDavid Stevens <dlstevens@us.ibm.com>
Tue, 13 Jan 2004 08:18:05 +0000 (00:18 -0800)
committerStephen Hemminger <shemminger@osdl.org>
Tue, 13 Jan 2004 08:18:05 +0000 (00:18 -0800)
net/ipv4/igmp.c
net/ipv6/mcast.c

index 1641e4d4a704cf5eba09a3dd3c181472685e5a50..b9840662ad5db9894f3e9b67a889fadad1193be7 100644 (file)
@@ -1749,11 +1749,10 @@ int ip_mc_source(int add, int omode, struct sock *sk, struct
                        goto done;
        } else if (pmc->sfmode != omode) {
                /* allow mode switches for empty-set filters */
+               ip_mc_add_src(in_dev, &mreqs->imr_multiaddr, omode, 0, 0, 0);
                ip_mc_del_src(in_dev, &mreqs->imr_multiaddr, pmc->sfmode, 0, 
                        0, 0);
                pmc->sfmode = omode;
-               ip_mc_add_src(in_dev, &mreqs->imr_multiaddr, pmc->sfmode, 0, 
-                       0, 0);
        }
 
        psl = pmc->sflist;
index 72fd445ab217745d291ee8b97027d82e62bafd55..0e9dfa644e80ca1490593249985ef34602aa9aea 100644 (file)
@@ -372,9 +372,9 @@ int ip6_mc_source(int add, int omode, struct sock *sk,
                        goto done;
        } else if (pmc->sfmode != omode) {
                /* allow mode switches for empty-set filters */
+               ip6_mc_add_src(idev, group, omode, 0, 0, 0);
                ip6_mc_del_src(idev, group, pmc->sfmode, 0, 0, 0);
                pmc->sfmode = omode;
-               ip6_mc_del_src(idev, group, pmc->sfmode, 0, 0, 0);
        }
 
        psl = pmc->sflist;