Lines Matching refs:fib6_info
108 static size_t rt6_nlmsg_size(struct fib6_info *f6i);
110 struct fib6_info *rt, struct dst_entry *dst,
119 static struct fib6_info *rt6_add_route_info(struct net *net,
124 static struct fib6_info *rt6_get_route_info(struct net *net,
285 static const struct fib6_info fib6_null_entry_template = {
359 struct fib6_info *from; in ip6_dst_destroy()
371 from = xchg((__force struct fib6_info **)&rt->from, NULL); in ip6_dst_destroy()
401 struct fib6_info *from; in rt6_check_expired()
419 struct fib6_info *sibling, *next_sibling; in fib6_select_path()
420 struct fib6_info *match = res->f6i; in fib6_select_path()
529 struct fib6_info *f6i = res->f6i; in rt6_device_match()
530 struct fib6_info *spf6i; in rt6_device_match()
785 static void __find_rr_leaf(struct fib6_info *f6i_start, in __find_rr_leaf()
786 struct fib6_info *nomatch, u32 metric, in __find_rr_leaf()
787 struct fib6_result *res, struct fib6_info **cont, in __find_rr_leaf()
790 struct fib6_info *f6i; in __find_rr_leaf()
842 static void find_rr_leaf(struct fib6_node *fn, struct fib6_info *leaf, in find_rr_leaf()
843 struct fib6_info *rr_head, int oif, int strict, in find_rr_leaf()
847 struct fib6_info *cont = NULL; in find_rr_leaf()
866 struct fib6_info *leaf = rcu_dereference(fn->leaf); in rt6_select()
867 struct fib6_info *rt0; in rt6_select()
896 struct fib6_info *next = rcu_dereference(rt0->fib6_next); in rt6_select()
935 struct fib6_info *rt; in rt6_route_rcv()
1049 static unsigned short fib6_info_dst_flags(struct fib6_info *rt) in fib6_info_dst_flags()
1085 struct fib6_info *f6i = res->f6i; in ip6_rt_init_dst()
1112 static void rt6_set_from(struct rt6_info *rt, struct fib6_info *from) in rt6_set_from()
1124 struct fib6_info *f6i = res->f6i; in ip6_rt_copy_init()
1179 struct fib6_info *f6i = res->f6i; in ip6_create_rt_rcu()
1294 static int __ip6_ins_rt(struct fib6_info *rt, struct nl_info *info, in __ip6_ins_rt()
1308 int ip6_ins_rt(struct net *net, struct fib6_info *rt) in ip6_ins_rt()
1319 struct fib6_info *f6i = res->f6i; in ip6_rt_cache_alloc()
1359 struct fib6_info *f6i = res->f6i; in ip6_rt_pcpu_alloc()
1426 struct fib6_info *from; in rt6_make_pcpu_route()
1428 from = xchg((__force struct fib6_info **)&pcpu_rt->from, NULL); in rt6_make_pcpu_route()
1445 struct fib6_info *from; in rt6_remove_exception()
1457 from = xchg((__force struct fib6_info **)&rt6_ex->rt6i->from, NULL); in rt6_remove_exception()
1656 struct fib6_info *f6i = res->f6i; in rt6_insert_exception()
1734 static void fib6_nh_flush_exceptions(struct fib6_nh *nh, struct fib6_info *from) in fib6_nh_flush_exceptions()
1766 struct fib6_info *f6i = arg; in rt6_nh_flush_exceptions()
1773 void rt6_flush_exceptions(struct fib6_info *f6i) in rt6_flush_exceptions()
1885 struct fib6_info *from; in rt6_remove_exception_rt()
1960 struct fib6_info *from; in rt6_update_exception_stamp_rt()
2155 void rt6_age_exceptions(struct fib6_info *f6i, in rt6_age_exceptions()
2688 static bool fib6_check(struct fib6_info *f6i, u32 cookie) in fib6_check()
2702 struct fib6_info *from, in rt6_check()
2718 struct fib6_info *from, in rt6_dst_from_check()
2733 struct fib6_info *from; in ip6_dst_check()
2794 struct fib6_info *from; in ip6_link_failure()
2811 struct fib6_info *from; in rt6_update_expires()
3052 struct fib6_info *rt; in __ip6_route_redirect()
3222 struct fib6_info *f6i = res->f6i; in ip6_mtu_from_fib6()
3671 static struct fib6_info *ip6_route_info_create(struct fib6_config *cfg, in ip6_route_info_create()
3676 struct fib6_info *rt = NULL; in ip6_route_info_create()
3833 struct fib6_info *rt; in ip6_route_add()
3846 static int __ip6_del_rt(struct fib6_info *rt, struct nl_info *info) in __ip6_del_rt()
3867 int ip6_del_rt(struct net *net, struct fib6_info *rt, bool skip_notify) in ip6_del_rt()
3877 static int __ip6_del_rt_siblings(struct fib6_info *rt, struct fib6_config *cfg) in __ip6_del_rt_siblings()
3891 struct fib6_info *sibling, *next_sibling; in __ip6_del_rt_siblings()
3917 struct fib6_info *last_sibling, *replace_rt; in __ip6_del_rt_siblings()
3920 struct fib6_info, in __ip6_del_rt_siblings()
3972 static int ip6_del_cached_rt(struct fib6_config *cfg, struct fib6_info *rt, in ip6_del_cached_rt()
3990 struct fib6_info *f6i;
4002 static int ip6_del_cached_rt_nh(struct fib6_config *cfg, struct fib6_info *f6i) in ip6_del_cached_rt_nh()
4016 struct fib6_info *rt; in ip6_route_del()
4242 static struct fib6_info *rt6_get_route_info(struct net *net, in rt6_get_route_info()
4250 struct fib6_info *rt = NULL; in rt6_get_route_info()
4282 static struct fib6_info *rt6_add_route_info(struct net *net, in rt6_add_route_info()
4315 struct fib6_info *rt6_get_dflt_router(struct net *net, in rt6_get_dflt_router()
4320 struct fib6_info *rt; in rt6_get_dflt_router()
4347 struct fib6_info *rt6_add_dflt_router(struct net *net, in rt6_add_dflt_router()
4382 struct fib6_info *rt; in __rt6_purge_dflt_routers()
4539 struct fib6_info *addrconf_f6i_alloc(struct net *net, in addrconf_f6i_alloc()
4554 struct fib6_info *f6i; in addrconf_f6i_alloc()
4584 static int fib6_remove_prefsrc(struct fib6_info *rt, void *arg) in fib6_remove_prefsrc()
4616 static int fib6_clean_tohost(struct fib6_info *rt, void *arg) in fib6_clean_tohost()
4652 static struct fib6_info *rt6_multipath_first_sibling(const struct fib6_info *rt) in rt6_multipath_first_sibling()
4654 struct fib6_info *iter; in rt6_multipath_first_sibling()
4673 static bool rt6_is_dead(const struct fib6_info *rt) in rt6_is_dead()
4683 static int rt6_multipath_total_weight(const struct fib6_info *rt) in rt6_multipath_total_weight()
4685 struct fib6_info *iter; in rt6_multipath_total_weight()
4699 static void rt6_upper_bound_set(struct fib6_info *rt, int *weight, int total) in rt6_upper_bound_set()
4711 static void rt6_multipath_upper_bound_set(struct fib6_info *rt, int total) in rt6_multipath_upper_bound_set()
4713 struct fib6_info *iter; in rt6_multipath_upper_bound_set()
4722 void rt6_multipath_rebalance(struct fib6_info *rt) in rt6_multipath_rebalance()
4724 struct fib6_info *first; in rt6_multipath_rebalance()
4746 static int fib6_ifup(struct fib6_info *rt, void *p_arg) in fib6_ifup()
4777 static bool rt6_multipath_uses_dev(const struct fib6_info *rt, in rt6_multipath_uses_dev()
4780 struct fib6_info *iter; in rt6_multipath_uses_dev()
4791 static void rt6_multipath_flush(struct fib6_info *rt) in rt6_multipath_flush()
4793 struct fib6_info *iter; in rt6_multipath_flush()
4800 static unsigned int rt6_multipath_dead_count(const struct fib6_info *rt, in rt6_multipath_dead_count()
4803 struct fib6_info *iter; in rt6_multipath_dead_count()
4817 static void rt6_multipath_nh_flags_set(struct fib6_info *rt, in rt6_multipath_nh_flags_set()
4821 struct fib6_info *iter; in rt6_multipath_nh_flags_set()
4831 static int fib6_ifdown(struct fib6_info *rt, void *p_arg) in fib6_ifdown()
4900 struct fib6_info *f6i;
4906 struct fib6_info *f6i = arg->f6i; in fib6_nh_mtu_change()
4929 static int rt6_mtu_change_route(struct fib6_info *f6i, void *p_arg) in rt6_mtu_change_route()
5137 struct fib6_info *fib6_info; member
5144 struct fib6_info *rt, in ip6_route_info_append()
5152 if (rt6_duplicate_nexthop(nh->fib6_info, rt)) in ip6_route_info_append()
5159 nh->fib6_info = rt; in ip6_route_info_append()
5166 static void ip6_route_mpath_notify(struct fib6_info *rt, in ip6_route_mpath_notify()
5167 struct fib6_info *rt_last, in ip6_route_mpath_notify()
5179 struct fib6_info, in ip6_route_mpath_notify()
5187 static bool ip6_route_mpath_should_notify(const struct fib6_info *rt) in ip6_route_mpath_should_notify()
5191 struct fib6_info *leaf; in ip6_route_mpath_should_notify()
5229 struct fib6_info *rt_notif = NULL, *rt_last = NULL; in ip6_route_multipath_add()
5233 struct fib6_info *rt; in ip6_route_multipath_add()
5329 err = __ip6_ins_rt(nh->fib6_info, info, extack); in ip6_route_multipath_add()
5330 fib6_info_release(nh->fib6_info); in ip6_route_multipath_add()
5334 rt_last = nh->fib6_info; in ip6_route_multipath_add()
5338 rt_notif = nh->fib6_info; in ip6_route_multipath_add()
5342 nh->fib6_info = NULL; in ip6_route_multipath_add()
5410 if (nh->fib6_info) in ip6_route_multipath_add()
5411 fib6_info_release(nh->fib6_info); in ip6_route_multipath_add()
5527 static size_t rt6_nlmsg_size(struct fib6_info *f6i) in rt6_nlmsg_size()
5536 struct fib6_info *sibling, *next_sibling; in rt6_nlmsg_size()
5597 struct fib6_info *rt, struct dst_entry *dst, in rt6_fill_node()
5710 struct fib6_info *sibling, *next_sibling; in rt6_fill_node()
5790 static bool fib6_info_uses_dev(const struct fib6_info *f6i, in fib6_info_uses_dev()
5805 struct fib6_info *sibling, *next_sibling; in fib6_info_uses_dev()
5819 struct fib6_info *rt;
5877 int rt6_dump_route(struct fib6_info *rt, void *p_arg, unsigned int skip) in rt6_dump_route()
6017 struct fib6_info *from; in inet6_rtm_getroute()
6155 void inet6_rt_notify(int event, struct fib6_info *rt, struct nl_info *info, in inet6_rt_notify()
6186 void fib6_rt_update(struct net *net, struct fib6_info *rt, in fib6_rt_update()
6213 void fib6_info_hw_flags_set(struct net *net, struct fib6_info *f6i, in fib6_info_hw_flags_set()
6632 DEFINE_BPF_ITER_FUNC(ipv6_route, struct bpf_iter_meta *meta, struct fib6_info *rt)
6635 BTF_ID(struct, fib6_info)