]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/ipv6/mcast.c
netns: add net parameter to IP6_INC_STATS
[net-next-2.6.git] / net / ipv6 / mcast.c
index bd2fe4cfafa7f3dfdaff9e6602ec296e62e34584..a1d588d0b5d4560a51e04b7c205d9c97b131c642 100644 (file)
@@ -151,7 +151,7 @@ static int ip6_mc_leave_src(struct sock *sk, struct ipv6_mc_socklist *iml,
 #define IGMP6_UNSOLICITED_IVAL (10*HZ)
 #define MLD_QRV_DEFAULT                2
 
-#define MLD_V1_SEEN(idev) (ipv6_devconf.force_mld_version == 1 || \
+#define MLD_V1_SEEN(idev) (dev_net((idev)->dev)->ipv6.devconf_all->force_mld_version == 1 || \
                (idev)->cnf.force_mld_version == 1 || \
                ((idev)->mc_v1_seen && \
                time_before(jiffies, (idev)->mc_v1_seen)))
@@ -367,10 +367,6 @@ int ip6_mc_source(int add, int omode, struct sock *sk,
        int pmclocked = 0;
        int err;
 
-       if (pgsr->gsr_group.ss_family != AF_INET6 ||
-           pgsr->gsr_source.ss_family != AF_INET6)
-               return -EINVAL;
-
        source = &((struct sockaddr_in6 *)&pgsr->gsr_source)->sin6_addr;
        group = &((struct sockaddr_in6 *)&pgsr->gsr_group)->sin6_addr;
 
@@ -1450,7 +1446,7 @@ static void mld_sendpack(struct sk_buff *skb)
        int err;
        struct flowi fl;
 
-       IP6_INC_STATS(idev, IPSTATS_MIB_OUTREQUESTS);
+       IP6_INC_STATS(net, idev, IPSTATS_MIB_OUTREQUESTS);
        payload_len = (skb->tail - skb->network_header) - sizeof(*pip6);
        mldlen = skb->tail - skb->transport_header;
        pip6->payload_len = htons(payload_len);
@@ -1775,7 +1771,7 @@ static void igmp6_send(struct in6_addr *addr, struct net_device *dev, int type)
        struct flowi fl;
 
        rcu_read_lock();
-       IP6_INC_STATS(__in6_dev_get(dev),
+       IP6_INC_STATS(net, __in6_dev_get(dev),
                      IPSTATS_MIB_OUTREQUESTS);
        rcu_read_unlock();
        if (type == ICMPV6_MGM_REDUCTION)
@@ -1791,7 +1787,7 @@ static void igmp6_send(struct in6_addr *addr, struct net_device *dev, int type)
 
        if (skb == NULL) {
                rcu_read_lock();
-               IP6_INC_STATS(__in6_dev_get(dev),
+               IP6_INC_STATS(net, __in6_dev_get(dev),
                              IPSTATS_MIB_OUTDISCARDS);
                rcu_read_unlock();
                return;
@@ -1845,9 +1841,9 @@ out:
        if (!err) {
                ICMP6MSGOUT_INC_STATS(idev, type);
                ICMP6_INC_STATS(idev, ICMP6_MIB_OUTMSGS);
-               IP6_INC_STATS(idev, IPSTATS_MIB_OUTMCASTPKTS);
+               IP6_INC_STATS(net, idev, IPSTATS_MIB_OUTMCASTPKTS);
        } else
-               IP6_INC_STATS(idev, IPSTATS_MIB_OUTDISCARDS);
+               IP6_INC_STATS(net, idev, IPSTATS_MIB_OUTDISCARDS);
 
        if (likely(idev != NULL))
                in6_dev_put(idev);