Lines Matching refs:aca
301 struct ifacaddr6 *aca; in ipv6_dev_ac_inc() local
316 for (aca = idev->ac_list; aca; aca = aca->aca_next) { in ipv6_dev_ac_inc()
317 if (ipv6_addr_cmp(&aca->aca_addr, addr) == 0) { in ipv6_dev_ac_inc()
318 aca->aca_users++; in ipv6_dev_ac_inc()
329 aca = kmalloc(sizeof(struct ifacaddr6), GFP_ATOMIC); in ipv6_dev_ac_inc()
331 if (aca == NULL) { in ipv6_dev_ac_inc()
337 memset(aca, 0, sizeof(struct ifacaddr6)); in ipv6_dev_ac_inc()
339 ipv6_addr_copy(&aca->aca_addr, addr); in ipv6_dev_ac_inc()
340 aca->aca_idev = idev; in ipv6_dev_ac_inc()
341 aca->aca_users = 1; in ipv6_dev_ac_inc()
342 atomic_set(&aca->aca_refcnt, 2); in ipv6_dev_ac_inc()
343 aca->aca_lock = SPIN_LOCK_UNLOCKED; in ipv6_dev_ac_inc()
345 aca->aca_next = idev->ac_list; in ipv6_dev_ac_inc()
346 idev->ac_list = aca; in ipv6_dev_ac_inc()
349 ip6_rt_addr_add(&aca->aca_addr, dev); in ipv6_dev_ac_inc()
351 addrconf_join_solict(dev, &aca->aca_addr); in ipv6_dev_ac_inc()
353 aca_put(aca); in ipv6_dev_ac_inc()
363 struct ifacaddr6 *aca, *prev_aca; in ipv6_dev_ac_dec() local
371 for (aca = idev->ac_list; aca; aca = aca->aca_next) { in ipv6_dev_ac_dec()
372 if (ipv6_addr_cmp(&aca->aca_addr, addr) == 0) in ipv6_dev_ac_dec()
374 prev_aca = aca; in ipv6_dev_ac_dec()
376 if (!aca) { in ipv6_dev_ac_dec()
381 if (--aca->aca_users > 0) { in ipv6_dev_ac_dec()
387 prev_aca->aca_next = aca->aca_next; in ipv6_dev_ac_dec()
389 idev->ac_list = aca->aca_next; in ipv6_dev_ac_dec()
391 addrconf_leave_solict(dev, &aca->aca_addr); in ipv6_dev_ac_dec()
393 ip6_rt_addr_del(&aca->aca_addr, dev); in ipv6_dev_ac_dec()
395 aca_put(aca); in ipv6_dev_ac_dec()
406 struct ifacaddr6 *aca; in ipv6_chk_acast_dev() local
411 for (aca = idev->ac_list; aca; aca = aca->aca_next) in ipv6_chk_acast_dev()
412 if (ipv6_addr_cmp(&aca->aca_addr, addr) == 0) in ipv6_chk_acast_dev()
416 return aca != 0; in ipv6_chk_acast_dev()