• Home
  • Raw
  • Download

Lines Matching refs:fl6

452 					     struct flowi6 *fl6, int oif,  in rt6_multipath_select()  argument
461 if (!fl6->mp_hash) in rt6_multipath_select()
462 fl6->mp_hash = rt6_multipath_hash(fl6, NULL); in rt6_multipath_select()
464 route_choosen = fl6->mp_hash % (match->rt6i_nsiblings + 1); in rt6_multipath_select()
871 struct flowi6 *fl6, int flags) in ip6_pol_route_lookup() argument
876 if (fl6->flowi6_flags & FLOWI_FLAG_SKIP_NH_OIF) in ip6_pol_route_lookup()
880 fn = fib6_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); in ip6_pol_route_lookup()
883 rt = rt6_device_match(net, rt, &fl6->saddr, fl6->flowi6_oif, flags); in ip6_pol_route_lookup()
884 if (rt->rt6i_nsiblings && fl6->flowi6_oif == 0) in ip6_pol_route_lookup()
885 rt = rt6_multipath_select(rt, fl6, fl6->flowi6_oif, flags); in ip6_pol_route_lookup()
887 fn = fib6_backtrack(fn, &fl6->saddr); in ip6_pol_route_lookup()
894 trace_fib6_table_lookup(net, rt, table->tb6_id, fl6); in ip6_pol_route_lookup()
900 struct dst_entry *ip6_route_lookup(struct net *net, struct flowi6 *fl6, in ip6_route_lookup() argument
903 return fib6_rule_lookup(net, fl6, flags, ip6_pol_route_lookup); in ip6_route_lookup()
910 struct flowi6 fl6 = { in rt6_lookup() local
918 memcpy(&fl6.saddr, saddr, sizeof(*saddr)); in rt6_lookup()
922 dst = fib6_rule_lookup(net, &fl6, flags, ip6_pol_route_lookup); in rt6_lookup()
1100 int oif, struct flowi6 *fl6, int flags) in ip6_pol_route() argument
1113 fn = fib6_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); in ip6_pol_route()
1116 if (fl6->flowi6_flags & FLOWI_FLAG_SKIP_NH_OIF) in ip6_pol_route()
1122 rt = rt6_multipath_select(rt, fl6, oif, strict); in ip6_pol_route()
1124 fn = fib6_backtrack(fn, &fl6->saddr); in ip6_pol_route()
1142 trace_fib6_table_lookup(net, rt, table->tb6_id, fl6); in ip6_pol_route()
1144 } else if (unlikely((fl6->flowi6_flags & FLOWI_FLAG_KNOWN_NH) && in ip6_pol_route()
1157 uncached_rt = ip6_rt_cache_alloc(rt, &fl6->daddr, NULL); in ip6_pol_route()
1170 trace_fib6_table_lookup(net, uncached_rt, table->tb6_id, fl6); in ip6_pol_route()
1195 trace_fib6_table_lookup(net, pcpu_rt, table->tb6_id, fl6); in ip6_pol_route()
1203 struct flowi6 *fl6, int flags) in ip6_pol_route_input() argument
1205 return ip6_pol_route(net, table, fl6->flowi6_iif, fl6, flags); in ip6_pol_route_input()
1210 struct flowi6 *fl6, int flags) in ip6_route_input_lookup() argument
1212 if (rt6_need_strict(&fl6->daddr) && dev->type != ARPHRD_PIMREG) in ip6_route_input_lookup()
1215 return fib6_rule_lookup(net, fl6, flags, ip6_pol_route_input); in ip6_route_input_lookup()
1260 u32 rt6_multipath_hash(const struct flowi6 *fl6, const struct sk_buff *skb) in rt6_multipath_hash() argument
1269 return get_hash_from_flowi6(fl6); in rt6_multipath_hash()
1278 struct flowi6 fl6 = { in ip6_route_input() local
1289 fl6.flowi6_tun_key.tun_id = tun_info->key.tun_id; in ip6_route_input()
1290 if (unlikely(fl6.flowi6_proto == IPPROTO_ICMPV6)) in ip6_route_input()
1291 fl6.mp_hash = rt6_multipath_hash(&fl6, skb); in ip6_route_input()
1293 skb_dst_set(skb, ip6_route_input_lookup(net, skb->dev, &fl6, flags)); in ip6_route_input()
1297 struct flowi6 *fl6, int flags) in ip6_pol_route_output() argument
1299 return ip6_pol_route(net, table, fl6->flowi6_oif, fl6, flags); in ip6_pol_route_output()
1303 struct flowi6 *fl6, int flags) in ip6_route_output_flags() argument
1307 if (rt6_need_strict(&fl6->daddr)) { in ip6_route_output_flags()
1310 dst = l3mdev_link_scope_lookup(net, fl6); in ip6_route_output_flags()
1315 fl6->flowi6_iif = LOOPBACK_IFINDEX; in ip6_route_output_flags()
1317 any_src = ipv6_addr_any(&fl6->saddr); in ip6_route_output_flags()
1318 if ((sk && sk->sk_bound_dev_if) || rt6_need_strict(&fl6->daddr) || in ip6_route_output_flags()
1319 (fl6->flowi6_oif && any_src)) in ip6_route_output_flags()
1327 return fib6_rule_lookup(net, fl6, flags, ip6_pol_route_output); in ip6_route_output_flags()
1539 struct flowi6 fl6; in ip6_update_pmtu() local
1541 memset(&fl6, 0, sizeof(fl6)); in ip6_update_pmtu()
1542 fl6.flowi6_oif = oif; in ip6_update_pmtu()
1543 fl6.flowi6_mark = mark ? mark : IP6_REPLY_MARK(net, skb->mark); in ip6_update_pmtu()
1544 fl6.daddr = iph->daddr; in ip6_update_pmtu()
1545 fl6.saddr = iph->saddr; in ip6_update_pmtu()
1546 fl6.flowlabel = ip6_flowinfo(iph); in ip6_update_pmtu()
1547 fl6.flowi6_uid = uid; in ip6_update_pmtu()
1549 dst = ip6_route_output(net, NULL, &fl6); in ip6_update_pmtu()
1580 struct flowi6 fl6; member
1586 struct flowi6 *fl6, in __ip6_route_redirect() argument
1589 struct ip6rd_flowi *rdfl = (struct ip6rd_flowi *)fl6; in __ip6_route_redirect()
1604 fn = fib6_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); in __ip6_route_redirect()
1613 if (fl6->flowi6_oif != rt->dst.dev->ifindex) in __ip6_route_redirect()
1628 fn = fib6_backtrack(fn, &fl6->saddr); in __ip6_route_redirect()
1638 trace_fib6_table_lookup(net, rt, table->tb6_id, fl6); in __ip6_route_redirect()
1643 const struct flowi6 *fl6, in ip6_route_redirect() argument
1649 rdfl.fl6 = *fl6; in ip6_route_redirect()
1652 return fib6_rule_lookup(net, &rdfl.fl6, in ip6_route_redirect()
1661 struct flowi6 fl6; in ip6_redirect() local
1663 memset(&fl6, 0, sizeof(fl6)); in ip6_redirect()
1664 fl6.flowi6_iif = LOOPBACK_IFINDEX; in ip6_redirect()
1665 fl6.flowi6_oif = oif; in ip6_redirect()
1666 fl6.flowi6_mark = mark; in ip6_redirect()
1667 fl6.daddr = iph->daddr; in ip6_redirect()
1668 fl6.saddr = iph->saddr; in ip6_redirect()
1669 fl6.flowlabel = ip6_flowinfo(iph); in ip6_redirect()
1670 fl6.flowi6_uid = uid; in ip6_redirect()
1672 dst = ip6_route_redirect(net, &fl6, &ipv6_hdr(skb)->saddr); in ip6_redirect()
1684 struct flowi6 fl6; in ip6_redirect_no_header() local
1686 memset(&fl6, 0, sizeof(fl6)); in ip6_redirect_no_header()
1687 fl6.flowi6_iif = LOOPBACK_IFINDEX; in ip6_redirect_no_header()
1688 fl6.flowi6_oif = oif; in ip6_redirect_no_header()
1689 fl6.flowi6_mark = mark; in ip6_redirect_no_header()
1690 fl6.daddr = msg->dest; in ip6_redirect_no_header()
1691 fl6.saddr = iph->daddr; in ip6_redirect_no_header()
1692 fl6.flowi6_uid = sock_net_uid(net, NULL); in ip6_redirect_no_header()
1694 dst = ip6_route_redirect(net, &fl6, &iph->saddr); in ip6_redirect_no_header()
1756 struct flowi6 *fl6) in icmp6_dst_alloc() argument
1776 rt->rt6i_gateway = fl6->daddr; in icmp6_dst_alloc()
1777 rt->rt6i_dst.addr = fl6->daddr; in icmp6_dst_alloc()
1787 dst = xfrm_lookup(net, &rt->dst, flowi6_to_flowi(fl6), NULL, 0); in icmp6_dst_alloc()
1877 struct flowi6 fl6 = { in ip6_nh_lookup_table() local
1893 rt = ip6_pol_route(net, table, cfg->fc_ifindex, &fl6, flags); in ip6_nh_lookup_table()
3643 struct flowi6 fl6; in inet6_rtm_getroute() local
3652 memset(&fl6, 0, sizeof(fl6)); in inet6_rtm_getroute()
3654 fl6.flowlabel = ip6_make_flowinfo(rtm->rtm_tos, 0); in inet6_rtm_getroute()
3661 fl6.saddr = *(struct in6_addr *)nla_data(tb[RTA_SRC]); in inet6_rtm_getroute()
3668 fl6.daddr = *(struct in6_addr *)nla_data(tb[RTA_DST]); in inet6_rtm_getroute()
3678 fl6.flowi6_mark = nla_get_u32(tb[RTA_MARK]); in inet6_rtm_getroute()
3681 fl6.flowi6_uid = make_kuid(current_user_ns(), in inet6_rtm_getroute()
3684 fl6.flowi6_uid = iif ? INVALID_UID : current_uid(); in inet6_rtm_getroute()
3699 fl6.flowi6_iif = iif; in inet6_rtm_getroute()
3701 if (!ipv6_addr_any(&fl6.saddr)) in inet6_rtm_getroute()
3704 dst = ip6_route_input_lookup(net, dev, &fl6, flags); in inet6_rtm_getroute()
3708 fl6.flowi6_oif = oif; in inet6_rtm_getroute()
3710 dst = ip6_route_output(net, NULL, &fl6); in inet6_rtm_getroute()
3749 err = rt6_fill_node(net, skb, rt, &fl6.daddr, &fl6.saddr, iif, in inet6_rtm_getroute()