Lines Matching refs:aca

204 static void aca_get(struct ifacaddr6 *aca)  in aca_get()  argument
206 atomic_inc(&aca->aca_refcnt); in aca_get()
222 struct ifacaddr6 *aca; in aca_alloc() local
224 aca = kzalloc(sizeof(*aca), GFP_ATOMIC); in aca_alloc()
225 if (!aca) in aca_alloc()
228 aca->aca_addr = *addr; in aca_alloc()
230 aca->aca_idev = idev; in aca_alloc()
231 aca->aca_rt = rt; in aca_alloc()
232 aca->aca_users = 1; in aca_alloc()
234 aca->aca_cstamp = aca->aca_tstamp = jiffies; in aca_alloc()
235 atomic_set(&aca->aca_refcnt, 1); in aca_alloc()
237 return aca; in aca_alloc()
245 struct ifacaddr6 *aca; in __ipv6_dev_ac_inc() local
257 for (aca = idev->ac_list; aca; aca = aca->aca_next) { in __ipv6_dev_ac_inc()
258 if (ipv6_addr_equal(&aca->aca_addr, addr)) { in __ipv6_dev_ac_inc()
259 aca->aca_users++; in __ipv6_dev_ac_inc()
270 aca = aca_alloc(rt, addr); in __ipv6_dev_ac_inc()
271 if (!aca) { in __ipv6_dev_ac_inc()
277 aca->aca_next = idev->ac_list; in __ipv6_dev_ac_inc()
278 idev->ac_list = aca; in __ipv6_dev_ac_inc()
283 aca_get(aca); in __ipv6_dev_ac_inc()
288 addrconf_join_solict(idev->dev, &aca->aca_addr); in __ipv6_dev_ac_inc()
290 aca_put(aca); in __ipv6_dev_ac_inc()
302 struct ifacaddr6 *aca, *prev_aca; in __ipv6_dev_ac_dec() local
308 for (aca = idev->ac_list; aca; aca = aca->aca_next) { in __ipv6_dev_ac_dec()
309 if (ipv6_addr_equal(&aca->aca_addr, addr)) in __ipv6_dev_ac_dec()
311 prev_aca = aca; in __ipv6_dev_ac_dec()
313 if (!aca) { in __ipv6_dev_ac_dec()
317 if (--aca->aca_users > 0) { in __ipv6_dev_ac_dec()
322 prev_aca->aca_next = aca->aca_next; in __ipv6_dev_ac_dec()
324 idev->ac_list = aca->aca_next; in __ipv6_dev_ac_dec()
326 addrconf_leave_solict(idev, &aca->aca_addr); in __ipv6_dev_ac_dec()
328 dst_hold(&aca->aca_rt->dst); in __ipv6_dev_ac_dec()
329 ip6_del_rt(aca->aca_rt); in __ipv6_dev_ac_dec()
331 aca_put(aca); in __ipv6_dev_ac_dec()
347 struct ifacaddr6 *aca; in ipv6_ac_destroy_dev() local
350 while ((aca = idev->ac_list) != NULL) { in ipv6_ac_destroy_dev()
351 idev->ac_list = aca->aca_next; in ipv6_ac_destroy_dev()
354 addrconf_leave_solict(idev, &aca->aca_addr); in ipv6_ac_destroy_dev()
356 dst_hold(&aca->aca_rt->dst); in ipv6_ac_destroy_dev()
357 ip6_del_rt(aca->aca_rt); in ipv6_ac_destroy_dev()
359 aca_put(aca); in ipv6_ac_destroy_dev()
373 struct ifacaddr6 *aca; in ipv6_chk_acast_dev() local
378 for (aca = idev->ac_list; aca; aca = aca->aca_next) in ipv6_chk_acast_dev()
379 if (ipv6_addr_equal(&aca->aca_addr, addr)) in ipv6_chk_acast_dev()
382 return aca != NULL; in ipv6_chk_acast_dev()