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 --- |