Lines Matching refs:iter
753 struct rt6_info *iter = NULL; in fib6_add_rt2node() local
766 for (iter = fn->leaf; iter; iter = iter->dst.rt6_next) { in fib6_add_rt2node()
771 if (iter->rt6i_metric == rt->rt6i_metric) { in fib6_add_rt2node()
779 if (rt_can_ecmp == rt6_qualify_for_ecmp(iter)) { in fib6_add_rt2node()
787 if (rt6_duplicate_nexthop(iter, rt)) { in fib6_add_rt2node()
790 if (!(iter->rt6i_flags & RTF_EXPIRES)) in fib6_add_rt2node()
793 rt6_clean_expires(iter); in fib6_add_rt2node()
795 rt6_set_expires(iter, rt->dst.expires); in fib6_add_rt2node()
796 iter->rt6i_pmtu = rt->rt6i_pmtu; in fib6_add_rt2node()
811 rt6_qualify_for_ecmp(iter)) in fib6_add_rt2node()
815 if (iter->rt6i_metric > rt->rt6i_metric) in fib6_add_rt2node()
819 ins = &iter->dst.rt6_next; in fib6_add_rt2node()
827 iter = *ins; in fib6_add_rt2node()
877 rt->dst.rt6_next = iter; in fib6_add_rt2node()
905 rt->dst.rt6_next = iter->dst.rt6_next; in fib6_add_rt2node()
912 nsiblings = iter->rt6i_nsiblings; in fib6_add_rt2node()
913 iter->rt6i_node = NULL; in fib6_add_rt2node()
914 fib6_purge_rt(iter, fn, info->nl_net); in fib6_add_rt2node()
915 if (fn->rr_ptr == iter) in fib6_add_rt2node()
917 rt6_release(iter); in fib6_add_rt2node()
922 iter = *ins; in fib6_add_rt2node()
923 while (iter) { in fib6_add_rt2node()
924 if (iter->rt6i_metric > rt->rt6i_metric) in fib6_add_rt2node()
926 if (rt6_qualify_for_ecmp(iter)) { in fib6_add_rt2node()
927 *ins = iter->dst.rt6_next; in fib6_add_rt2node()
928 iter->rt6i_node = NULL; in fib6_add_rt2node()
929 fib6_purge_rt(iter, fn, info->nl_net); in fib6_add_rt2node()
930 if (fn->rr_ptr == iter) in fib6_add_rt2node()
932 rt6_release(iter); in fib6_add_rt2node()
935 ins = &iter->dst.rt6_next; in fib6_add_rt2node()
937 iter = *ins; in fib6_add_rt2node()
1309 int iter = 0; in fib6_repair_tree() local
1312 RT6_TRACE("fixing tree: plen=%d iter=%d\n", fn->fn_bit, iter); in fib6_repair_tree()
1313 iter++; in fib6_repair_tree()
1972 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_show() local
1990 iter->w.leaf = NULL; in ipv6_route_seq_show()
1996 struct ipv6_route_iter *iter = w->args; in ipv6_route_yield() local
1998 if (!iter->skip) in ipv6_route_yield()
2002 iter->w.leaf = iter->w.leaf->dst.rt6_next; in ipv6_route_yield()
2003 iter->skip--; in ipv6_route_yield()
2004 if (!iter->skip && iter->w.leaf) in ipv6_route_yield()
2006 } while (iter->w.leaf); in ipv6_route_yield()
2011 static void ipv6_route_seq_setup_walk(struct ipv6_route_iter *iter) in ipv6_route_seq_setup_walk() argument
2013 memset(&iter->w, 0, sizeof(iter->w)); in ipv6_route_seq_setup_walk()
2014 iter->w.func = ipv6_route_yield; in ipv6_route_seq_setup_walk()
2015 iter->w.root = &iter->tbl->tb6_root; in ipv6_route_seq_setup_walk()
2016 iter->w.state = FWS_INIT; in ipv6_route_seq_setup_walk()
2017 iter->w.node = iter->w.root; in ipv6_route_seq_setup_walk()
2018 iter->w.args = iter; in ipv6_route_seq_setup_walk()
2019 iter->sernum = iter->w.root->fn_sernum; in ipv6_route_seq_setup_walk()
2020 INIT_LIST_HEAD(&iter->w.lh); in ipv6_route_seq_setup_walk()
2021 fib6_walker_link(&iter->w); in ipv6_route_seq_setup_walk()
2045 static void ipv6_route_check_sernum(struct ipv6_route_iter *iter) in ipv6_route_check_sernum() argument
2047 if (iter->sernum != iter->w.root->fn_sernum) { in ipv6_route_check_sernum()
2048 iter->sernum = iter->w.root->fn_sernum; in ipv6_route_check_sernum()
2049 iter->w.state = FWS_INIT; in ipv6_route_check_sernum()
2050 iter->w.node = iter->w.root; in ipv6_route_check_sernum()
2051 WARN_ON(iter->w.skip); in ipv6_route_check_sernum()
2052 iter->w.skip = iter->w.count; in ipv6_route_check_sernum()
2061 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_next() local
2073 ipv6_route_check_sernum(iter); in ipv6_route_seq_next()
2074 read_lock(&iter->tbl->tb6_lock); in ipv6_route_seq_next()
2075 r = fib6_walk_continue(&iter->w); in ipv6_route_seq_next()
2076 read_unlock(&iter->tbl->tb6_lock); in ipv6_route_seq_next()
2080 return iter->w.leaf; in ipv6_route_seq_next()
2082 fib6_walker_unlink(&iter->w); in ipv6_route_seq_next()
2085 fib6_walker_unlink(&iter->w); in ipv6_route_seq_next()
2087 iter->tbl = ipv6_route_seq_next_table(iter->tbl, net); in ipv6_route_seq_next()
2088 if (!iter->tbl) in ipv6_route_seq_next()
2091 ipv6_route_seq_setup_walk(iter); in ipv6_route_seq_next()
2099 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_start() local
2102 iter->tbl = ipv6_route_seq_next_table(NULL, net); in ipv6_route_seq_start()
2103 iter->skip = *pos; in ipv6_route_seq_start()
2105 if (iter->tbl) { in ipv6_route_seq_start()
2106 ipv6_route_seq_setup_walk(iter); in ipv6_route_seq_start()
2113 static bool ipv6_route_iter_active(struct ipv6_route_iter *iter) in ipv6_route_iter_active() argument
2115 struct fib6_walker *w = &iter->w; in ipv6_route_iter_active()
2122 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_stop() local
2124 if (ipv6_route_iter_active(iter)) in ipv6_route_seq_stop()
2125 fib6_walker_unlink(&iter->w); in ipv6_route_seq_stop()