Lines Matching full:ipv6
16 #define pr_fmt(fmt) "IPv6: " fmt
30 #include <net/ipv6.h>
76 list_for_each_entry(w, &(net)->ipv6.fib6_walkers, lh)
80 write_lock_bh(&net->ipv6.fib6_walker_lock); in fib6_walker_link()
81 list_add(&w->lh, &net->ipv6.fib6_walkers); in fib6_walker_link()
82 write_unlock_bh(&net->ipv6.fib6_walker_lock); in fib6_walker_link()
87 write_lock_bh(&net->ipv6.fib6_walker_lock); in fib6_walker_unlink()
89 write_unlock_bh(&net->ipv6.fib6_walker_lock); in fib6_walker_unlink()
94 int new, old = atomic_read(&net->ipv6.fib6_sernum); in fib6_new_sernum()
98 } while (!atomic_try_cmpxchg(&net->ipv6.fib6_sernum, &old, new)); in fib6_new_sernum()
190 net->ipv6.rt6_stats->fib_nodes++; in node_alloc()
198 net->ipv6.rt6_stats->fib_nodes--; in node_free_immediate()
204 net->ipv6.rt6_stats->fib_nodes--; in node_free()
228 hlist_add_head_rcu(&tb->tb6_hlist, &net->ipv6.fib_table_hash[h]); in fib6_link_table()
241 net->ipv6.fib6_null_entry); in fib6_alloc_table()
278 head = &net->ipv6.fib_table_hash[h]; in fib6_get_table()
293 fib6_link_table(net, net->ipv6.fib6_main_tbl); in fib6_tables_init()
294 fib6_link_table(net, net->ipv6.fib6_local_tbl); in fib6_tables_init()
305 return net->ipv6.fib6_main_tbl; in fib6_get_table()
315 net, net->ipv6.fib6_main_tbl, fl6, skb, flags); in fib6_rule_lookup()
318 rt = net->ipv6.ip6_null_entry; in fib6_rule_lookup()
330 return fib6_table_lookup(net, net->ipv6.fib6_main_tbl, oif, fl6, in fib6_lookup()
336 fib6_link_table(net, net->ipv6.fib6_main_tbl); in fib6_tables_init()
347 const struct hlist_head *head = &net->ipv6.fib_table_hash[h]; in fib6_tables_seq_read()
438 if (!rt || rt == arg->net->ipv6.fib6_null_entry) in fib6_rt_dump()
494 struct hlist_head *head = &net->ipv6.fib_table_hash[h]; in fib6_tables_dump()
692 head = &net->ipv6.fib_table_hash[h]; in inet6_dump_fib()
792 net->ipv6.fib6_null_entry) { in fib6_add_1()
821 * That would keep IPv6 consistent with IPv4 in fib6_add_1()
1260 info->nl_net->ipv6.rt6_stats->fib_rt_entries++; in fib6_add_rt2node()
1263 info->nl_net->ipv6.rt6_stats->fib_route_nodes++; in fib6_add_rt2node()
1292 info->nl_net->ipv6.rt6_stats->fib_route_nodes++; in fib6_add_rt2node()
1318 info->nl_net->ipv6.rt6_stats->fib_rt_entries--; in fib6_add_rt2node()
1334 if (!timer_pending(&net->ipv6.ip6_fib_timer) && in fib6_start_gc()
1336 mod_timer(&net->ipv6.ip6_fib_timer, in fib6_start_gc()
1337 jiffies + net->ipv6.sysctl.ip6_rt_gc_interval); in fib6_start_gc()
1342 if (!timer_pending(&net->ipv6.ip6_fib_timer)) in fib6_force_start_gc()
1343 mod_timer(&net->ipv6.ip6_fib_timer, in fib6_force_start_gc()
1344 jiffies + net->ipv6.sysctl.ip6_rt_gc_interval); in fib6_force_start_gc()
1437 fib6_info_hold(info->nl_net->ipv6.fib6_null_entry); in fib6_add()
1439 info->nl_net->ipv6.fib6_null_entry); in fib6_add()
1478 info->nl_net->ipv6.fib6_null_entry); in fib6_add()
1521 info->nl_net->ipv6.fib6_null_entry; in fib6_add()
1763 return net->ipv6.fib6_null_entry; in fib6_find_prefix()
1800 rcu_assign_pointer(fn->leaf, net->ipv6.fib6_null_entry); in fib6_repair_tree()
1849 new_fn_leaf = net->ipv6.fib6_null_entry; in fib6_repair_tree()
1880 read_lock(&net->ipv6.fib6_walker_lock); in fib6_repair_tree()
1904 read_unlock(&net->ipv6.fib6_walker_lock); in fib6_repair_tree()
1943 net->ipv6.rt6_stats->fib_rt_entries--; in fib6_del_route()
1944 net->ipv6.rt6_stats->fib_discarded_routes++; in fib6_del_route()
1971 read_lock(&net->ipv6.fib6_walker_lock); in fib6_del_route()
1981 read_unlock(&net->ipv6.fib6_walker_lock); in fib6_del_route()
1990 net->ipv6.rt6_stats->fib_route_nodes--; in fib6_del_route()
2019 if (rt == net->ipv6.fib6_null_entry) in fib6_del()
2265 head = &net->ipv6.fib_table_hash[h]; in __fib6_clean_all()
2350 head = &net->ipv6.fib_table_hash[h]; in fib6_gc_all()
2368 spin_lock_bh(&net->ipv6.fib6_gc_lock); in fib6_run_gc()
2369 } else if (!spin_trylock_bh(&net->ipv6.fib6_gc_lock)) { in fib6_run_gc()
2370 mod_timer(&net->ipv6.ip6_fib_timer, jiffies + HZ); in fib6_run_gc()
2374 net->ipv6.sysctl.ip6_rt_gc_interval; in fib6_run_gc()
2379 net->ipv6.ip6_rt_last_gc = now; in fib6_run_gc()
2382 mod_timer(&net->ipv6.ip6_fib_timer, in fib6_run_gc()
2384 + net->ipv6.sysctl.ip6_rt_gc_interval)); in fib6_run_gc()
2386 del_timer(&net->ipv6.ip6_fib_timer); in fib6_run_gc()
2387 spin_unlock_bh(&net->ipv6.fib6_gc_lock); in fib6_run_gc()
2392 struct net *arg = from_timer(arg, t, ipv6.ip6_fib_timer); in fib6_gc_timer_cb()
2407 net->ipv6.sysctl.multipath_hash_fields = in fib6_net_init()
2410 spin_lock_init(&net->ipv6.fib6_gc_lock); in fib6_net_init()
2411 rwlock_init(&net->ipv6.fib6_walker_lock); in fib6_net_init()
2412 INIT_LIST_HEAD(&net->ipv6.fib6_walkers); in fib6_net_init()
2413 timer_setup(&net->ipv6.ip6_fib_timer, fib6_gc_timer_cb, 0); in fib6_net_init()
2415 net->ipv6.rt6_stats = kzalloc(sizeof(*net->ipv6.rt6_stats), GFP_KERNEL); in fib6_net_init()
2416 if (!net->ipv6.rt6_stats) in fib6_net_init()
2422 net->ipv6.fib_table_hash = kzalloc(size, GFP_KERNEL); in fib6_net_init()
2423 if (!net->ipv6.fib_table_hash) in fib6_net_init()
2426 net->ipv6.fib6_main_tbl = kzalloc(sizeof(*net->ipv6.fib6_main_tbl), in fib6_net_init()
2428 if (!net->ipv6.fib6_main_tbl) in fib6_net_init()
2431 net->ipv6.fib6_main_tbl->tb6_id = RT6_TABLE_MAIN; in fib6_net_init()
2432 rcu_assign_pointer(net->ipv6.fib6_main_tbl->tb6_root.leaf, in fib6_net_init()
2433 net->ipv6.fib6_null_entry); in fib6_net_init()
2434 net->ipv6.fib6_main_tbl->tb6_root.fn_flags = in fib6_net_init()
2436 inet_peer_base_init(&net->ipv6.fib6_main_tbl->tb6_peers); in fib6_net_init()
2437 INIT_HLIST_HEAD(&net->ipv6.fib6_main_tbl->tb6_gc_hlist); in fib6_net_init()
2440 net->ipv6.fib6_local_tbl = kzalloc(sizeof(*net->ipv6.fib6_local_tbl), in fib6_net_init()
2442 if (!net->ipv6.fib6_local_tbl) in fib6_net_init()
2444 net->ipv6.fib6_local_tbl->tb6_id = RT6_TABLE_LOCAL; in fib6_net_init()
2445 rcu_assign_pointer(net->ipv6.fib6_local_tbl->tb6_root.leaf, in fib6_net_init()
2446 net->ipv6.fib6_null_entry); in fib6_net_init()
2447 net->ipv6.fib6_local_tbl->tb6_root.fn_flags = in fib6_net_init()
2449 inet_peer_base_init(&net->ipv6.fib6_local_tbl->tb6_peers); in fib6_net_init()
2450 INIT_HLIST_HEAD(&net->ipv6.fib6_local_tbl->tb6_gc_hlist); in fib6_net_init()
2458 kfree(net->ipv6.fib6_main_tbl); in fib6_net_init()
2461 kfree(net->ipv6.fib_table_hash); in fib6_net_init()
2463 kfree(net->ipv6.rt6_stats); in fib6_net_init()
2473 del_timer_sync(&net->ipv6.ip6_fib_timer); in fib6_net_exit()
2476 struct hlist_head *head = &net->ipv6.fib_table_hash[i]; in fib6_net_exit()
2486 kfree(net->ipv6.fib_table_hash); in fib6_net_exit()
2487 kfree(net->ipv6.rt6_stats); in fib6_net_exit()
2619 hlist_first_rcu(&net->ipv6.fib_table_hash[h++])); in ipv6_route_seq_next_table()