]> err.no Git - linux-2.6/blobdiff - include/net/if_inet6.h
[IPSEC]: Make x->lastused an unsigned long
[linux-2.6] / include / net / if_inet6.h
index e459e1a0ae4a9fd17b3b06b4b0f5cbf8e0a6ab5f..b24508abb8505bff87d1ba1f139f25db0f4a10e6 100644 (file)
@@ -152,7 +152,9 @@ struct ifacaddr6
 
 struct ipv6_devstat {
        struct proc_dir_entry   *proc_dir_entry;
+       DEFINE_SNMP_STAT(struct ipstats_mib, ipv6);
        DEFINE_SNMP_STAT(struct icmpv6_mib, icmpv6);
+       DEFINE_SNMP_STAT(struct icmpv6msg_mib, icmpv6msg);
 };
 
 struct inet6_dev 
@@ -189,6 +191,7 @@ struct inet6_dev
        struct ipv6_devconf     cnf;
        struct ipv6_devstat     stats;
        unsigned long           tstamp; /* ipv6InterfaceTable update timestamp */
+       struct rcu_head         rcu;
 };
 
 extern struct ipv6_devconf ipv6_devconf;
@@ -266,18 +269,21 @@ static inline void ipv6_arcnet_mc_map(const struct in6_addr *addr, char *buf)
        buf[0] = 0x00;
 }
 
-static inline void ipv6_ib_mc_map(struct in6_addr *addr, char *buf)
+static inline void ipv6_ib_mc_map(const struct in6_addr *addr,
+                                 const unsigned char *broadcast, char *buf)
 {
+       unsigned char scope = broadcast[5] & 0xF;
+
        buf[0]  = 0;            /* Reserved */
        buf[1]  = 0xff;         /* Multicast QPN */
        buf[2]  = 0xff;
        buf[3]  = 0xff;
        buf[4]  = 0xff;
-       buf[5]  = 0x12;         /* link local scope */
+       buf[5]  = 0x10 | scope; /* scope from broadcast address */
        buf[6]  = 0x60;         /* IPv6 signature */
        buf[7]  = 0x1b;
-       buf[8]  = 0;            /* P_Key */
-       buf[9]  = 0;
+       buf[8]  = broadcast[8]; /* P_Key */
+       buf[9]  = broadcast[9];
        memcpy(buf + 10, addr->s6_addr + 6, 10);
 }
 #endif