Lines Matching refs:iter
735 struct rt6_info *iter = NULL; in fib6_add_rt2node() local
748 for (iter = fn->leaf; iter; iter = iter->dst.rt6_next) { in fib6_add_rt2node()
753 if (iter->rt6i_metric == rt->rt6i_metric) { in fib6_add_rt2node()
761 if (rt_can_ecmp == rt6_qualify_for_ecmp(iter)) { in fib6_add_rt2node()
770 if (iter->dst.dev == rt->dst.dev && in fib6_add_rt2node()
771 iter->rt6i_idev == rt->rt6i_idev && in fib6_add_rt2node()
772 ipv6_addr_equal(&iter->rt6i_gateway, in fib6_add_rt2node()
776 if (!(iter->rt6i_flags & RTF_EXPIRES)) in fib6_add_rt2node()
779 rt6_clean_expires(iter); in fib6_add_rt2node()
781 rt6_set_expires(iter, rt->dst.expires); in fib6_add_rt2node()
782 iter->rt6i_pmtu = rt->rt6i_pmtu; in fib6_add_rt2node()
797 rt6_qualify_for_ecmp(iter)) in fib6_add_rt2node()
801 if (iter->rt6i_metric > rt->rt6i_metric) in fib6_add_rt2node()
805 ins = &iter->dst.rt6_next; in fib6_add_rt2node()
811 iter = *ins; in fib6_add_rt2node()
861 rt->dst.rt6_next = iter; in fib6_add_rt2node()
889 rt->dst.rt6_next = iter->dst.rt6_next; in fib6_add_rt2node()
896 nsiblings = iter->rt6i_nsiblings; in fib6_add_rt2node()
897 fib6_purge_rt(iter, fn, info->nl_net); in fib6_add_rt2node()
898 rt6_release(iter); in fib6_add_rt2node()
903 iter = *ins; in fib6_add_rt2node()
904 while (iter) { in fib6_add_rt2node()
905 if (rt6_qualify_for_ecmp(iter)) { in fib6_add_rt2node()
906 *ins = iter->dst.rt6_next; in fib6_add_rt2node()
907 fib6_purge_rt(iter, fn, info->nl_net); in fib6_add_rt2node()
908 rt6_release(iter); in fib6_add_rt2node()
911 ins = &iter->dst.rt6_next; in fib6_add_rt2node()
913 iter = *ins; in fib6_add_rt2node()
1285 int iter = 0; in fib6_repair_tree() local
1288 RT6_TRACE("fixing tree: plen=%d iter=%d\n", fn->fn_bit, iter); in fib6_repair_tree()
1289 iter++; in fib6_repair_tree()
1938 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_show() local
1956 iter->w.leaf = NULL; in ipv6_route_seq_show()
1962 struct ipv6_route_iter *iter = w->args; in ipv6_route_yield() local
1964 if (!iter->skip) in ipv6_route_yield()
1968 iter->w.leaf = iter->w.leaf->dst.rt6_next; in ipv6_route_yield()
1969 iter->skip--; in ipv6_route_yield()
1970 if (!iter->skip && iter->w.leaf) in ipv6_route_yield()
1972 } while (iter->w.leaf); in ipv6_route_yield()
1977 static void ipv6_route_seq_setup_walk(struct ipv6_route_iter *iter) in ipv6_route_seq_setup_walk() argument
1979 memset(&iter->w, 0, sizeof(iter->w)); in ipv6_route_seq_setup_walk()
1980 iter->w.func = ipv6_route_yield; in ipv6_route_seq_setup_walk()
1981 iter->w.root = &iter->tbl->tb6_root; in ipv6_route_seq_setup_walk()
1982 iter->w.state = FWS_INIT; in ipv6_route_seq_setup_walk()
1983 iter->w.node = iter->w.root; in ipv6_route_seq_setup_walk()
1984 iter->w.args = iter; in ipv6_route_seq_setup_walk()
1985 iter->sernum = iter->w.root->fn_sernum; in ipv6_route_seq_setup_walk()
1986 INIT_LIST_HEAD(&iter->w.lh); in ipv6_route_seq_setup_walk()
1987 fib6_walker_link(&iter->w); in ipv6_route_seq_setup_walk()
2011 static void ipv6_route_check_sernum(struct ipv6_route_iter *iter) in ipv6_route_check_sernum() argument
2013 if (iter->sernum != iter->w.root->fn_sernum) { in ipv6_route_check_sernum()
2014 iter->sernum = iter->w.root->fn_sernum; in ipv6_route_check_sernum()
2015 iter->w.state = FWS_INIT; in ipv6_route_check_sernum()
2016 iter->w.node = iter->w.root; in ipv6_route_check_sernum()
2017 WARN_ON(iter->w.skip); in ipv6_route_check_sernum()
2018 iter->w.skip = iter->w.count; in ipv6_route_check_sernum()
2027 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_next() local
2039 ipv6_route_check_sernum(iter); in ipv6_route_seq_next()
2040 read_lock(&iter->tbl->tb6_lock); in ipv6_route_seq_next()
2041 r = fib6_walk_continue(&iter->w); in ipv6_route_seq_next()
2042 read_unlock(&iter->tbl->tb6_lock); in ipv6_route_seq_next()
2046 return iter->w.leaf; in ipv6_route_seq_next()
2048 fib6_walker_unlink(&iter->w); in ipv6_route_seq_next()
2051 fib6_walker_unlink(&iter->w); in ipv6_route_seq_next()
2053 iter->tbl = ipv6_route_seq_next_table(iter->tbl, net); in ipv6_route_seq_next()
2054 if (!iter->tbl) in ipv6_route_seq_next()
2057 ipv6_route_seq_setup_walk(iter); in ipv6_route_seq_next()
2065 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_start() local
2068 iter->tbl = ipv6_route_seq_next_table(NULL, net); in ipv6_route_seq_start()
2069 iter->skip = *pos; in ipv6_route_seq_start()
2071 if (iter->tbl) { in ipv6_route_seq_start()
2072 ipv6_route_seq_setup_walk(iter); in ipv6_route_seq_start()
2079 static bool ipv6_route_iter_active(struct ipv6_route_iter *iter) in ipv6_route_iter_active() argument
2081 struct fib6_walker *w = &iter->w; in ipv6_route_iter_active()
2088 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_stop() local
2090 if (ipv6_route_iter_active(iter)) in ipv6_route_seq_stop()
2091 fib6_walker_unlink(&iter->w); in ipv6_route_seq_stop()