]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - include/net/ipv6.h
udpv6: Remove unused skb argument of ipv6_select_ident()
[net-next-2.6.git] / include / net / ipv6.h
index c1f16fc49adeff0e5f6a2c66bf79fbad7b2440c1..ad9a5113025444d77d24fb0721e312c6ac83e9f6 100644 (file)
@@ -126,15 +126,28 @@ extern struct ctl_path net_ipv6_ctl_path[];
        SNMP_ADD_STATS##modifier((net)->mib.statname##_statistics, (field), (val));\
 })
 
+#define _DEVUPD(net, statname, modifier, idev, field, val)             \
+({                                                                     \
+       struct inet6_dev *_idev = (idev);                               \
+       if (likely(_idev != NULL))                                      \
+               SNMP_UPD_PO_STATS##modifier((_idev)->stats.statname, field, (val)); \
+       SNMP_UPD_PO_STATS##modifier((net)->mib.statname##_statistics, field, (val));\
+})
+
 /* MIBs */
 
 #define IP6_INC_STATS(net, idev,field)         \
                _DEVINC(net, ipv6, , idev, field)
 #define IP6_INC_STATS_BH(net, idev,field)      \
                _DEVINC(net, ipv6, _BH, idev, field)
+#define IP6_ADD_STATS(net, idev,field,val)     \
+               _DEVADD(net, ipv6, , idev, field, val)
 #define IP6_ADD_STATS_BH(net, idev,field,val)  \
                _DEVADD(net, ipv6, _BH, idev, field, val)
-
+#define IP6_UPD_PO_STATS(net, idev,field,val)   \
+               _DEVUPD(net, ipv6, , idev, field, val)
+#define IP6_UPD_PO_STATS_BH(net, idev,field,val)   \
+               _DEVUPD(net, ipv6, _BH, idev, field, val)
 #define ICMP6_INC_STATS(net, idev, field)      \
                _DEVINC(net, icmpv6, , idev, field)
 #define ICMP6_INC_STATS_BH(net, idev, field)   \
@@ -428,6 +441,18 @@ static inline int ipv6_addr_diff(const struct in6_addr *a1, const struct in6_add
        return __ipv6_addr_diff(a1, a2, sizeof(struct in6_addr));
 }
 
+static __inline__ void ipv6_select_ident(struct frag_hdr *fhdr)
+{
+       static u32 ipv6_fragmentation_id = 1;
+       static DEFINE_SPINLOCK(ip6_id_lock);
+
+       spin_lock_bh(&ip6_id_lock);
+       fhdr->identification = htonl(ipv6_fragmentation_id);
+       if (++ipv6_fragmentation_id == 0)
+               ipv6_fragmentation_id = 1;
+       spin_unlock_bh(&ip6_id_lock);
+}
+
 /*
  *     Prototypes exported by ipv6
  */