anycast.c (1da177e4c3f41524e886b7f1b8a0c1fc7321cac2) anycast.c (0d51aa80a9b1db43920c0770c3bb842dd823c005)
1/*
2 * Anycast support for IPv6
3 * Linux INET6 implementation
4 *
5 * Authors:
6 * David L Stevens (dlstevens@us.ibm.com)
7 *
8 * based heavily on net/ipv6/mcast.c

--- 323 unchanged lines hidden (view full) ---

332 atomic_set(&aca->aca_refcnt, 2);
333 spin_lock_init(&aca->aca_lock);
334
335 aca->aca_next = idev->ac_list;
336 idev->ac_list = aca;
337 write_unlock_bh(&idev->lock);
338
339 dst_hold(&rt->u.dst);
1/*
2 * Anycast support for IPv6
3 * Linux INET6 implementation
4 *
5 * Authors:
6 * David L Stevens (dlstevens@us.ibm.com)
7 *
8 * based heavily on net/ipv6/mcast.c

--- 323 unchanged lines hidden (view full) ---

332 atomic_set(&aca->aca_refcnt, 2);
333 spin_lock_init(&aca->aca_lock);
334
335 aca->aca_next = idev->ac_list;
336 idev->ac_list = aca;
337 write_unlock_bh(&idev->lock);
338
339 dst_hold(&rt->u.dst);
340 if (ip6_ins_rt(rt, NULL, NULL))
340 if (ip6_ins_rt(rt, NULL, NULL, NULL))
341 dst_release(&rt->u.dst);
342
343 addrconf_join_solict(dev, &aca->aca_addr);
344
345 aca_put(aca);
346 return 0;
347out:
348 write_unlock_bh(&idev->lock);

--- 26 unchanged lines hidden (view full) ---

375 if (prev_aca)
376 prev_aca->aca_next = aca->aca_next;
377 else
378 idev->ac_list = aca->aca_next;
379 write_unlock_bh(&idev->lock);
380 addrconf_leave_solict(idev, &aca->aca_addr);
381
382 dst_hold(&aca->aca_rt->u.dst);
341 dst_release(&rt->u.dst);
342
343 addrconf_join_solict(dev, &aca->aca_addr);
344
345 aca_put(aca);
346 return 0;
347out:
348 write_unlock_bh(&idev->lock);

--- 26 unchanged lines hidden (view full) ---

375 if (prev_aca)
376 prev_aca->aca_next = aca->aca_next;
377 else
378 idev->ac_list = aca->aca_next;
379 write_unlock_bh(&idev->lock);
380 addrconf_leave_solict(idev, &aca->aca_addr);
381
382 dst_hold(&aca->aca_rt->u.dst);
383 if (ip6_del_rt(aca->aca_rt, NULL, NULL))
383 if (ip6_del_rt(aca->aca_rt, NULL, NULL, NULL))
384 dst_free(&aca->aca_rt->u.dst);
385 else
386 dst_release(&aca->aca_rt->u.dst);
387
388 aca_put(aca);
389 return 0;
390}
391

--- 203 unchanged lines hidden ---
384 dst_free(&aca->aca_rt->u.dst);
385 else
386 dst_release(&aca->aca_rt->u.dst);
387
388 aca_put(aca);
389 return 0;
390}
391

--- 203 unchanged lines hidden ---