f6i 197 include/net/ip6_fib.h struct fib6_info *f6i; f6i 216 include/net/ip6_fib.h static inline void fib6_clean_expires(struct fib6_info *f6i) f6i 218 include/net/ip6_fib.h f6i->fib6_flags &= ~RTF_EXPIRES; f6i 219 include/net/ip6_fib.h f6i->expires = 0; f6i 222 include/net/ip6_fib.h static inline void fib6_set_expires(struct fib6_info *f6i, f6i 225 include/net/ip6_fib.h f6i->expires = expires; f6i 226 include/net/ip6_fib.h f6i->fib6_flags |= RTF_EXPIRES; f6i 229 include/net/ip6_fib.h static inline bool fib6_check_expired(const struct fib6_info *f6i) f6i 231 include/net/ip6_fib.h if (f6i->fib6_flags & RTF_EXPIRES) f6i 232 include/net/ip6_fib.h return time_after(jiffies, f6i->expires); f6i 241 include/net/ip6_fib.h static inline bool fib6_get_cookie_safe(const struct fib6_info *f6i, f6i 247 include/net/ip6_fib.h fn = rcu_dereference(f6i->fib6_node); f6i 290 include/net/ip6_fib.h static inline void fib6_info_hold(struct fib6_info *f6i) f6i 292 include/net/ip6_fib.h refcount_inc(&f6i->fib6_ref); f6i 295 include/net/ip6_fib.h static inline bool fib6_info_hold_safe(struct fib6_info *f6i) f6i 297 include/net/ip6_fib.h return refcount_inc_not_zero(&f6i->fib6_ref); f6i 300 include/net/ip6_fib.h static inline void fib6_info_release(struct fib6_info *f6i) f6i 302 include/net/ip6_fib.h if (f6i && refcount_dec_and_test(&f6i->fib6_ref)) f6i 303 include/net/ip6_fib.h call_rcu(&f6i->rcu, fib6_info_destroy_rcu); f6i 499 include/net/ip6_fib.h void fib6_update_sernum_stub(struct net *net, struct fib6_info *f6i); f6i 501 include/net/ip6_fib.h void fib6_metric_set(struct fib6_info *f6i, int metric, u32 val); f6i 502 include/net/ip6_fib.h static inline bool fib6_metric_locked(struct fib6_info *f6i, int metric) f6i 504 include/net/ip6_fib.h return !!(f6i->fib6_metrics->metrics[RTAX_LOCK - 1] & (1 << metric)); f6i 74 include/net/ip6_route.h static inline bool rt6_qualify_for_ecmp(const struct fib6_info *f6i) f6i 77 include/net/ip6_route.h return !(f6i->fib6_flags & RTF_ADDRCONF) && !f6i->nh && f6i 78 include/net/ip6_route.h f6i->fib6_nh->fib_nh_gw_family; f6i 125 include/net/ip6_route.h int ip6_ins_rt(struct net *net, struct fib6_info *f6i); f6i 126 include/net/ip6_route.h int ip6_del_rt(struct net *net, struct fib6_info *f6i); f6i 128 include/net/ip6_route.h void rt6_flush_exceptions(struct fib6_info *f6i); f6i 129 include/net/ip6_route.h void rt6_age_exceptions(struct fib6_info *f6i, struct fib6_gc_args *gc_args, f6i 132 include/net/ip6_route.h static inline int ip6_route_get_saddr(struct net *net, struct fib6_info *f6i, f6i 139 include/net/ip6_route.h if (f6i && f6i->fib6_prefsrc.plen) { f6i 140 include/net/ip6_route.h *saddr = f6i->fib6_prefsrc.addr; f6i 142 include/net/ip6_route.h struct net_device *dev = f6i ? fib6_info_nh_dev(f6i) : NULL; f6i 200 include/net/ip6_route.h int rt6_dump_route(struct fib6_info *f6i, void *p_arg, unsigned int skip); f6i 207 include/net/ip6_route.h void rt6_multipath_rebalance(struct fib6_info *f6i); f6i 314 include/net/nexthop.h static inline struct net_device *fib6_info_nh_dev(struct fib6_info *f6i) f6i 318 include/net/nexthop.h fib6_nh = f6i->nh ? nexthop_fib6_nh(f6i->nh) : f6i->fib6_nh; f6i 324 include/net/nexthop.h struct nexthop *nh = res->f6i->nh; f6i 70 include/trace/events/fib6.h if (res->f6i == net->ipv6.fib6_null_entry) { f6i 4793 net/core/filter.c if (unlikely(err || IS_ERR_OR_NULL(res.f6i) || f6i 4794 net/core/filter.c res.f6i == net->ipv6.fib6_null_entry)) f6i 4827 net/core/filter.c params->rt_metric = res.f6i->fib6_metric; f6i 610 net/ipv4/nexthop.c struct fib6_info *f6i; f6i 615 net/ipv4/nexthop.c list_for_each_entry(f6i, &old->f6i_list, nh_list) { f6i 616 net/ipv4/nexthop.c if (check_src_addr(&f6i->fib6_src.addr, extack) < 0) f6i 787 net/ipv4/nexthop.c struct fib6_info *f6i, *tmp; f6i 799 net/ipv4/nexthop.c list_for_each_entry_safe(f6i, tmp, &nh->f6i_list, nh_list) { f6i 801 net/ipv4/nexthop.c fib6_info_hold(f6i); f6i 802 net/ipv4/nexthop.c ipv6_stub->ip6_del_rt(net, f6i); f6i 844 net/ipv4/nexthop.c struct fib6_info *f6i; f6i 849 net/ipv4/nexthop.c list_for_each_entry(f6i, &nh->f6i_list, nh_list) f6i 850 net/ipv4/nexthop.c ipv6_stub->fib6_update_sernum(net, f6i); f6i 911 net/ipv4/nexthop.c struct fib6_info *f6i; f6i 929 net/ipv4/nexthop.c list_for_each_entry(f6i, &nh->f6i_list, nh_list) f6i 930 net/ipv4/nexthop.c ipv6_stub->fib6_rt_update(net, f6i, info); f6i 1044 net/ipv6/addrconf.c struct fib6_info *f6i = NULL; f6i 1087 net/ipv6/addrconf.c f6i = addrconf_f6i_alloc(net, idev, cfg->pfx, false, gfp_flags); f6i 1088 net/ipv6/addrconf.c if (IS_ERR(f6i)) { f6i 1089 net/ipv6/addrconf.c err = PTR_ERR(f6i); f6i 1090 net/ipv6/addrconf.c f6i = NULL; f6i 1096 net/ipv6/addrconf.c f6i->dst_nopolicy = true; f6i 1119 net/ipv6/addrconf.c ifa->rt = f6i; f6i 1153 net/ipv6/addrconf.c fib6_info_release(f6i); f6i 1232 net/ipv6/addrconf.c struct fib6_info *f6i; f6i 1234 net/ipv6/addrconf.c f6i = addrconf_get_prefix_route(del_peer ? &ifp->peer_addr : &ifp->addr, f6i 1237 net/ipv6/addrconf.c if (f6i) { f6i 1239 net/ipv6/addrconf.c ip6_del_rt(dev_net(ifp->idev->dev), f6i); f6i 1241 net/ipv6/addrconf.c if (!(f6i->fib6_flags & RTF_EXPIRES)) f6i 1242 net/ipv6/addrconf.c fib6_set_expires(f6i, expires); f6i 1243 net/ipv6/addrconf.c fib6_info_release(f6i); f6i 3432 net/ipv6/addrconf.c struct fib6_info *f6i, *prev; f6i 3434 net/ipv6/addrconf.c f6i = addrconf_f6i_alloc(net, idev, &ifp->addr, false, f6i 3436 net/ipv6/addrconf.c if (IS_ERR(f6i)) f6i 3437 net/ipv6/addrconf.c return PTR_ERR(f6i); f6i 3442 net/ipv6/addrconf.c ifp->rt = f6i; f6i 4602 net/ipv6/addrconf.c struct fib6_info *f6i; f6i 4605 net/ipv6/addrconf.c f6i = addrconf_get_prefix_route(modify_peer ? &ifp->peer_addr : &ifp->addr, f6i 4608 net/ipv6/addrconf.c if (!f6i) f6i 4612 net/ipv6/addrconf.c if (f6i->fib6_metric != prio) { f6i 4614 net/ipv6/addrconf.c ip6_del_rt(dev_net(ifp->idev->dev), f6i); f6i 4623 net/ipv6/addrconf.c fib6_clean_expires(f6i); f6i 4625 net/ipv6/addrconf.c fib6_set_expires(f6i, expires); f6i 4627 net/ipv6/addrconf.c fib6_info_release(f6i); f6i 253 net/ipv6/anycast.c static struct ifacaddr6 *aca_alloc(struct fib6_info *f6i, f6i 263 net/ipv6/anycast.c fib6_info_hold(f6i); f6i 264 net/ipv6/anycast.c aca->aca_rt = f6i; f6i 280 net/ipv6/anycast.c struct fib6_info *f6i; f6i 301 net/ipv6/anycast.c f6i = addrconf_f6i_alloc(net, idev, addr, true, GFP_ATOMIC); f6i 302 net/ipv6/anycast.c if (IS_ERR(f6i)) { f6i 303 net/ipv6/anycast.c err = PTR_ERR(f6i); f6i 306 net/ipv6/anycast.c aca = aca_alloc(f6i, addr); f6i 308 net/ipv6/anycast.c fib6_info_release(f6i); f6i 324 net/ipv6/anycast.c ip6_ins_rt(net, f6i); f6i 81 net/ipv6/fib6_rules.c if (err || res->f6i == net->ipv6.fib6_null_entry) f6i 182 net/ipv6/fib6_rules.c if (!err && res->f6i != net->ipv6.fib6_null_entry) f6i 106 net/ipv6/ip6_fib.c void fib6_update_sernum(struct net *net, struct fib6_info *f6i) f6i 110 net/ipv6/ip6_fib.c fn = rcu_dereference_protected(f6i->fib6_node, f6i 111 net/ipv6/ip6_fib.c lockdep_is_held(&f6i->fib6_table->tb6_lock)); f6i 148 net/ipv6/ip6_fib.c struct fib6_info *f6i; f6i 149 net/ipv6/ip6_fib.c size_t sz = sizeof(*f6i); f6i 154 net/ipv6/ip6_fib.c f6i = kzalloc(sz, gfp_flags); f6i 155 net/ipv6/ip6_fib.c if (!f6i) f6i 159 net/ipv6/ip6_fib.c INIT_LIST_HEAD(&f6i->fib6_siblings); f6i 160 net/ipv6/ip6_fib.c refcount_set(&f6i->fib6_ref, 1); f6i 162 net/ipv6/ip6_fib.c return f6i; f6i 167 net/ipv6/ip6_fib.c struct fib6_info *f6i = container_of(head, struct fib6_info, rcu); f6i 169 net/ipv6/ip6_fib.c WARN_ON(f6i->fib6_node); f6i 171 net/ipv6/ip6_fib.c if (f6i->nh) f6i 172 net/ipv6/ip6_fib.c nexthop_put(f6i->nh); f6i 174 net/ipv6/ip6_fib.c fib6_nh_release(f6i->fib6_nh); f6i 176 net/ipv6/ip6_fib.c ip_fib_metrics_put(f6i->fib6_metrics); f6i 177 net/ipv6/ip6_fib.c kfree(f6i); f6i 659 net/ipv6/ip6_fib.c void fib6_metric_set(struct fib6_info *f6i, int metric, u32 val) f6i 661 net/ipv6/ip6_fib.c if (!f6i) f6i 664 net/ipv6/ip6_fib.c if (f6i->fib6_metrics == &dst_default_metrics) { f6i 671 net/ipv6/ip6_fib.c f6i->fib6_metrics = p; f6i 674 net/ipv6/ip6_fib.c f6i->fib6_metrics->metrics[metric - 1] = val; f6i 946 net/ipv6/ip6_fib.c static void fib6_drop_pcpu_from(struct fib6_info *f6i, f6i 952 net/ipv6/ip6_fib.c f6i->fib6_destroying = 1; f6i 955 net/ipv6/ip6_fib.c if (f6i->nh) { f6i 957 net/ipv6/ip6_fib.c .from = f6i, f6i 961 net/ipv6/ip6_fib.c nexthop_for_each_fib6_nh(f6i->nh, fib6_nh_drop_pcpu_from, f6i 966 net/ipv6/ip6_fib.c fib6_nh = f6i->fib6_nh; f6i 967 net/ipv6/ip6_fib.c __fib6_drop_pcpu_from(fib6_nh, f6i, table); f6i 1289 net/ipv6/ip6_fib.c void fib6_update_sernum_stub(struct net *net, struct fib6_info *f6i) f6i 1291 net/ipv6/ip6_fib.c spin_lock_bh(&f6i->fib6_table->tb6_lock); f6i 1292 net/ipv6/ip6_fib.c fib6_update_sernum_upto_root(net, f6i); f6i 1293 net/ipv6/ip6_fib.c spin_unlock_bh(&f6i->fib6_table->tb6_lock); f6i 104 net/ipv6/route.c static size_t rt6_nlmsg_size(struct fib6_info *f6i); f6i 432 net/ipv6/route.c struct fib6_info *match = res->f6i; f6i 467 net/ipv6/route.c res->f6i = match; f6i 538 net/ipv6/route.c struct fib6_info *f6i = res->f6i; f6i 543 net/ipv6/route.c if (unlikely(f6i->nh)) { f6i 544 net/ipv6/route.c nh = nexthop_fib6_nh(f6i->nh); f6i 545 net/ipv6/route.c if (nexthop_is_blackhole(f6i->nh)) f6i 548 net/ipv6/route.c nh = f6i->fib6_nh; f6i 554 net/ipv6/route.c for (spf6i = f6i; spf6i; spf6i = rcu_dereference(spf6i->fib6_next)) { f6i 568 net/ipv6/route.c res->f6i = spf6i; f6i 574 net/ipv6/route.c res->f6i = net->ipv6.fib6_null_entry; f6i 575 net/ipv6/route.c nh = res->f6i->fib6_nh; f6i 579 net/ipv6/route.c if (unlikely(f6i->nh)) { f6i 580 net/ipv6/route.c nh = nexthop_fib6_nh(f6i->nh); f6i 581 net/ipv6/route.c if (nexthop_is_blackhole(f6i->nh)) f6i 584 net/ipv6/route.c nh = f6i->fib6_nh; f6i 588 net/ipv6/route.c res->f6i = net->ipv6.fib6_null_entry; f6i 589 net/ipv6/route.c nh = res->f6i->fib6_nh; f6i 593 net/ipv6/route.c res->fib6_type = res->f6i->fib6_type; f6i 594 net/ipv6/route.c res->fib6_flags = res->f6i->fib6_flags; f6i 798 net/ipv6/route.c struct fib6_info *f6i; f6i 800 net/ipv6/route.c for (f6i = f6i_start; f6i 801 net/ipv6/route.c f6i && f6i != nomatch; f6i 802 net/ipv6/route.c f6i = rcu_dereference(f6i->fib6_next)) { f6i 806 net/ipv6/route.c if (cont && f6i->fib6_metric != metric) { f6i 807 net/ipv6/route.c *cont = f6i; f6i 811 net/ipv6/route.c if (fib6_check_expired(f6i)) f6i 814 net/ipv6/route.c if (unlikely(f6i->nh)) { f6i 816 net/ipv6/route.c .flags = f6i->fib6_flags, f6i 823 net/ipv6/route.c if (nexthop_is_blackhole(f6i->nh)) { f6i 826 net/ipv6/route.c res->f6i = f6i; f6i 827 net/ipv6/route.c res->nh = nexthop_fib6_nh(f6i->nh); f6i 830 net/ipv6/route.c if (nexthop_for_each_fib6_nh(f6i->nh, rt6_nh_find_match, f6i 836 net/ipv6/route.c nh = f6i->fib6_nh; f6i 837 net/ipv6/route.c if (find_match(nh, f6i->fib6_flags, oif, strict, f6i 842 net/ipv6/route.c res->f6i = f6i; f6i 844 net/ipv6/route.c res->fib6_flags = f6i->fib6_flags; f6i 845 net/ipv6/route.c res->fib6_type = f6i->fib6_type; f6i 864 net/ipv6/route.c if (res->f6i || !cont) f6i 880 net/ipv6/route.c res->f6i = NULL; f6i 920 net/ipv6/route.c if (!res->f6i) { f6i 921 net/ipv6/route.c res->f6i = net->ipv6.fib6_null_entry; f6i 922 net/ipv6/route.c res->nh = res->f6i->fib6_nh; f6i 923 net/ipv6/route.c res->fib6_flags = res->f6i->fib6_flags; f6i 924 net/ipv6/route.c res->fib6_type = res->f6i->fib6_type; f6i 930 net/ipv6/route.c return (res->f6i->fib6_flags & RTF_NONEXTHOP) || f6i 1025 net/ipv6/route.c !rt6_need_strict(&res->f6i->fib6_dst.addr)) f6i 1095 net/ipv6/route.c struct fib6_info *f6i = res->f6i; f6i 1107 net/ipv6/route.c } else if (ipv6_addr_type(&f6i->fib6_dst.addr) & IPV6_ADDR_MULTICAST) { f6i 1134 net/ipv6/route.c struct fib6_info *f6i = res->f6i; f6i 1138 net/ipv6/route.c rt->rt6i_dst = f6i->fib6_dst; f6i 1145 net/ipv6/route.c rt6_set_from(rt, f6i); f6i 1147 net/ipv6/route.c rt->rt6i_src = f6i->fib6_src; f6i 1189 net/ipv6/route.c struct fib6_info *f6i = res->f6i; f6i 1193 net/ipv6/route.c if (!fib6_info_hold_safe(f6i)) f6i 1196 net/ipv6/route.c flags = fib6_info_dst_flags(f6i); f6i 1199 net/ipv6/route.c fib6_info_release(f6i); f6i 1228 net/ipv6/route.c res.f6i = rcu_dereference(fn->leaf); f6i 1229 net/ipv6/route.c if (!res.f6i) f6i 1230 net/ipv6/route.c res.f6i = net->ipv6.fib6_null_entry; f6i 1235 net/ipv6/route.c if (res.f6i == net->ipv6.fib6_null_entry) { f6i 1332 net/ipv6/route.c struct fib6_info *f6i = res->f6i; f6i 1340 net/ipv6/route.c if (!fib6_info_hold_safe(f6i)) f6i 1346 net/ipv6/route.c fib6_info_release(f6i); f6i 1357 net/ipv6/route.c if (f6i->fib6_dst.plen != 128 && f6i 1358 net/ipv6/route.c ipv6_addr_equal(&f6i->fib6_dst.addr, daddr)) f6i 1373 net/ipv6/route.c struct fib6_info *f6i = res->f6i; f6i 1374 net/ipv6/route.c unsigned short flags = fib6_info_dst_flags(f6i); f6i 1378 net/ipv6/route.c if (!fib6_info_hold_safe(f6i)) f6i 1386 net/ipv6/route.c fib6_info_release(f6i); f6i 1392 net/ipv6/route.c if (f6i->nh) f6i 1439 net/ipv6/route.c if (res->f6i->fib6_destroying) { f6i 1588 net/ipv6/route.c if (res->f6i->fib6_pmtu) { f6i 1589 net/ipv6/route.c mtu = res->f6i->fib6_pmtu; f6i 1663 net/ipv6/route.c struct fib6_info *f6i = res->f6i; f6i 1693 net/ipv6/route.c if (f6i->fib6_src.plen) f6i 1729 net/ipv6/route.c spin_lock_bh(&f6i->fib6_table->tb6_lock); f6i 1730 net/ipv6/route.c fib6_update_sernum(net, f6i); f6i 1731 net/ipv6/route.c spin_unlock_bh(&f6i->fib6_table->tb6_lock); f6i 1770 net/ipv6/route.c struct fib6_info *f6i = arg; f6i 1772 net/ipv6/route.c fib6_nh_flush_exceptions(nh, f6i); f6i 1777 net/ipv6/route.c void rt6_flush_exceptions(struct fib6_info *f6i) f6i 1779 net/ipv6/route.c if (f6i->nh) f6i 1780 net/ipv6/route.c nexthop_for_each_fib6_nh(f6i->nh, rt6_nh_flush_exceptions, f6i 1781 net/ipv6/route.c f6i); f6i 1783 net/ipv6/route.c fib6_nh_flush_exceptions(f6i->fib6_nh, f6i); f6i 1810 net/ipv6/route.c if (res->f6i->fib6_src.plen) f6i 1822 net/ipv6/route.c if (!ret && src_key && src_key != &res->f6i->fib6_src.addr) { f6i 1823 net/ipv6/route.c src_key = &res->f6i->fib6_src.addr; f6i 2162 net/ipv6/route.c void rt6_age_exceptions(struct fib6_info *f6i, f6i 2166 net/ipv6/route.c if (f6i->nh) { f6i 2172 net/ipv6/route.c nexthop_for_each_fib6_nh(f6i->nh, rt6_nh_age_exceptions, f6i 2175 net/ipv6/route.c fib6_nh_age_exceptions(f6i->fib6_nh, gc_args, now); f6i 2193 net/ipv6/route.c if (res->f6i == net->ipv6.fib6_null_entry) { f6i 2229 net/ipv6/route.c if (res.f6i == net->ipv6.fib6_null_entry) f6i 2575 net/ipv6/route.c static bool fib6_check(struct fib6_info *f6i, u32 cookie) f6i 2579 net/ipv6/route.c if (!fib6_get_cookie_safe(f6i, &rt_cookie) || rt_cookie != cookie) f6i 2582 net/ipv6/route.c if (fib6_check_expired(f6i)) f6i 2764 net/ipv6/route.c res.f6i = rcu_dereference(rt6->from); f6i 2765 net/ipv6/route.c if (!res.f6i) f6i 2768 net/ipv6/route.c res.fib6_flags = res.f6i->fib6_flags; f6i 2769 net/ipv6/route.c res.fib6_type = res.f6i->fib6_type; f6i 2771 net/ipv6/route.c if (res.f6i->nh) { f6i 2777 net/ipv6/route.c nexthop_for_each_fib6_nh(res.f6i->nh, f6i 2788 net/ipv6/route.c res.nh = res.f6i->fib6_nh; f6i 2959 net/ipv6/route.c res.f6i = rt; f6i 2993 net/ipv6/route.c res.f6i = rt; f6i 2999 net/ipv6/route.c res.fib6_flags = res.f6i->fib6_flags; f6i 3000 net/ipv6/route.c res.fib6_type = res.f6i->fib6_type; f6i 3129 net/ipv6/route.c struct fib6_info *f6i = res->f6i; f6i 3134 net/ipv6/route.c if (unlikely(fib6_metric_locked(f6i, RTAX_MTU))) { f6i 3135 net/ipv6/route.c mtu = f6i->fib6_pmtu; f6i 3243 net/ipv6/route.c if (!err && res->f6i != net->ipv6.fib6_null_entry) f6i 3263 net/ipv6/route.c !ipv6_addr_any(&res.f6i->fib6_dst.addr) && f6i 3853 net/ipv6/route.c .f6i = rt, f6i 3867 net/ipv6/route.c struct fib6_info *f6i; f6i 3875 net/ipv6/route.c rc = ip6_del_cached_rt(arg->cfg, arg->f6i, nh); f6i 3879 net/ipv6/route.c static int ip6_del_cached_rt_nh(struct fib6_config *cfg, struct fib6_info *f6i) f6i 3883 net/ipv6/route.c .f6i = f6i f6i 3886 net/ipv6/route.c return nexthop_for_each_fib6_nh(f6i->nh, fib6_nh_del_cached_rt, &arg); f6i 4066 net/ipv6/route.c res.f6i = rcu_dereference(rt->from); f6i 4067 net/ipv6/route.c if (!res.f6i) f6i 4070 net/ipv6/route.c if (res.f6i->nh) { f6i 4076 net/ipv6/route.c nexthop_for_each_fib6_nh(res.f6i->nh, f6i 4086 net/ipv6/route.c res.nh = res.f6i->fib6_nh; f6i 4089 net/ipv6/route.c res.fib6_flags = res.f6i->fib6_flags; f6i 4090 net/ipv6/route.c res.fib6_type = res.f6i->fib6_type; f6i 4438 net/ipv6/route.c struct fib6_info *f6i; f6i 4448 net/ipv6/route.c f6i = ip6_route_info_create(&cfg, gfp_flags, NULL); f6i 4449 net/ipv6/route.c if (!IS_ERR(f6i)) f6i 4450 net/ipv6/route.c f6i->dst_nocount = true; f6i 4451 net/ipv6/route.c return f6i; f6i 4777 net/ipv6/route.c struct fib6_info *f6i; f6i 4783 net/ipv6/route.c struct fib6_info *f6i = arg->f6i; f6i 4792 net/ipv6/route.c u32 mtu = f6i->fib6_pmtu; f6i 4796 net/ipv6/route.c fib6_metric_set(f6i, RTAX_MTU, arg->mtu); f6i 4806 net/ipv6/route.c static int rt6_mtu_change_route(struct fib6_info *f6i, void *p_arg) f6i 4821 net/ipv6/route.c if (fib6_metric_locked(f6i, RTAX_MTU)) f6i 4824 net/ipv6/route.c arg->f6i = f6i; f6i 4825 net/ipv6/route.c if (f6i->nh) { f6i 4827 net/ipv6/route.c return nexthop_for_each_fib6_nh(f6i->nh, fib6_nh_mtu_change, f6i 4831 net/ipv6/route.c return fib6_nh_mtu_change(f6i->fib6_nh, arg); f6i 5328 net/ipv6/route.c static size_t rt6_nlmsg_size(struct fib6_info *f6i) f6i 5332 net/ipv6/route.c if (f6i->nh) { f6i 5334 net/ipv6/route.c nexthop_for_each_fib6_nh(f6i->nh, rt6_nh_nlmsg_size, f6i 5337 net/ipv6/route.c struct fib6_nh *nh = f6i->fib6_nh; f6i 5340 net/ipv6/route.c if (f6i->fib6_nsiblings) { f6i 5346 net/ipv6/route.c nexthop_len *= f6i->fib6_nsiblings; f6i 5575 net/ipv6/route.c static bool fib6_info_uses_dev(const struct fib6_info *f6i, f6i 5578 net/ipv6/route.c if (f6i->nh) { f6i 5581 net/ipv6/route.c return !!nexthop_for_each_fib6_nh(f6i->nh, f6i 5586 net/ipv6/route.c if (f6i->fib6_nh->fib_nh_dev == dev) f6i 5589 net/ipv6/route.c if (f6i->fib6_nsiblings) { f6i 5593 net/ipv6/route.c &f6i->fib6_siblings, fib6_siblings) {