Lines Matching refs:iter

694 	struct rt6_info *iter = NULL;  in fib6_add_rt2node()  local
707 for (iter = fn->leaf; iter; iter = iter->dst.rt6_next) { in fib6_add_rt2node()
712 if (iter->rt6i_metric == rt->rt6i_metric) { in fib6_add_rt2node()
720 if (rt_can_ecmp == rt6_qualify_for_ecmp(iter)) { in fib6_add_rt2node()
729 if (iter->dst.dev == rt->dst.dev && in fib6_add_rt2node()
730 iter->rt6i_idev == rt->rt6i_idev && in fib6_add_rt2node()
731 ipv6_addr_equal(&iter->rt6i_gateway, in fib6_add_rt2node()
735 if (!(iter->rt6i_flags & RTF_EXPIRES)) in fib6_add_rt2node()
738 rt6_clean_expires(iter); in fib6_add_rt2node()
740 rt6_set_expires(iter, rt->dst.expires); in fib6_add_rt2node()
755 rt6_qualify_for_ecmp(iter)) in fib6_add_rt2node()
759 if (iter->rt6i_metric > rt->rt6i_metric) in fib6_add_rt2node()
763 ins = &iter->dst.rt6_next; in fib6_add_rt2node()
769 iter = *ins; in fib6_add_rt2node()
819 rt->dst.rt6_next = iter; in fib6_add_rt2node()
847 rt->dst.rt6_next = iter->dst.rt6_next; in fib6_add_rt2node()
854 nsiblings = iter->rt6i_nsiblings; in fib6_add_rt2node()
855 fib6_purge_rt(iter, fn, info->nl_net); in fib6_add_rt2node()
856 rt6_release(iter); in fib6_add_rt2node()
861 iter = *ins; in fib6_add_rt2node()
862 while (iter) { in fib6_add_rt2node()
863 if (rt6_qualify_for_ecmp(iter)) { in fib6_add_rt2node()
864 *ins = iter->dst.rt6_next; in fib6_add_rt2node()
865 fib6_purge_rt(iter, fn, info->nl_net); in fib6_add_rt2node()
866 rt6_release(iter); in fib6_add_rt2node()
869 ins = &iter->dst.rt6_next; in fib6_add_rt2node()
871 iter = *ins; in fib6_add_rt2node()
1236 int iter = 0; in fib6_repair_tree() local
1239 RT6_TRACE("fixing tree: plen=%d iter=%d\n", fn->fn_bit, iter); in fib6_repair_tree()
1240 iter++; in fib6_repair_tree()
1889 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_show() local
1907 iter->w.leaf = NULL; in ipv6_route_seq_show()
1913 struct ipv6_route_iter *iter = w->args; in ipv6_route_yield() local
1915 if (!iter->skip) in ipv6_route_yield()
1919 iter->w.leaf = iter->w.leaf->dst.rt6_next; in ipv6_route_yield()
1920 iter->skip--; in ipv6_route_yield()
1921 if (!iter->skip && iter->w.leaf) in ipv6_route_yield()
1923 } while (iter->w.leaf); in ipv6_route_yield()
1928 static void ipv6_route_seq_setup_walk(struct ipv6_route_iter *iter) in ipv6_route_seq_setup_walk() argument
1930 memset(&iter->w, 0, sizeof(iter->w)); in ipv6_route_seq_setup_walk()
1931 iter->w.func = ipv6_route_yield; in ipv6_route_seq_setup_walk()
1932 iter->w.root = &iter->tbl->tb6_root; in ipv6_route_seq_setup_walk()
1933 iter->w.state = FWS_INIT; in ipv6_route_seq_setup_walk()
1934 iter->w.node = iter->w.root; in ipv6_route_seq_setup_walk()
1935 iter->w.args = iter; in ipv6_route_seq_setup_walk()
1936 iter->sernum = iter->w.root->fn_sernum; in ipv6_route_seq_setup_walk()
1937 INIT_LIST_HEAD(&iter->w.lh); in ipv6_route_seq_setup_walk()
1938 fib6_walker_link(&iter->w); in ipv6_route_seq_setup_walk()
1962 static void ipv6_route_check_sernum(struct ipv6_route_iter *iter) in ipv6_route_check_sernum() argument
1964 if (iter->sernum != iter->w.root->fn_sernum) { in ipv6_route_check_sernum()
1965 iter->sernum = iter->w.root->fn_sernum; in ipv6_route_check_sernum()
1966 iter->w.state = FWS_INIT; in ipv6_route_check_sernum()
1967 iter->w.node = iter->w.root; in ipv6_route_check_sernum()
1968 WARN_ON(iter->w.skip); in ipv6_route_check_sernum()
1969 iter->w.skip = iter->w.count; in ipv6_route_check_sernum()
1978 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_next() local
1990 ipv6_route_check_sernum(iter); in ipv6_route_seq_next()
1991 read_lock(&iter->tbl->tb6_lock); in ipv6_route_seq_next()
1992 r = fib6_walk_continue(&iter->w); in ipv6_route_seq_next()
1993 read_unlock(&iter->tbl->tb6_lock); in ipv6_route_seq_next()
1997 return iter->w.leaf; in ipv6_route_seq_next()
1999 fib6_walker_unlink(&iter->w); in ipv6_route_seq_next()
2002 fib6_walker_unlink(&iter->w); in ipv6_route_seq_next()
2004 iter->tbl = ipv6_route_seq_next_table(iter->tbl, net); in ipv6_route_seq_next()
2005 if (!iter->tbl) in ipv6_route_seq_next()
2008 ipv6_route_seq_setup_walk(iter); in ipv6_route_seq_next()
2016 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_start() local
2019 iter->tbl = ipv6_route_seq_next_table(NULL, net); in ipv6_route_seq_start()
2020 iter->skip = *pos; in ipv6_route_seq_start()
2022 if (iter->tbl) { in ipv6_route_seq_start()
2023 ipv6_route_seq_setup_walk(iter); in ipv6_route_seq_start()
2030 static bool ipv6_route_iter_active(struct ipv6_route_iter *iter) in ipv6_route_iter_active() argument
2032 struct fib6_walker *w = &iter->w; in ipv6_route_iter_active()
2039 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_stop() local
2041 if (ipv6_route_iter_active(iter)) in ipv6_route_seq_stop()
2042 fib6_walker_unlink(&iter->w); in ipv6_route_seq_stop()