aca               217 net/ipv6/anycast.c static void ipv6_add_acaddr_hash(struct net *net, struct ifacaddr6 *aca)
aca               219 net/ipv6/anycast.c 	unsigned int hash = inet6_acaddr_hash(net, &aca->aca_addr);
aca               222 net/ipv6/anycast.c 	hlist_add_head_rcu(&aca->aca_addr_lst, &inet6_acaddr_lst[hash]);
aca               226 net/ipv6/anycast.c static void ipv6_del_acaddr_hash(struct ifacaddr6 *aca)
aca               229 net/ipv6/anycast.c 	hlist_del_init_rcu(&aca->aca_addr_lst);
aca               233 net/ipv6/anycast.c static void aca_get(struct ifacaddr6 *aca)
aca               235 net/ipv6/anycast.c 	refcount_inc(&aca->aca_refcnt);
aca               240 net/ipv6/anycast.c 	struct ifacaddr6 *aca = container_of(h, struct ifacaddr6, rcu);
aca               242 net/ipv6/anycast.c 	fib6_info_release(aca->aca_rt);
aca               243 net/ipv6/anycast.c 	kfree(aca);
aca               256 net/ipv6/anycast.c 	struct ifacaddr6 *aca;
aca               258 net/ipv6/anycast.c 	aca = kzalloc(sizeof(*aca), GFP_ATOMIC);
aca               259 net/ipv6/anycast.c 	if (!aca)
aca               262 net/ipv6/anycast.c 	aca->aca_addr = *addr;
aca               264 net/ipv6/anycast.c 	aca->aca_rt = f6i;
aca               265 net/ipv6/anycast.c 	INIT_HLIST_NODE(&aca->aca_addr_lst);
aca               266 net/ipv6/anycast.c 	aca->aca_users = 1;
aca               268 net/ipv6/anycast.c 	aca->aca_cstamp = aca->aca_tstamp = jiffies;
aca               269 net/ipv6/anycast.c 	refcount_set(&aca->aca_refcnt, 1);
aca               271 net/ipv6/anycast.c 	return aca;
aca               279 net/ipv6/anycast.c 	struct ifacaddr6 *aca;
aca               292 net/ipv6/anycast.c 	for (aca = idev->ac_list; aca; aca = aca->aca_next) {
aca               293 net/ipv6/anycast.c 		if (ipv6_addr_equal(&aca->aca_addr, addr)) {
aca               294 net/ipv6/anycast.c 			aca->aca_users++;
aca               306 net/ipv6/anycast.c 	aca = aca_alloc(f6i, addr);
aca               307 net/ipv6/anycast.c 	if (!aca) {
aca               313 net/ipv6/anycast.c 	aca->aca_next = idev->ac_list;
aca               314 net/ipv6/anycast.c 	idev->ac_list = aca;
aca               319 net/ipv6/anycast.c 	aca_get(aca);
aca               322 net/ipv6/anycast.c 	ipv6_add_acaddr_hash(net, aca);
aca               326 net/ipv6/anycast.c 	addrconf_join_solict(idev->dev, &aca->aca_addr);
aca               328 net/ipv6/anycast.c 	aca_put(aca);
aca               340 net/ipv6/anycast.c 	struct ifacaddr6 *aca, *prev_aca;
aca               346 net/ipv6/anycast.c 	for (aca = idev->ac_list; aca; aca = aca->aca_next) {
aca               347 net/ipv6/anycast.c 		if (ipv6_addr_equal(&aca->aca_addr, addr))
aca               349 net/ipv6/anycast.c 		prev_aca = aca;
aca               351 net/ipv6/anycast.c 	if (!aca) {
aca               355 net/ipv6/anycast.c 	if (--aca->aca_users > 0) {
aca               360 net/ipv6/anycast.c 		prev_aca->aca_next = aca->aca_next;
aca               362 net/ipv6/anycast.c 		idev->ac_list = aca->aca_next;
aca               364 net/ipv6/anycast.c 	ipv6_del_acaddr_hash(aca);
aca               365 net/ipv6/anycast.c 	addrconf_leave_solict(idev, &aca->aca_addr);
aca               367 net/ipv6/anycast.c 	ip6_del_rt(dev_net(idev->dev), aca->aca_rt);
aca               369 net/ipv6/anycast.c 	aca_put(aca);
aca               385 net/ipv6/anycast.c 	struct ifacaddr6 *aca;
aca               388 net/ipv6/anycast.c 	while ((aca = idev->ac_list) != NULL) {
aca               389 net/ipv6/anycast.c 		idev->ac_list = aca->aca_next;
aca               392 net/ipv6/anycast.c 		ipv6_del_acaddr_hash(aca);
aca               394 net/ipv6/anycast.c 		addrconf_leave_solict(idev, &aca->aca_addr);
aca               396 net/ipv6/anycast.c 		ip6_del_rt(dev_net(idev->dev), aca->aca_rt);
aca               398 net/ipv6/anycast.c 		aca_put(aca);
aca               412 net/ipv6/anycast.c 	struct ifacaddr6 *aca;
aca               417 net/ipv6/anycast.c 		for (aca = idev->ac_list; aca; aca = aca->aca_next)
aca               418 net/ipv6/anycast.c 			if (ipv6_addr_equal(&aca->aca_addr, addr))
aca               421 net/ipv6/anycast.c 		return aca != NULL;
aca               433 net/ipv6/anycast.c 	struct ifacaddr6 *aca;
aca               442 net/ipv6/anycast.c 		hlist_for_each_entry_rcu(aca, &inet6_acaddr_lst[hash],
aca               444 net/ipv6/anycast.c 			nh_dev = fib6_info_nh_dev(aca->aca_rt);
aca               447 net/ipv6/anycast.c 			if (ipv6_addr_equal(&aca->aca_addr, addr)) {