Lines Matching refs:fl6
670 struct flowi6 *fl6, int flags) in ip6_pol_route_lookup() argument
676 fn = fib6_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); in ip6_pol_route_lookup()
679 rt = rt6_device_match(net, rt, &fl6->saddr, fl6->flowi6_oif, flags); in ip6_pol_route_lookup()
680 BACKTRACK(net, &fl6->saddr); in ip6_pol_route_lookup()
688 struct dst_entry * ip6_route_lookup(struct net *net, struct flowi6 *fl6, in ip6_route_lookup() argument
691 return fib6_rule_lookup(net, fl6, flags, ip6_pol_route_lookup); in ip6_route_lookup()
698 struct flowi6 fl6 = { in rt6_lookup() local
706 memcpy(&fl6.saddr, saddr, sizeof(*saddr)); in rt6_lookup()
710 dst = fib6_rule_lookup(net, &fl6, flags, ip6_pol_route_lookup); in rt6_lookup()
824 struct flowi6 *fl6, int flags, bool input) in ip6_pol_route() argument
842 fn = fib6_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); in ip6_pol_route()
847 BACKTRACK(net, &fl6->saddr); in ip6_pol_route()
857 nrt = rt6_alloc_cow(rt, &fl6->daddr, &fl6->saddr); in ip6_pol_route()
859 nrt = rt6_alloc_clone(rt, &fl6->daddr); in ip6_pol_route()
898 struct flowi6 *fl6, int flags) in ip6_pol_route_input() argument
900 return ip6_pol_route(net, table, fl6->flowi6_iif, fl6, flags, true); in ip6_pol_route_input()
905 struct flowi6 *fl6, int flags) in ip6_route_input_lookup() argument
907 if (rt6_need_strict(&fl6->daddr) && dev->type != ARPHRD_PIMREG) in ip6_route_input_lookup()
910 return fib6_rule_lookup(net, fl6, flags, ip6_pol_route_input); in ip6_route_input_lookup()
918 struct flowi6 fl6 = { in ip6_route_input() local
927 skb_dst_set(skb, ip6_route_input_lookup(net, skb->dev, &fl6, flags)); in ip6_route_input()
931 struct flowi6 *fl6, int flags) in ip6_pol_route_output() argument
933 return ip6_pol_route(net, table, fl6->flowi6_oif, fl6, flags, false); in ip6_pol_route_output()
937 struct flowi6 *fl6) in ip6_route_output() argument
941 if ((sk && sk->sk_bound_dev_if) || rt6_need_strict(&fl6->daddr)) in ip6_route_output()
944 if (!ipv6_addr_any(&fl6->saddr)) in ip6_route_output()
949 return fib6_rule_lookup(net, fl6, flags, ip6_pol_route_output); in ip6_route_output()
1114 struct flowi6 *fl6) in icmp6_dst_alloc() argument
1134 neigh = ip6_neigh_lookup(&rt->dst, &fl6->daddr); in icmp6_dst_alloc()
1146 rt->rt6i_dst.addr = fl6->daddr; in icmp6_dst_alloc()
1158 dst = xfrm_lookup(net, &rt->dst, flowi6_to_flowi(fl6), NULL, 0); in icmp6_dst_alloc()
1565 struct flowi6 fl6; member
1571 struct flowi6 *fl6, in __ip6_route_redirect() argument
1574 struct ip6rd_flowi *rdfl = (struct ip6rd_flowi *)fl6; in __ip6_route_redirect()
1590 fn = fib6_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); in __ip6_route_redirect()
1605 if (fl6->flowi6_oif != rt->dst.dev->ifindex) in __ip6_route_redirect()
1614 BACKTRACK(net, &fl6->saddr); in __ip6_route_redirect()
1631 .fl6 = { in ip6_route_redirect()
1643 return (struct rt6_info *)fib6_rule_lookup(net, &rdfl.fl6, in ip6_route_redirect()
2572 struct flowi6 fl6; in inet6_rtm_getroute() local
2580 memset(&fl6, 0, sizeof(fl6)); in inet6_rtm_getroute()
2586 fl6.saddr = *(struct in6_addr *)nla_data(tb[RTA_SRC]); in inet6_rtm_getroute()
2593 fl6.daddr = *(struct in6_addr *)nla_data(tb[RTA_DST]); in inet6_rtm_getroute()
2612 fl6.flowi6_iif = iif; in inet6_rtm_getroute()
2614 if (!ipv6_addr_any(&fl6.saddr)) in inet6_rtm_getroute()
2617 rt = (struct rt6_info *)ip6_route_input_lookup(net, dev, &fl6, in inet6_rtm_getroute()
2620 fl6.flowi6_oif = oif; in inet6_rtm_getroute()
2622 rt = (struct rt6_info *)ip6_route_output(net, NULL, &fl6); in inet6_rtm_getroute()
2639 err = rt6_fill_node(net, skb, rt, &fl6.daddr, &fl6.saddr, iif, in inet6_rtm_getroute()