/linux-3.4.99/net/ipv6/ |
D | inet6_connection_sock.c | 64 struct flowi6 fl6; in inet6_csk_route_req() local 66 memset(&fl6, 0, sizeof(fl6)); in inet6_csk_route_req() 67 fl6.flowi6_proto = IPPROTO_TCP; in inet6_csk_route_req() 68 fl6.daddr = treq->rmt_addr; in inet6_csk_route_req() 69 final_p = fl6_update_dst(&fl6, np->opt, &final); in inet6_csk_route_req() 70 fl6.saddr = treq->loc_addr; in inet6_csk_route_req() 71 fl6.flowi6_oif = sk->sk_bound_dev_if; in inet6_csk_route_req() 72 fl6.flowi6_mark = sk->sk_mark; in inet6_csk_route_req() 73 fl6.fl6_dport = inet_rsk(req)->rmt_port; in inet6_csk_route_req() 74 fl6.fl6_sport = inet_rsk(req)->loc_port; in inet6_csk_route_req() [all …]
|
D | icmp.c | 161 struct flowi6 *fl6) in icmpv6_xrlim_allow() argument 180 dst = ip6_route_output(net, sk, fl6); in icmpv6_xrlim_allow() 220 static int icmpv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6, struct icmp6hdr *thdr, i… in icmpv6_push_pending_frames() argument 236 icmp6h->icmp6_cksum = csum_ipv6_magic(&fl6->saddr, in icmpv6_push_pending_frames() 237 &fl6->daddr, in icmpv6_push_pending_frames() 238 len, fl6->flowi6_proto, in icmpv6_push_pending_frames() 249 icmp6h->icmp6_cksum = csum_ipv6_magic(&fl6->saddr, in icmpv6_push_pending_frames() 250 &fl6->daddr, in icmpv6_push_pending_frames() 251 len, fl6->flowi6_proto, in icmpv6_push_pending_frames() 304 struct sock *sk, struct flowi6 *fl6) in icmpv6_route_lookup() argument [all …]
|
D | xfrm6_policy.c | 33 struct flowi6 fl6; in xfrm6_dst_lookup() local 37 memset(&fl6, 0, sizeof(fl6)); in xfrm6_dst_lookup() 38 memcpy(&fl6.daddr, daddr, sizeof(fl6.daddr)); in xfrm6_dst_lookup() 40 memcpy(&fl6.saddr, saddr, sizeof(fl6.saddr)); in xfrm6_dst_lookup() 42 dst = ip6_route_output(net, NULL, &fl6); in xfrm6_dst_lookup() 126 struct flowi6 *fl6 = &fl->u.ip6; in _decode_session6() local 134 memset(fl6, 0, sizeof(struct flowi6)); in _decode_session6() 135 fl6->flowi6_mark = skb->mark; in _decode_session6() 137 fl6->daddr = reverse ? hdr->saddr : hdr->daddr; in _decode_session6() 138 fl6->saddr = reverse ? hdr->daddr : hdr->saddr; in _decode_session6() [all …]
|
D | datagram.c | 48 struct flowi6 fl6; in ip6_datagram_connect() local 67 memset(&fl6, 0, sizeof(fl6)); in ip6_datagram_connect() 69 fl6.flowlabel = usin->sin6_flowinfo&IPV6_FLOWINFO_MASK; in ip6_datagram_connect() 70 if (fl6.flowlabel&IPV6_FLOWLABEL_MASK) { in ip6_datagram_connect() 71 flowlabel = fl6_sock_lookup(sk, fl6.flowlabel); in ip6_datagram_connect() 147 np->flow_label = fl6.flowlabel; in ip6_datagram_connect() 156 fl6.flowi6_proto = sk->sk_protocol; in ip6_datagram_connect() 157 fl6.daddr = np->daddr; in ip6_datagram_connect() 158 fl6.saddr = np->saddr; in ip6_datagram_connect() 159 fl6.flowi6_oif = sk->sk_bound_dev_if; in ip6_datagram_connect() [all …]
|
D | raw.c | 526 static int rawv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6, in rawv6_push_pending_frames() argument 587 csum = csum_ipv6_magic(&fl6->saddr, &fl6->daddr, in rawv6_push_pending_frames() 588 total_len, fl6->flowi6_proto, tmp_csum); in rawv6_push_pending_frames() 590 if (csum == 0 && fl6->flowi6_proto == IPPROTO_UDP) in rawv6_push_pending_frames() 603 struct flowi6 *fl6, struct dst_entry **dstp, in rawv6_send_hdrinc() argument 615 ipv6_local_error(sk, EMSGSIZE, fl6, rt->dst.dev->mtu); in rawv6_send_hdrinc() 664 static int rawv6_probe_proto_opt(struct flowi6 *fl6, struct msghdr *msg) in rawv6_probe_proto_opt() argument 681 switch (fl6->flowi6_proto) { in rawv6_probe_proto_opt() 696 if (get_user(fl6->fl6_icmp_type, type) || in rawv6_probe_proto_opt() 697 get_user(fl6->fl6_icmp_code, code)) in rawv6_probe_proto_opt() [all …]
|
D | xfrm6_output.c | 48 struct flowi6 fl6; in xfrm6_local_rxpmtu() local 51 fl6.flowi6_oif = sk->sk_bound_dev_if; in xfrm6_local_rxpmtu() 52 fl6.daddr = ipv6_hdr(skb)->daddr; in xfrm6_local_rxpmtu() 54 ipv6_local_rxpmtu(sk, &fl6, mtu); in xfrm6_local_rxpmtu() 59 struct flowi6 fl6; in xfrm6_local_error() local 62 fl6.fl6_dport = inet_sk(sk)->inet_dport; in xfrm6_local_error() 63 fl6.daddr = ipv6_hdr(skb)->daddr; in xfrm6_local_error() 65 ipv6_local_error(sk, EMSGSIZE, &fl6, mtu); in xfrm6_local_error()
|
D | syncookies.c | 237 struct flowi6 fl6; in cookie_v6_check() local 238 memset(&fl6, 0, sizeof(fl6)); in cookie_v6_check() 239 fl6.flowi6_proto = IPPROTO_TCP; in cookie_v6_check() 240 fl6.daddr = ireq6->rmt_addr; in cookie_v6_check() 241 final_p = fl6_update_dst(&fl6, np->opt, &final); in cookie_v6_check() 242 fl6.saddr = ireq6->loc_addr; in cookie_v6_check() 243 fl6.flowi6_oif = sk->sk_bound_dev_if; in cookie_v6_check() 244 fl6.flowi6_mark = sk->sk_mark; in cookie_v6_check() 245 fl6.fl6_dport = inet_rsk(req)->rmt_port; in cookie_v6_check() 246 fl6.fl6_sport = inet_sk(sk)->inet_sport; in cookie_v6_check() [all …]
|
D | udp.c | 895 struct flowi6 *fl6; in udp_v6_push_pending_frames() local 903 fl6 = &inet->cork.fl.u.ip6; in udp_v6_push_pending_frames() 913 uh->source = fl6->fl6_sport; in udp_v6_push_pending_frames() 914 uh->dest = fl6->fl6_dport; in udp_v6_push_pending_frames() 921 udp6_hwcsum_outgoing(sk, skb, &fl6->saddr, &fl6->daddr, in udp_v6_push_pending_frames() 928 uh->check = csum_ipv6_magic(&fl6->saddr, &fl6->daddr, in udp_v6_push_pending_frames() 929 up->len, fl6->flowi6_proto, csum); in udp_v6_push_pending_frames() 961 struct flowi6 fl6; in udpv6_sendmsg() local 1044 memset(&fl6, 0, sizeof(fl6)); in udpv6_sendmsg() 1050 fl6.fl6_dport = sin6->sin6_port; in udpv6_sendmsg() [all …]
|
D | tcp_ipv6.c | 136 struct flowi6 fl6; in tcp_v6_connect() local 147 memset(&fl6, 0, sizeof(fl6)); in tcp_v6_connect() 150 fl6.flowlabel = usin->sin6_flowinfo&IPV6_FLOWINFO_MASK; in tcp_v6_connect() 151 IP6_ECN_flow_init(fl6.flowlabel); in tcp_v6_connect() 152 if (fl6.flowlabel&IPV6_FLOWLABEL_MASK) { in tcp_v6_connect() 154 flowlabel = fl6_sock_lookup(sk, fl6.flowlabel); in tcp_v6_connect() 200 np->flow_label = fl6.flowlabel; in tcp_v6_connect() 247 fl6.flowi6_proto = IPPROTO_TCP; in tcp_v6_connect() 248 fl6.daddr = np->daddr; in tcp_v6_connect() 249 fl6.saddr = saddr ? *saddr : np->saddr; in tcp_v6_connect() [all …]
|
D | xfrm6_state.c | 26 const struct flowi6 *fl6 = &fl->u.ip6; in __xfrm6_init_tempsel() local 30 *(struct in6_addr *)&sel->daddr = fl6->daddr; in __xfrm6_init_tempsel() 31 *(struct in6_addr *)&sel->saddr = fl6->saddr; in __xfrm6_init_tempsel() 32 sel->dport = xfrm_flowi_dport(fl, &fl6->uli); in __xfrm6_init_tempsel() 34 sel->sport = xfrm_flowi_sport(fl, &fl6->uli); in __xfrm6_init_tempsel() 39 sel->proto = fl6->flowi6_proto; in __xfrm6_init_tempsel() 40 sel->ifindex = fl6->flowi6_oif; in __xfrm6_init_tempsel()
|
D | ip6_output.c | 182 int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6, in ip6_xmit() argument 187 struct in6_addr *first_hop = &fl6->daddr; in ip6_xmit() 190 u8 proto = fl6->flowi6_proto; in ip6_xmit() 235 *(__be32 *)hdr = htonl(0x60000000 | (tclass << 20)) | fl6->flowlabel; in ip6_xmit() 241 hdr->saddr = fl6->saddr; in ip6_xmit() 918 const struct flowi6 *fl6) in ip6_sk_dst_check() argument 949 if (ip6_rt_check(&rt->rt6i_dst, &fl6->daddr, np->daddr_cache) || in ip6_sk_dst_check() 951 ip6_rt_check(&rt->rt6i_src, &fl6->saddr, np->saddr_cache) || in ip6_sk_dst_check() 953 (fl6->flowi6_oif && fl6->flowi6_oif != dst->dev->ifindex)) { in ip6_sk_dst_check() 963 struct dst_entry **dst, struct flowi6 *fl6) in ip6_dst_lookup_tail() argument [all …]
|
D | ip6_tunnel.c | 886 struct flowi6 *fl6, in ip6_tnl_xmit2() argument 903 if (!fl6->flowi6_mark) in ip6_tnl_xmit2() 906 ndst = ip6_route_output(net, NULL, fl6); in ip6_tnl_xmit2() 910 ndst = xfrm_lookup(net, ndst, flowi6_to_flowi(fl6), NULL, 0); in ip6_tnl_xmit2() 962 if (fl6->flowi6_mark) { in ip6_tnl_xmit2() 970 proto = fl6->flowi6_proto; in ip6_tnl_xmit2() 978 *(__be32*)ipv6h = fl6->flowlabel | htonl(0x60000000); in ip6_tnl_xmit2() 983 ipv6h->saddr = fl6->saddr; in ip6_tnl_xmit2() 984 ipv6h->daddr = fl6->daddr; in ip6_tnl_xmit2() 1015 struct flowi6 fl6; in ip4ip6_tnl_xmit() local [all …]
|
D | route.c | 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 [all …]
|
D | fib6_rules.c | 33 struct dst_entry *fib6_rule_lookup(struct net *net, struct flowi6 *fl6, in fib6_rule_lookup() argument 42 flowi6_to_flowi(fl6), flags, &arg); in fib6_rule_lookup() 119 struct flowi6 *fl6 = &fl->u.ip6; in fib6_rule_match() local 122 !ipv6_prefix_equal(&fl6->daddr, &r->dst.addr, r->dst.plen)) in fib6_rule_match() 132 if (!ipv6_prefix_equal(&fl6->saddr, &r->src.addr, in fib6_rule_match() 139 if (r->tclass && r->tclass != ((ntohl(fl6->flowlabel) >> 20) & 0xff)) in fib6_rule_match()
|
D | netfilter.c | 19 struct flowi6 fl6 = { in ip6_route_me_harder() local 26 dst = ip6_route_output(net, skb->sk, &fl6); in ip6_route_me_harder() 41 xfrm_decode_session(skb, flowi6_to_flowi(&fl6), AF_INET6) == 0) { in ip6_route_me_harder() 43 dst = xfrm_lookup(net, dst, flowi6_to_flowi(&fl6), skb->sk, 0); in ip6_route_me_harder()
|
D | mip6.c | 213 const struct flowi6 *fl6 = &fl->u.ip6; in mip6_destopt_reject() local 220 if (unlikely(fl6->flowi6_proto == IPPROTO_MH && in mip6_destopt_reject() 221 fl6->fl6_mh_type <= IP6_MH_TYPE_MAX)) in mip6_destopt_reject() 246 sel.proto = fl6->flowi6_proto; in mip6_destopt_reject() 247 sel.dport = xfrm_flowi_dport(fl, &fl6->uli); in mip6_destopt_reject() 250 sel.sport = xfrm_flowi_sport(fl, &fl6->uli); in mip6_destopt_reject() 253 sel.ifindex = fl6->flowi6_oif; in mip6_destopt_reject()
|
D | af_inet6.c | 659 struct flowi6 fl6; in inet6_sk_rebuild_header() local 661 memset(&fl6, 0, sizeof(fl6)); in inet6_sk_rebuild_header() 662 fl6.flowi6_proto = sk->sk_protocol; in inet6_sk_rebuild_header() 663 fl6.daddr = np->daddr; in inet6_sk_rebuild_header() 664 fl6.saddr = np->saddr; in inet6_sk_rebuild_header() 665 fl6.flowlabel = np->flow_label; in inet6_sk_rebuild_header() 666 fl6.flowi6_oif = sk->sk_bound_dev_if; in inet6_sk_rebuild_header() 667 fl6.flowi6_mark = sk->sk_mark; in inet6_sk_rebuild_header() 668 fl6.fl6_dport = inet->inet_dport; in inet6_sk_rebuild_header() 669 fl6.fl6_sport = inet->inet_sport; in inet6_sk_rebuild_header() [all …]
|
/linux-3.4.99/net/dccp/ |
D | ipv6.c | 145 struct flowi6 fl6; in dccp_v6_err() local 151 memset(&fl6, 0, sizeof(fl6)); in dccp_v6_err() 152 fl6.flowi6_proto = IPPROTO_DCCP; in dccp_v6_err() 153 fl6.daddr = np->daddr; in dccp_v6_err() 154 fl6.saddr = np->saddr; in dccp_v6_err() 155 fl6.flowi6_oif = sk->sk_bound_dev_if; in dccp_v6_err() 156 fl6.fl6_dport = inet->inet_dport; in dccp_v6_err() 157 fl6.fl6_sport = inet->inet_sport; in dccp_v6_err() 158 security_sk_classify_flow(sk, flowi6_to_flowi(&fl6)); in dccp_v6_err() 160 dst = ip6_dst_lookup_flow(sk, &fl6, NULL, false); in dccp_v6_err() [all …]
|
/linux-3.4.99/net/ipv6/netfilter/ |
D | ip6t_REJECT.c | 53 struct flowi6 fl6; in send_reset() local 95 memset(&fl6, 0, sizeof(fl6)); in send_reset() 96 fl6.flowi6_proto = IPPROTO_TCP; in send_reset() 97 fl6.saddr = oip6h->daddr; in send_reset() 98 fl6.daddr = oip6h->saddr; in send_reset() 99 fl6.fl6_sport = otcph.dest; in send_reset() 100 fl6.fl6_dport = otcph.source; in send_reset() 101 security_skb_classify_flow(oldskb, flowi6_to_flowi(&fl6)); in send_reset() 102 dst = ip6_route_output(net, NULL, &fl6); in send_reset() 107 dst = xfrm_lookup(net, dst, flowi6_to_flowi(&fl6), NULL, 0); in send_reset()
|
D | ip6t_rpfilter.c | 35 struct flowi6 fl6 = { in rpfilter_lookup_reverse6() local 43 memcpy(&fl6.saddr, &iph->daddr, sizeof(struct in6_addr)); in rpfilter_lookup_reverse6() 49 fl6.flowi6_mark = flags & XT_RPFILTER_VALID_MARK ? skb->mark : 0; in rpfilter_lookup_reverse6() 51 fl6.flowi6_oif = dev->ifindex; in rpfilter_lookup_reverse6() 55 rt = (void *) ip6_route_lookup(dev_net(dev), &fl6, lookup_flags); in rpfilter_lookup_reverse6()
|
/linux-3.4.99/net/sctp/ |
D | ipv6.c | 212 struct flowi6 *fl6 = &transport->fl.u.ip6; in sctp_v6_xmit() local 216 &fl6->saddr, &fl6->daddr); in sctp_v6_xmit() 218 IP6_ECN_flow_xmit(sk, fl6->flowlabel); in sctp_v6_xmit() 225 return ip6_xmit(sk, skb, fl6, np->opt, np->tclass); in sctp_v6_xmit() 236 struct flowi6 *fl6 = &fl->u.ip6; in sctp_v6_get_dst() local 248 memset(fl6, 0, sizeof(struct flowi6)); in sctp_v6_get_dst() 249 fl6->daddr = daddr->v6.sin6_addr; in sctp_v6_get_dst() 250 fl6->fl6_dport = daddr->v6.sin6_port; in sctp_v6_get_dst() 251 fl6->flowi6_proto = IPPROTO_SCTP; in sctp_v6_get_dst() 253 fl6->flowi6_oif = daddr->v6.sin6_scope_id; in sctp_v6_get_dst() [all …]
|
/linux-3.4.99/drivers/infiniband/core/ |
D | addr.c | 251 struct flowi6 fl6; in addr6_resolve() local 255 memset(&fl6, 0, sizeof fl6); in addr6_resolve() 256 fl6.daddr = dst_in->sin6_addr; in addr6_resolve() 257 fl6.saddr = src_in->sin6_addr; in addr6_resolve() 258 fl6.flowi6_oif = addr->bound_dev_if; in addr6_resolve() 260 dst = ip6_route_output(&init_net, NULL, &fl6); in addr6_resolve() 264 if (ipv6_addr_any(&fl6.saddr)) { in addr6_resolve() 266 &fl6.daddr, 0, &fl6.saddr); in addr6_resolve() 271 src_in->sin6_addr = fl6.saddr; in addr6_resolve() 287 ret = dst_fetch_ha(dst, addr, &fl6.daddr); in addr6_resolve()
|
/linux-3.4.99/net/netfilter/ |
D | xt_TEE.c | 143 struct flowi6 fl6; in tee_tg_route6() local 145 memset(&fl6, 0, sizeof(fl6)); in tee_tg_route6() 149 fl6.flowi6_oif = info->priv->oif; in tee_tg_route6() 151 fl6.daddr = info->gw.in6; in tee_tg_route6() 152 fl6.flowlabel = ((iph->flow_lbl[0] & 0xF) << 16) | in tee_tg_route6() 154 dst = ip6_route_output(net, NULL, &fl6); in tee_tg_route6()
|
/linux-3.4.99/include/net/ |
D | ipv6.h | 504 struct flowi6 *fl6, 525 struct flowi6 *fl6, 536 struct flowi6 *fl6); 538 struct flowi6 *fl6, 542 struct flowi6 *fl6, 579 extern struct in6_addr *fl6_update_dst(struct flowi6 *fl6, 615 extern void ipv6_local_error(struct sock *sk, int err, struct flowi6 *fl6, u32 info); 616 extern void ipv6_local_rxpmtu(struct sock *sk, struct flowi6 *fl6, u32 mtu);
|
D | ip6_route.h | 77 struct flowi6 *fl6); 79 struct flowi6 *fl6, int flags); 105 struct flowi6 *fl6);
|