diff options
Diffstat (limited to 'include/net/if_inet6.h')
-rw-r--r-- | include/net/if_inet6.h | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/include/net/if_inet6.h b/include/net/if_inet6.h index 545d8b059bef..f95ff8d9aa47 100644 --- a/include/net/if_inet6.h +++ b/include/net/if_inet6.h | |||
@@ -32,6 +32,13 @@ | |||
32 | 32 | ||
33 | #ifdef __KERNEL__ | 33 | #ifdef __KERNEL__ |
34 | 34 | ||
35 | enum { | ||
36 | INET6_IFADDR_STATE_DAD, | ||
37 | INET6_IFADDR_STATE_POSTDAD, | ||
38 | INET6_IFADDR_STATE_UP, | ||
39 | INET6_IFADDR_STATE_DEAD, | ||
40 | }; | ||
41 | |||
35 | struct inet6_ifaddr { | 42 | struct inet6_ifaddr { |
36 | struct in6_addr addr; | 43 | struct in6_addr addr; |
37 | __u32 prefix_len; | 44 | __u32 prefix_len; |
@@ -40,6 +47,9 @@ struct inet6_ifaddr { | |||
40 | __u32 prefered_lft; | 47 | __u32 prefered_lft; |
41 | atomic_t refcnt; | 48 | atomic_t refcnt; |
42 | spinlock_t lock; | 49 | spinlock_t lock; |
50 | spinlock_t state_lock; | ||
51 | |||
52 | int state; | ||
43 | 53 | ||
44 | __u8 probes; | 54 | __u8 probes; |
45 | __u8 flags; | 55 | __u8 flags; |
@@ -54,16 +64,15 @@ struct inet6_ifaddr { | |||
54 | struct inet6_dev *idev; | 64 | struct inet6_dev *idev; |
55 | struct rt6_info *rt; | 65 | struct rt6_info *rt; |
56 | 66 | ||
57 | struct inet6_ifaddr *lst_next; /* next addr in addr_lst */ | 67 | struct hlist_node addr_lst; |
58 | struct inet6_ifaddr *if_next; /* next addr in inet6_dev */ | 68 | struct list_head if_list; |
59 | 69 | ||
60 | #ifdef CONFIG_IPV6_PRIVACY | 70 | #ifdef CONFIG_IPV6_PRIVACY |
61 | struct inet6_ifaddr *tmp_next; /* next addr in tempaddr_lst */ | 71 | struct list_head tmp_list; |
62 | struct inet6_ifaddr *ifpub; | 72 | struct inet6_ifaddr *ifpub; |
63 | int regen_count; | 73 | int regen_count; |
64 | #endif | 74 | #endif |
65 | 75 | struct rcu_head rcu; | |
66 | int dead; | ||
67 | }; | 76 | }; |
68 | 77 | ||
69 | struct ip6_sf_socklist { | 78 | struct ip6_sf_socklist { |
@@ -151,9 +160,9 @@ struct ipv6_devstat { | |||
151 | }; | 160 | }; |
152 | 161 | ||
153 | struct inet6_dev { | 162 | struct inet6_dev { |
154 | struct net_device *dev; | 163 | struct net_device *dev; |
155 | 164 | ||
156 | struct inet6_ifaddr *addr_list; | 165 | struct list_head addr_list; |
157 | 166 | ||
158 | struct ifmcaddr6 *mc_list; | 167 | struct ifmcaddr6 *mc_list; |
159 | struct ifmcaddr6 *mc_tomb; | 168 | struct ifmcaddr6 *mc_tomb; |
@@ -175,7 +184,7 @@ struct inet6_dev { | |||
175 | #ifdef CONFIG_IPV6_PRIVACY | 184 | #ifdef CONFIG_IPV6_PRIVACY |
176 | u8 rndid[8]; | 185 | u8 rndid[8]; |
177 | struct timer_list regen_timer; | 186 | struct timer_list regen_timer; |
178 | struct inet6_ifaddr *tempaddr_list; | 187 | struct list_head tempaddr_list; |
179 | #endif | 188 | #endif |
180 | 189 | ||
181 | struct neigh_parms *nd_parms; | 190 | struct neigh_parms *nd_parms; |