Lines Matching refs:iter
1086 struct fib6_info *iter = NULL; in fib6_add_rt2node() local
1104 for (iter = leaf; iter; in fib6_add_rt2node()
1105 iter = rcu_dereference_protected(iter->fib6_next, in fib6_add_rt2node()
1111 if (iter->fib6_metric == rt->fib6_metric) { in fib6_add_rt2node()
1121 if (rt_can_ecmp == rt6_qualify_for_ecmp(iter)) { in fib6_add_rt2node()
1129 if (rt6_duplicate_nexthop(iter, rt)) { in fib6_add_rt2node()
1132 if (!(iter->fib6_flags & RTF_EXPIRES)) in fib6_add_rt2node()
1135 fib6_clean_expires(iter); in fib6_add_rt2node()
1136 fib6_remove_gc_list(iter); in fib6_add_rt2node()
1138 fib6_set_expires(iter, rt->expires); in fib6_add_rt2node()
1139 fib6_add_gc_list(iter); in fib6_add_rt2node()
1143 fib6_metric_set(iter, RTAX_MTU, in fib6_add_rt2node()
1159 rt6_qualify_for_ecmp(iter)) in fib6_add_rt2node()
1164 if (iter->fib6_metric > rt->fib6_metric) in fib6_add_rt2node()
1168 ins = &iter->fib6_next; in fib6_add_rt2node()
1176 iter = rcu_dereference_protected(*ins, in fib6_add_rt2node()
1270 rcu_assign_pointer(rt->fib6_next, iter); in fib6_add_rt2node()
1303 rt->fib6_next = iter->fib6_next; in fib6_add_rt2node()
1311 nsiblings = iter->fib6_nsiblings; in fib6_add_rt2node()
1312 iter->fib6_node = NULL; in fib6_add_rt2node()
1313 list_add(&iter->purge_link, purge_list); in fib6_add_rt2node()
1314 if (rcu_access_pointer(fn->rr_ptr) == iter) in fib6_add_rt2node()
1320 iter = rcu_dereference_protected(*ins, in fib6_add_rt2node()
1322 while (iter) { in fib6_add_rt2node()
1323 if (iter->fib6_metric > rt->fib6_metric) in fib6_add_rt2node()
1325 if (rt6_qualify_for_ecmp(iter)) { in fib6_add_rt2node()
1326 *ins = iter->fib6_next; in fib6_add_rt2node()
1327 iter->fib6_node = NULL; in fib6_add_rt2node()
1328 list_add(&iter->purge_link, purge_list); in fib6_add_rt2node()
1329 if (rcu_access_pointer(fn->rr_ptr) == iter) in fib6_add_rt2node()
1334 ins = &iter->fib6_next; in fib6_add_rt2node()
1336 iter = rcu_dereference_protected(*ins, in fib6_add_rt2node()
1530 struct fib6_info *iter, *next; in fib6_add() local
1532 list_for_each_entry_safe(iter, next, &purge_list, purge_link) { in fib6_add()
1533 list_del(&iter->purge_link); in fib6_add()
1534 fib6_purge_rt(iter, fn, info->nl_net); in fib6_add()
1535 fib6_info_release(iter); in fib6_add()
1842 int iter = 0; in fib6_repair_tree() local
1867 pr_debug("fixing tree: plen=%d iter=%d\n", fn->fn_bit, iter); in fib6_repair_tree()
1868 iter++; in fib6_repair_tree()
2589 struct ipv6_route_iter *iter = seq->private; in ipv6_route_native_seq_show() local
2615 iter->w.leaf = NULL; in ipv6_route_native_seq_show()
2621 struct ipv6_route_iter *iter = w->args; in ipv6_route_yield() local
2623 if (!iter->skip) in ipv6_route_yield()
2627 iter->w.leaf = rcu_dereference_protected( in ipv6_route_yield()
2628 iter->w.leaf->fib6_next, in ipv6_route_yield()
2629 lockdep_is_held(&iter->tbl->tb6_lock)); in ipv6_route_yield()
2630 iter->skip--; in ipv6_route_yield()
2631 if (!iter->skip && iter->w.leaf) in ipv6_route_yield()
2633 } while (iter->w.leaf); in ipv6_route_yield()
2638 static void ipv6_route_seq_setup_walk(struct ipv6_route_iter *iter, in ipv6_route_seq_setup_walk() argument
2641 memset(&iter->w, 0, sizeof(iter->w)); in ipv6_route_seq_setup_walk()
2642 iter->w.func = ipv6_route_yield; in ipv6_route_seq_setup_walk()
2643 iter->w.root = &iter->tbl->tb6_root; in ipv6_route_seq_setup_walk()
2644 iter->w.state = FWS_INIT; in ipv6_route_seq_setup_walk()
2645 iter->w.node = iter->w.root; in ipv6_route_seq_setup_walk()
2646 iter->w.args = iter; in ipv6_route_seq_setup_walk()
2647 iter->sernum = READ_ONCE(iter->w.root->fn_sernum); in ipv6_route_seq_setup_walk()
2648 INIT_LIST_HEAD(&iter->w.lh); in ipv6_route_seq_setup_walk()
2649 fib6_walker_link(net, &iter->w); in ipv6_route_seq_setup_walk()
2673 static void ipv6_route_check_sernum(struct ipv6_route_iter *iter) in ipv6_route_check_sernum() argument
2675 int sernum = READ_ONCE(iter->w.root->fn_sernum); in ipv6_route_check_sernum()
2677 if (iter->sernum != sernum) { in ipv6_route_check_sernum()
2678 iter->sernum = sernum; in ipv6_route_check_sernum()
2679 iter->w.state = FWS_INIT; in ipv6_route_check_sernum()
2680 iter->w.node = iter->w.root; in ipv6_route_check_sernum()
2681 WARN_ON(iter->w.skip); in ipv6_route_check_sernum()
2682 iter->w.skip = iter->w.count; in ipv6_route_check_sernum()
2691 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_next() local
2702 ipv6_route_check_sernum(iter); in ipv6_route_seq_next()
2703 spin_lock_bh(&iter->tbl->tb6_lock); in ipv6_route_seq_next()
2704 r = fib6_walk_continue(&iter->w); in ipv6_route_seq_next()
2705 spin_unlock_bh(&iter->tbl->tb6_lock); in ipv6_route_seq_next()
2707 return iter->w.leaf; in ipv6_route_seq_next()
2709 fib6_walker_unlink(net, &iter->w); in ipv6_route_seq_next()
2712 fib6_walker_unlink(net, &iter->w); in ipv6_route_seq_next()
2714 iter->tbl = ipv6_route_seq_next_table(iter->tbl, net); in ipv6_route_seq_next()
2715 if (!iter->tbl) in ipv6_route_seq_next()
2718 ipv6_route_seq_setup_walk(iter, net); in ipv6_route_seq_next()
2726 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_start() local
2729 iter->tbl = ipv6_route_seq_next_table(NULL, net); in ipv6_route_seq_start()
2730 iter->skip = *pos; in ipv6_route_seq_start()
2732 if (iter->tbl) { in ipv6_route_seq_start()
2735 ipv6_route_seq_setup_walk(iter, net); in ipv6_route_seq_start()
2742 static bool ipv6_route_iter_active(struct ipv6_route_iter *iter) in ipv6_route_iter_active() argument
2744 struct fib6_walker *w = &iter->w; in ipv6_route_iter_active()
2752 struct ipv6_route_iter *iter = seq->private; in ipv6_route_native_seq_stop() local
2754 if (ipv6_route_iter_active(iter)) in ipv6_route_native_seq_stop()
2755 fib6_walker_unlink(net, &iter->w); in ipv6_route_native_seq_stop()
2774 struct ipv6_route_iter *iter = seq->private; in ipv6_route_seq_show() local
2785 iter->w.leaf = NULL; in ipv6_route_seq_show()