net: fix lock_sock_bh/unlock_sock_bh
[pandora-kernel.git] / include / net / if_inet6.h
index 545d8b0..f95ff8d 100644 (file)
 
 #ifdef __KERNEL__
 
+enum {
+       INET6_IFADDR_STATE_DAD,
+       INET6_IFADDR_STATE_POSTDAD,
+       INET6_IFADDR_STATE_UP,
+       INET6_IFADDR_STATE_DEAD,
+};
+
 struct inet6_ifaddr {
        struct in6_addr         addr;
        __u32                   prefix_len;
@@ -40,6 +47,9 @@ struct inet6_ifaddr {
        __u32                   prefered_lft;
        atomic_t                refcnt;
        spinlock_t              lock;
+       spinlock_t              state_lock;
+
+       int                     state;
 
        __u8                    probes;
        __u8                    flags;
@@ -54,16 +64,15 @@ struct inet6_ifaddr {
        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 */
+       struct hlist_node       addr_lst;
+       struct list_head        if_list;
 
 #ifdef CONFIG_IPV6_PRIVACY
-       struct inet6_ifaddr     *tmp_next;      /* next addr in tempaddr_lst */
+       struct list_head        tmp_list;
        struct inet6_ifaddr     *ifpub;
        int                     regen_count;
 #endif
-
-       int                     dead;
+       struct rcu_head         rcu;
 };
 
 struct ip6_sf_socklist {
@@ -151,9 +160,9 @@ struct ipv6_devstat {
 };
 
 struct inet6_dev {
-       struct net_device               *dev;
+       struct net_device       *dev;
 
-       struct inet6_ifaddr     *addr_list;
+       struct list_head        addr_list;
 
        struct ifmcaddr6        *mc_list;
        struct ifmcaddr6        *mc_tomb;
@@ -175,7 +184,7 @@ struct inet6_dev {
 #ifdef CONFIG_IPV6_PRIVACY
        u8                      rndid[8];
        struct timer_list       regen_timer;
-       struct inet6_ifaddr     *tempaddr_list;
+       struct list_head        tempaddr_list;
 #endif
 
        struct neigh_parms      *nd_parms;