Lines Matching refs:fn
839 static void find_rr_leaf(struct fib6_node *fn, struct fib6_info *leaf, in find_rr_leaf() argument
860 static void rt6_select(struct net *net, struct fib6_node *fn, int oif, in rt6_select() argument
863 struct fib6_info *leaf = rcu_dereference(fn->leaf); in rt6_select()
874 rt0 = rcu_dereference(fn->rr_ptr); in rt6_select()
888 if (fn->fn_bit != key_plen) in rt6_select()
891 find_rr_leaf(fn, leaf, rt0, oif, strict, &do_rr, res); in rt6_select()
903 rcu_assign_pointer(fn->rr_ptr, next); in rt6_select()
1138 static struct fib6_node* fib6_backtrack(struct fib6_node *fn, in fib6_backtrack() argument
1143 if (fn->fn_flags & RTN_TL_ROOT) in fib6_backtrack()
1145 pn = rcu_dereference(fn->parent); in fib6_backtrack()
1147 if (sn && sn != fn) in fib6_backtrack()
1148 fn = fib6_node_lookup(sn, NULL, saddr); in fib6_backtrack()
1150 fn = pn; in fib6_backtrack()
1151 if (fn->fn_flags & RTN_RTINFO) in fib6_backtrack()
1152 return fn; in fib6_backtrack()
1206 struct fib6_node *fn; in ip6_pol_route_lookup() local
1213 fn = fib6_node_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); in ip6_pol_route_lookup()
1215 res.f6i = rcu_dereference(fn->leaf); in ip6_pol_route_lookup()
1223 fn = fib6_backtrack(fn, &fl6->saddr); in ip6_pol_route_lookup()
1224 if (fn) in ip6_pol_route_lookup()
2176 struct fib6_node *fn, *saved_fn; in fib6_table_lookup() local
2178 fn = fib6_node_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); in fib6_table_lookup()
2179 saved_fn = fn; in fib6_table_lookup()
2185 rt6_select(net, fn, oif, res, strict); in fib6_table_lookup()
2187 fn = fib6_backtrack(fn, &fl6->saddr); in fib6_table_lookup()
2188 if (fn) in fib6_table_lookup()
2193 fn = saved_fn; in fib6_table_lookup()
2799 struct fib6_node *fn; in ip6_link_failure() local
2803 fn = rcu_dereference(from->fib6_node); in ip6_link_failure()
2804 if (fn && (rt->rt6i_flags & RTF_DEFAULT)) in ip6_link_failure()
2805 WRITE_ONCE(fn->fn_sernum, -1); in ip6_link_failure()
3057 struct fib6_node *fn; in __ip6_route_redirect() local
3076 fn = fib6_node_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); in __ip6_route_redirect()
3078 for_each_fib6_node_rt_rcu(fn) { in __ip6_route_redirect()
3108 fn = fib6_backtrack(fn, &fl6->saddr); in __ip6_route_redirect()
3109 if (fn) in __ip6_route_redirect()
3924 struct fib6_node *fn; in __ip6_del_rt_siblings() local
3946 fn = rcu_dereference_protected(rt->fib6_node, in __ip6_del_rt_siblings()
3948 if (rcu_access_pointer(fn->leaf) == rt) { in __ip6_del_rt_siblings()
4049 struct fib6_node *fn; in ip6_route_del() local
4060 fn = fib6_locate(&table->tb6_root, in ip6_route_del()
4065 if (fn) { in ip6_route_del()
4066 for_each_fib6_node_rt_rcu(fn) { in ip6_route_del()
4281 struct fib6_node *fn; in rt6_get_route_info() local
4290 fn = fib6_locate(&table->tb6_root, prefix, prefixlen, NULL, 0, true); in rt6_get_route_info()
4291 if (!fn) in rt6_get_route_info()
4294 for_each_fib6_node_rt_rcu(fn) { in rt6_get_route_info()
4660 struct fib6_node *fn; in rt6_multipath_first_sibling() local
4662 fn = rcu_dereference_protected(rt->fib6_node, in rt6_multipath_first_sibling()
4664 iter = rcu_dereference_protected(fn->leaf, in rt6_multipath_first_sibling()
5191 struct fib6_node *fn; in ip6_route_mpath_should_notify() local
5194 fn = rcu_dereference(rt->fib6_node); in ip6_route_mpath_should_notify()
5195 if (!fn) in ip6_route_mpath_should_notify()
5198 leaf = rcu_dereference(fn->leaf); in ip6_route_mpath_should_notify()