fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / net / if_inet6.h
index 48280b1..3ec7d07 100644 (file)
@@ -24,6 +24,7 @@
 #define IF_RA_MANAGED  0x40
 #define IF_RA_RCVD     0x20
 #define IF_RS_SENT     0x10
+#define IF_READY       0x80000000
 
 /* prefix flags */
 #define IF_PREFIX_ONLINK       0x01
@@ -51,6 +52,7 @@ struct inet6_ifaddr
        struct timer_list       timer;
 
        struct inet6_dev        *idev;
+       struct rt6_info         *rt;
 
        struct inet6_ifaddr     *lst_next;      /* next addr in addr_lst */
        struct inet6_ifaddr     *if_next;       /* next addr in inet6_dev */
@@ -81,6 +83,7 @@ struct ipv6_mc_socklist
        struct in6_addr         addr;
        int                     ifindex;
        struct ipv6_mc_socklist *next;
+       rwlock_t                sflock;
        unsigned int            sfmode;         /* MCAST_{INCLUDE,EXCLUDE} */
        struct ip6_sf_socklist  *sflist;
 };
@@ -133,6 +136,7 @@ struct ifacaddr6
 {
        struct in6_addr         aca_addr;
        struct inet6_dev        *aca_idev;
+       struct rt6_info         *aca_rt;
        struct ifacaddr6        *aca_next;
        int                     aca_users;
        atomic_t                aca_refcnt;
@@ -148,6 +152,7 @@ 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);
 };
 
@@ -176,11 +181,8 @@ struct inet6_dev
 
 #ifdef CONFIG_IPV6_PRIVACY
        u8                      rndid[8];
-       u8                      entropy[8];
        struct timer_list       regen_timer;
        struct inet6_ifaddr     *tempaddr_list;
-       __u8                    work_eui64[8];
-       __u8                    work_digest[16];
 #endif
 
        struct neigh_parms      *nd_parms;
@@ -188,6 +190,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;
@@ -264,5 +267,20 @@ 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)
+{
+       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[6]  = 0x60;         /* IPv6 signature */
+       buf[7]  = 0x1b;
+       buf[8]  = 0;            /* P_Key */
+       buf[9]  = 0;
+       memcpy(buf + 10, addr->s6_addr + 6, 10);
+}
 #endif
 #endif