Lines Matching refs:fl6

157 int ip6_xmit(const struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6,  in ip6_xmit()  argument
162 struct in6_addr *first_hop = &fl6->daddr; in ip6_xmit()
165 u8 proto = fl6->flowi6_proto; in ip6_xmit()
213 ip6_flow_hdr(hdr, tclass, ip6_make_flowlabel(net, skb, fl6->flowlabel, in ip6_xmit()
214 np->autoflowlabel, fl6)); in ip6_xmit()
220 hdr->saddr = fl6->saddr; in ip6_xmit()
243 ipv6_local_error((struct sock *)sk, EMSGSIZE, fl6, mtu); in ip6_xmit()
859 const struct flowi6 *fl6) in ip6_sk_dst_check() argument
890 if (ip6_rt_check(&rt->rt6i_dst, &fl6->daddr, np->daddr_cache) || in ip6_sk_dst_check()
892 ip6_rt_check(&rt->rt6i_src, &fl6->saddr, np->saddr_cache) || in ip6_sk_dst_check()
894 (!(fl6->flowi6_flags & FLOWI_FLAG_SKIP_NH_OIF) && in ip6_sk_dst_check()
895 (fl6->flowi6_oif && fl6->flowi6_oif != dst->dev->ifindex))) { in ip6_sk_dst_check()
905 struct dst_entry **dst, struct flowi6 *fl6) in ip6_dst_lookup_tail() argument
923 if (ipv6_addr_any(&fl6->saddr) && (!*dst || !(*dst)->error)) { in ip6_dst_lookup_tail()
928 *dst = ip6_route_output(net, sk, fl6); in ip6_dst_lookup_tail()
930 err = ip6_route_get_saddr(net, rt, &fl6->daddr, in ip6_dst_lookup_tail()
932 &fl6->saddr); in ip6_dst_lookup_tail()
945 if (fl6->flowi6_oif) in ip6_dst_lookup_tail()
950 *dst = ip6_route_output_flags(net, sk, fl6, flags); in ip6_dst_lookup_tail()
968 rt6_nexthop(rt, &fl6->daddr)); in ip6_dst_lookup_tail()
977 ifp = ipv6_get_ifaddr(net, &fl6->saddr, in ip6_dst_lookup_tail()
990 memcpy(&fl_gw6, fl6, sizeof(struct flowi6)); in ip6_dst_lookup_tail()
1021 struct flowi6 *fl6) in ip6_dst_lookup() argument
1024 return ip6_dst_lookup_tail(net, sk, dst, fl6); in ip6_dst_lookup()
1039 struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6, in ip6_dst_lookup_flow() argument
1045 err = ip6_dst_lookup_tail(sock_net(sk), sk, &dst, fl6); in ip6_dst_lookup_flow()
1049 fl6->daddr = *final_dst; in ip6_dst_lookup_flow()
1050 if (!fl6->flowi6_oif) in ip6_dst_lookup_flow()
1051 fl6->flowi6_oif = l3mdev_fib_oif(dst->dev); in ip6_dst_lookup_flow()
1053 return xfrm_lookup_route(sock_net(sk), dst, flowi6_to_flowi(fl6), sk, 0); in ip6_dst_lookup_flow()
1071 struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6, in ip6_sk_dst_lookup_flow() argument
1076 dst = ip6_sk_dst_check(sk, dst, fl6); in ip6_sk_dst_lookup_flow()
1078 dst = ip6_dst_lookup_flow(sk, fl6, final_dst); in ip6_sk_dst_lookup_flow()
1090 unsigned int flags, const struct flowi6 *fl6) in ip6_ufo_append_data() argument
1136 &fl6->daddr, in ip6_ufo_append_data()
1137 &fl6->saddr); in ip6_ufo_append_data()
1183 struct rt6_info *rt, struct flowi6 *fl6) in ip6_setup_cork() argument
1227 cork->fl.u.ip6 = *fl6; in ip6_setup_cork()
1249 struct flowi6 *fl6, in __ip6_append_data() argument
1299 ipv6_local_rxpmtu(sk, fl6, mtu - headersize + in __ip6_append_data()
1311 ipv6_local_error(sk, EMSGSIZE, fl6, in __ip6_append_data()
1358 transhdrlen, mtu, flags, fl6); in __ip6_append_data()
1563 int tclass, struct ipv6_txoptions *opt, struct flowi6 *fl6, in ip6_append_data() argument
1578 tclass, opt, rt, fl6); in ip6_append_data()
1586 fl6 = &inet->cork.fl.u.ip6; in ip6_append_data()
1590 return __ip6_append_data(sk, fl6, &sk->sk_write_queue, &inet->cork.base, in ip6_append_data()
1629 struct flowi6 *fl6 = &cork->fl.u.ip6; in __ip6_make_skb() local
1630 unsigned char proto = fl6->flowi6_proto; in __ip6_make_skb()
1654 *final_dst = fl6->daddr; in __ip6_make_skb()
1666 ip6_make_flowlabel(net, skb, fl6->flowlabel, in __ip6_make_skb()
1667 np->autoflowlabel, fl6)); in __ip6_make_skb()
1670 hdr->saddr = fl6->saddr; in __ip6_make_skb()
1749 struct ipv6_txoptions *opt, struct flowi6 *fl6, in ip6_make_skb() argument
1768 err = ip6_setup_cork(sk, &cork, &v6_cork, hlimit, tclass, opt, rt, fl6); in ip6_make_skb()
1775 err = __ip6_append_data(sk, fl6, &queue, &cork.base, &v6_cork, in ip6_make_skb()