Lines Matching refs:leaf
240 rcu_assign_pointer(table->tb6_root.leaf,
471 err = fib6_rt_dump(w->leaf, w->args);
472 w->leaf = NULL;
534 w->leaf = rt;
555 w->leaf = NULL;
773 struct fib6_info *leaf = rcu_dereference_protected(fn->leaf,
775 key = (struct rt6key *)((u8 *)leaf + offset);
801 RCU_INIT_POINTER(fn->leaf, NULL);
802 fib6_info_release(leaf);
805 rcu_access_pointer(fn->leaf) ==
807 RCU_INIT_POINTER(fn->leaf, NULL);
847 * Create new leaf node without children.
888 * (new leaf node)[ln] (old node)[fn]
913 in->leaf = fn->leaf;
914 fib6_info_hold(rcu_dereference_protected(in->leaf,
938 * (new leaf node)[ln]
1057 struct fib6_info *leaf = rcu_dereference_protected(fn->leaf,
1060 if (!(fn->fn_flags & RTN_RTINFO) && leaf == rt) {
1064 rcu_assign_pointer(fn->leaf, new_leaf);
1084 struct fib6_info *leaf = rcu_dereference_protected(fn->leaf,
1102 ins = &fn->leaf;
1104 for (iter = leaf; iter;
1186 if (ins == &fn->leaf)
1195 sibling = leaf;
1241 (notify_sibling_rt || ins == &fn->leaf)) {
1297 if (!info->skip_notify_kernel && ins == &fn->leaf) {
1470 * sn[new leaf node]
1479 rcu_assign_pointer(sfn->leaf,
1483 /* Now add the first leaf node to new subtree */
1515 if (!rcu_access_pointer(fn->leaf)) {
1518 rcu_assign_pointer(fn->leaf,
1522 rcu_assign_pointer(fn->leaf, rt);
1554 * If fib6_add_1 has cleared the old leaf pointer in the
1555 * super-tree leaf node we have to find a new one for it.
1559 rcu_dereference_protected(pn->leaf,
1563 RCU_INIT_POINTER(pn->leaf, NULL);
1573 rcu_assign_pointer(pn->leaf, pn_leaf);
1584 /* fn->leaf could be NULL and fib6_repair_tree() needs to be called if:
1594 !rcu_access_pointer(fn->leaf))))
1643 struct fib6_info *leaf = rcu_dereference(fn->leaf);
1646 if (!leaf)
1649 key = (struct rt6key *) ((u8 *)leaf + args->offset);
1726 struct fib6_info *leaf = rcu_dereference(fn->leaf);
1730 if (!leaf) {
1737 key = (struct rt6key *)((u8 *)leaf + offset);
1821 return rcu_dereference_protected(child_left->leaf,
1824 return rcu_dereference_protected(child_right->leaf,
1848 /* Set fn->leaf to null_entry for root node. */
1850 rcu_assign_pointer(fn->leaf, net->ipv6.fib6_null_entry);
1865 struct fib6_info *fn_leaf = rcu_dereference_protected(fn->leaf,
1867 struct fib6_info *pn_leaf = rcu_dereference_protected(pn->leaf,
1903 rcu_assign_pointer(fn->leaf, new_fn_leaf);
1960 RCU_INIT_POINTER(pn->leaf, NULL);
1969 struct fib6_info *leaf, *replace_rt = NULL;
1980 leaf = rcu_dereference_protected(fn->leaf,
1982 if (leaf == rt && !rt->fib6_nsiblings) {
2009 if (rt->fib6_metric == leaf->fib6_metric &&
2010 rt6_qualify_for_ecmp(leaf))
2024 if (w->state == FWS_C && w->leaf == rt) {
2026 w->leaf = rcu_dereference_protected(rt->fib6_next,
2028 if (!w->leaf)
2038 if (!rcu_access_pointer(fn->leaf)) {
2082 * Walk the leaf entries looking for ourself
2085 for (rtp = &fn->leaf; *rtp; rtp = rtp_next) {
2164 w->leaf = rcu_dereference_protected(fn->leaf, 1);
2167 if (w->leaf && fn->fn_flags & RTN_RTINFO) {
2205 w->leaf = rcu_dereference_protected(w->node->leaf, 1);
2245 w->leaf = NULL;
2252 w->leaf = rt;
2273 w->leaf = rt;
2485 rcu_assign_pointer(net->ipv6.fib6_main_tbl->tb6_root.leaf,
2498 rcu_assign_pointer(net->ipv6.fib6_local_tbl->tb6_root.leaf,
2619 iter->w.leaf = NULL;
2631 iter->w.leaf = rcu_dereference_protected(
2632 iter->w.leaf->fib6_next,
2635 if (!iter->skip && iter->w.leaf)
2637 } while (iter->w.leaf);
2711 return iter->w.leaf;
2789 iter->w.leaf = NULL;