Lines Matching refs:fl6
173 struct flowi6 *fl6) in icmpv6_xrlim_allow() argument
192 dst = ip6_route_output(net, sk, fl6); in icmpv6_xrlim_allow()
238 int icmpv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6, in icmpv6_push_pending_frames() argument
256 icmp6h->icmp6_cksum = csum_ipv6_magic(&fl6->saddr, in icmpv6_push_pending_frames()
257 &fl6->daddr, in icmpv6_push_pending_frames()
258 len, fl6->flowi6_proto, in icmpv6_push_pending_frames()
269 icmp6h->icmp6_cksum = csum_ipv6_magic(&fl6->saddr, in icmpv6_push_pending_frames()
270 &fl6->daddr, in icmpv6_push_pending_frames()
271 len, fl6->flowi6_proto, in icmpv6_push_pending_frames()
326 struct flowi6 *fl6) in icmpv6_route_lookup() argument
332 err = ip6_dst_lookup(sk, &dst, fl6); in icmpv6_route_lookup()
349 dst = xfrm_lookup(net, dst, flowi6_to_flowi(fl6), sk, 0); in icmpv6_route_lookup()
400 struct flowi6 fl6; in icmp6_send() local
469 memset(&fl6, 0, sizeof(fl6)); in icmp6_send()
470 fl6.flowi6_proto = IPPROTO_ICMPV6; in icmp6_send()
471 fl6.daddr = hdr->saddr; in icmp6_send()
473 fl6.saddr = *saddr; in icmp6_send()
474 fl6.flowi6_mark = mark; in icmp6_send()
475 fl6.flowi6_oif = iif; in icmp6_send()
476 fl6.fl6_icmp_type = type; in icmp6_send()
477 fl6.fl6_icmp_code = code; in icmp6_send()
478 security_skb_classify_flow(skb, flowi6_to_flowi(&fl6)); in icmp6_send()
486 if (!icmpv6_xrlim_allow(sk, type, &fl6)) in icmp6_send()
494 if (!fl6.flowi6_oif && ipv6_addr_is_multicast(&fl6.daddr)) in icmp6_send()
495 fl6.flowi6_oif = np->mcast_oif; in icmp6_send()
496 else if (!fl6.flowi6_oif) in icmp6_send()
497 fl6.flowi6_oif = np->ucast_oif; in icmp6_send()
499 dst = icmpv6_route_lookup(net, skb, sk, &fl6); in icmp6_send()
503 hlimit = ip6_sk_dst_hoplimit(np, &fl6, dst); in icmp6_send()
522 np->tclass, NULL, &fl6, (struct rt6_info *)dst, in icmp6_send()
528 err = icmpv6_push_pending_frames(sk, &fl6, &tmp_hdr, in icmp6_send()
555 struct flowi6 fl6; in icmpv6_echo_reply() local
573 memset(&fl6, 0, sizeof(fl6)); in icmpv6_echo_reply()
574 fl6.flowi6_proto = IPPROTO_ICMPV6; in icmpv6_echo_reply()
575 fl6.daddr = ipv6_hdr(skb)->saddr; in icmpv6_echo_reply()
577 fl6.saddr = *saddr; in icmpv6_echo_reply()
578 fl6.flowi6_oif = skb->dev->ifindex; in icmpv6_echo_reply()
579 fl6.fl6_icmp_type = ICMPV6_ECHO_REPLY; in icmpv6_echo_reply()
580 fl6.flowi6_mark = mark; in icmpv6_echo_reply()
581 security_skb_classify_flow(skb, flowi6_to_flowi(&fl6)); in icmpv6_echo_reply()
589 if (!fl6.flowi6_oif && ipv6_addr_is_multicast(&fl6.daddr)) in icmpv6_echo_reply()
590 fl6.flowi6_oif = np->mcast_oif; in icmpv6_echo_reply()
591 else if (!fl6.flowi6_oif) in icmpv6_echo_reply()
592 fl6.flowi6_oif = np->ucast_oif; in icmpv6_echo_reply()
594 err = ip6_dst_lookup(sk, &dst, &fl6); in icmpv6_echo_reply()
597 dst = xfrm_lookup(net, dst, flowi6_to_flowi(&fl6), sk, 0); in icmpv6_echo_reply()
601 hlimit = ip6_sk_dst_hoplimit(np, &fl6, dst); in icmpv6_echo_reply()
611 sizeof(struct icmp6hdr), hlimit, tclass, NULL, &fl6, in icmpv6_echo_reply()
619 err = icmpv6_push_pending_frames(sk, &fl6, &tmp_hdr, in icmpv6_echo_reply()
813 void icmpv6_flow_init(struct sock *sk, struct flowi6 *fl6, in icmpv6_flow_init() argument
819 memset(fl6, 0, sizeof(*fl6)); in icmpv6_flow_init()
820 fl6->saddr = *saddr; in icmpv6_flow_init()
821 fl6->daddr = *daddr; in icmpv6_flow_init()
822 fl6->flowi6_proto = IPPROTO_ICMPV6; in icmpv6_flow_init()
823 fl6->fl6_icmp_type = type; in icmpv6_flow_init()
824 fl6->fl6_icmp_code = 0; in icmpv6_flow_init()
825 fl6->flowi6_oif = oif; in icmpv6_flow_init()
826 security_sk_classify_flow(sk, flowi6_to_flowi(fl6)); in icmpv6_flow_init()