Lines Matching refs:fl6
43 static void ip6_datagram_flow_key_init(struct flowi6 *fl6, struct sock *sk) in ip6_datagram_flow_key_init() argument
48 memset(fl6, 0, sizeof(*fl6)); in ip6_datagram_flow_key_init()
49 fl6->flowi6_proto = sk->sk_protocol; in ip6_datagram_flow_key_init()
50 fl6->daddr = sk->sk_v6_daddr; in ip6_datagram_flow_key_init()
51 fl6->saddr = np->saddr; in ip6_datagram_flow_key_init()
52 fl6->flowi6_oif = sk->sk_bound_dev_if; in ip6_datagram_flow_key_init()
53 fl6->flowi6_mark = sk->sk_mark; in ip6_datagram_flow_key_init()
54 fl6->fl6_dport = inet->inet_dport; in ip6_datagram_flow_key_init()
55 fl6->fl6_sport = inet->inet_sport; in ip6_datagram_flow_key_init()
56 fl6->flowlabel = np->flow_label; in ip6_datagram_flow_key_init()
57 fl6->flowi6_uid = sk->sk_uid; in ip6_datagram_flow_key_init()
59 if (!fl6->flowi6_oif) in ip6_datagram_flow_key_init()
60 fl6->flowi6_oif = np->sticky_pktinfo.ipi6_ifindex; in ip6_datagram_flow_key_init()
62 if (!fl6->flowi6_oif && ipv6_addr_is_multicast(&fl6->daddr)) in ip6_datagram_flow_key_init()
63 fl6->flowi6_oif = np->mcast_oif; in ip6_datagram_flow_key_init()
65 security_sk_classify_flow(sk, flowi6_to_flowi(fl6)); in ip6_datagram_flow_key_init()
76 struct flowi6 fl6; in ip6_datagram_dst_update() local
84 ip6_datagram_flow_key_init(&fl6, sk); in ip6_datagram_dst_update()
88 final_p = fl6_update_dst(&fl6, opt, &final); in ip6_datagram_dst_update()
91 dst = ip6_dst_lookup_flow(sk, &fl6, final_p); in ip6_datagram_dst_update()
99 np->saddr = fl6.saddr; in ip6_datagram_dst_update()
102 sk->sk_v6_rcv_saddr = fl6.saddr; in ip6_datagram_dst_update()
110 ipv6_addr_equal(&fl6.daddr, &sk->sk_v6_daddr) ? in ip6_datagram_dst_update()
113 ipv6_addr_equal(&fl6.saddr, &np->saddr) ? in ip6_datagram_dst_update()
319 void ipv6_local_error(struct sock *sk, int err, struct flowi6 *fl6, u32 info) in ipv6_local_error() argument
338 iph->daddr = fl6->daddr; in ipv6_local_error()
349 serr->port = fl6->fl6_dport; in ipv6_local_error()
358 void ipv6_local_rxpmtu(struct sock *sk, struct flowi6 *fl6, u32 mtu) in ipv6_local_rxpmtu() argument
375 iph->daddr = fl6->daddr; in ipv6_local_rxpmtu()
383 mtu_info->ip6m_addr.sin6_scope_id = fl6->flowi6_oif; in ipv6_local_rxpmtu()
728 struct msghdr *msg, struct flowi6 *fl6, in ip6_datagram_send_ctl() argument
771 if (fl6->flowi6_oif && in ip6_datagram_send_ctl()
772 src_info->ipi6_ifindex != fl6->flowi6_oif) in ip6_datagram_send_ctl()
774 fl6->flowi6_oif = src_info->ipi6_ifindex; in ip6_datagram_send_ctl()
780 if (fl6->flowi6_oif) { in ip6_datagram_send_ctl()
781 dev = dev_get_by_index_rcu(net, fl6->flowi6_oif); in ip6_datagram_send_ctl()
800 fl6->saddr = src_info->ipi6_addr; in ip6_datagram_send_ctl()
817 if (fl6->flowlabel&IPV6_FLOWINFO_MASK) { in ip6_datagram_send_ctl()
818 if ((fl6->flowlabel^*(__be32 *)CMSG_DATA(cmsg))&~IPV6_FLOWINFO_MASK) { in ip6_datagram_send_ctl()
823 fl6->flowlabel = IPV6_FLOWINFO_MASK & *(__be32 *)CMSG_DATA(cmsg); in ip6_datagram_send_ctl()