| /linux/net/ipv6/ |
| H A D | icmp.c | 196 struct flowi6 *fl6, bool apply_ratelimit) in icmpv6_xrlim_allow() argument 211 dst = ip6_route_output(net, sk, fl6); in icmpv6_xrlim_allow() 226 peer = inet_getpeer_v6(net->ipv6.peers, &fl6->daddr); in icmpv6_xrlim_allow() 240 struct flowi6 *fl6) in icmpv6_rt_has_prefsrc() argument 246 dst = ip6_route_output(net, sk, fl6); in icmpv6_rt_has_prefsrc() 276 void icmpv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6, in icmpv6_push_pending_frames() argument 293 icmp6h->icmp6_cksum = csum_ipv6_magic(&fl6->saddr, in icmpv6_push_pending_frames() 294 &fl6->daddr, in icmpv6_push_pending_frames() 295 len, fl6->flowi6_proto, in icmpv6_push_pending_frames() 306 icmp6h->icmp6_cksum = csum_ipv6_magic(&fl6->saddr, in icmpv6_push_pending_frames() [all …]
|
| H A D | ip6_udp_tunnel.c | 146 struct flowi6 fl6; in udp_tunnel6_dst_lookup() local 155 memset(&fl6, 0, sizeof(fl6)); in udp_tunnel6_dst_lookup() 156 fl6.flowi6_mark = skb->mark; in udp_tunnel6_dst_lookup() 157 fl6.flowi6_proto = IPPROTO_UDP; in udp_tunnel6_dst_lookup() 158 fl6.flowi6_oif = oif; in udp_tunnel6_dst_lookup() 159 fl6.daddr = key->u.ipv6.dst; in udp_tunnel6_dst_lookup() 160 fl6.saddr = key->u.ipv6.src; in udp_tunnel6_dst_lookup() 161 fl6.fl6_sport = sport; in udp_tunnel6_dst_lookup() 162 fl6.fl6_dport = dport; in udp_tunnel6_dst_lookup() 163 fl6.flowlabel = ip6_make_flowinfo(dsfield, key->label); in udp_tunnel6_dst_lookup() [all …]
|
| H A D | raw.c | 512 static int rawv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6, in rawv6_push_pending_frames() argument 581 csum = csum_ipv6_magic(&fl6->saddr, &fl6->daddr, in rawv6_push_pending_frames() 582 total_len, fl6->flowi6_proto, tmp_csum); in rawv6_push_pending_frames() 584 if (csum == 0 && fl6->flowi6_proto == IPPROTO_UDP) in rawv6_push_pending_frames() 596 struct flowi6 *fl6, struct dst_entry **dstp, in rawv6_send_hdrinc() argument 608 ipv6_local_error(sk, EMSGSIZE, fl6, rt->dst.dev->mtu); in rawv6_send_hdrinc() 690 static int rawv6_probe_proto_opt(struct raw6_frag_vec *rfv, struct flowi6 *fl6) in rawv6_probe_proto_opt() argument 693 switch (fl6->flowi6_proto) { in rawv6_probe_proto_opt() 698 fl6->fl6_icmp_type = rfv->c[0]; in rawv6_probe_proto_opt() 699 fl6->fl6_icmp_code = rfv->c[1]; in rawv6_probe_proto_opt() [all …]
|
| H A D | xfrm6_output.c | 21 struct flowi6 fl6; in xfrm6_local_rxpmtu() local 24 fl6.flowi6_oif = sk->sk_bound_dev_if; in xfrm6_local_rxpmtu() 25 fl6.daddr = ipv6_hdr(skb)->daddr; in xfrm6_local_rxpmtu() 27 ipv6_local_rxpmtu(sk, &fl6, mtu); in xfrm6_local_rxpmtu() 32 struct flowi6 fl6; in xfrm6_local_error() local 37 fl6.fl6_dport = inet_sk(sk)->inet_dport; in xfrm6_local_error() 38 fl6.daddr = hdr->daddr; in xfrm6_local_error() 40 ipv6_local_error(sk, EMSGSIZE, &fl6, mtu); in xfrm6_local_error()
|
| H A D | datagram.c | 41 static void ip6_datagram_flow_key_init(struct flowi6 *fl6, 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_mark = sk->sk_mark; in ip6_datagram_flow_key_init() 53 fl6->fl6_dport = inet->inet_dport; in ip6_datagram_flow_key_init() 54 fl6->fl6_sport = inet->inet_sport; in ip6_datagram_flow_key_init() 55 fl6->flowlabel = ip6_make_flowinfo(np->tclass, np->flow_label); in ip6_datagram_flow_key_init() 56 fl6->flowi6_uid = sk_uid(sk); in ip6_datagram_flow_key_init() [all …]
|
| H A D | xfrm6_policy.c | 28 struct flowi6 fl6; in xfrm6_dst_lookup() local 32 memset(&fl6, 0, sizeof(fl6)); in xfrm6_dst_lookup() 33 fl6.flowi6_l3mdev = l3mdev_master_ifindex_by_index(params->net, in xfrm6_dst_lookup() 35 fl6.flowi6_mark = params->mark; in xfrm6_dst_lookup() 36 memcpy(&fl6.daddr, params->daddr, sizeof(fl6.daddr)); in xfrm6_dst_lookup() 38 memcpy(&fl6.saddr, params->saddr, sizeof(fl6.saddr)); in xfrm6_dst_lookup() 40 fl6.flowi4_proto = params->ipproto; in xfrm6_dst_lookup() 41 fl6.uli = params->uli; in xfrm6_dst_lookup() 43 dst = ip6_route_output(params->net, NULL, &fl6); in xfrm6_dst_lookup()
|
| H A D | ip6_gre.c | 609 struct flowi6 *fl6, __u8 *dsfield, in prepare_ip6gre_xmit_ipv4() argument 618 memcpy(fl6, &t->fl.u.ip6, sizeof(*fl6)); in prepare_ip6gre_xmit_ipv4() 626 fl6->flowi6_mark = skb->mark; in prepare_ip6gre_xmit_ipv4() 628 fl6->flowi6_mark = t->parms.fwmark; in prepare_ip6gre_xmit_ipv4() 630 fl6->flowi6_uid = sock_net_uid(dev_net(dev), NULL); in prepare_ip6gre_xmit_ipv4() 635 struct flowi6 *fl6, __u8 *dsfield, in prepare_ip6gre_xmit_ipv6() argument 660 memcpy(fl6, &t->fl.u.ip6, sizeof(*fl6)); in prepare_ip6gre_xmit_ipv6() 668 fl6->flowlabel |= ip6_flowlabel(ipv6h); in prepare_ip6gre_xmit_ipv6() 671 fl6->flowi6_mark = skb->mark; in prepare_ip6gre_xmit_ipv6() 673 fl6->flowi6_mark = t->parms.fwmark; in prepare_ip6gre_xmit_ipv6() [all …]
|
| H A D | udp.c | 1356 static int udp_v6_send_skb(struct sk_buff *skb, struct flowi6 *fl6, in udp_v6_send_skb() argument 1372 uh->source = fl6->fl6_sport; in udp_v6_send_skb() 1373 uh->dest = fl6->fl6_dport; in udp_v6_send_skb() 1415 udp6_hwcsum_outgoing(sk, skb, &fl6->saddr, &fl6->daddr, len); in udp_v6_send_skb() 1420 uh->check = csum_ipv6_magic(&fl6->saddr, &fl6->daddr, in udp_v6_send_skb() 1476 struct flowi6 *fl6; in udpv6_sendmsg() local 1480 fl6 = &cork.fl.u.ip6; in udpv6_sendmsg() 1559 memset(fl6, 0, sizeof(*fl6)); in udpv6_sendmsg() 1565 fl6->fl6_dport = sin6->sin6_port; in udpv6_sendmsg() 1569 fl6->flowlabel = sin6->sin6_flowinfo&IPV6_FLOWINFO_MASK; in udpv6_sendmsg() [all …]
|
| H A D | fib6_rules.c | 68 int fib6_lookup(struct net *net, int oif, struct flowi6 *fl6, in fib6_lookup() argument 81 l3mdev_update_flow(net, flowi6_to_flowi(fl6)); in fib6_lookup() 84 flowi6_to_flowi(fl6), flags, &arg); in fib6_lookup() 87 fl6, res, flags); in fib6_lookup() 90 oif, fl6, res, flags); in fib6_lookup() 99 struct dst_entry *fib6_rule_lookup(struct net *net, struct flowi6 *fl6, in fib6_rule_lookup() argument 113 l3mdev_update_flow(net, flowi6_to_flowi(fl6)); in fib6_rule_lookup() 116 flowi6_to_flowi(fl6), flags, &arg); in fib6_rule_lookup() 124 net, net->ipv6.fib6_local_tbl, fl6, skb, flags); in fib6_rule_lookup() 129 net, net->ipv6.fib6_main_tbl, fl6, skb, flags); in fib6_rule_lookup() [all …]
|
| H A D | fou6.c | 22 struct flowi6 *fl6, u8 *protocol, __be16 sport) in fou6_build_udp() argument 35 &fl6->saddr, &fl6->daddr, skb->len); in fou6_build_udp() 41 u8 *protocol, struct flowi6 *fl6) in fou6_build_header() argument 52 fou6_build_udp(skb, e, fl6, protocol, sport); in fou6_build_header() 58 u8 *protocol, struct flowi6 *fl6) in gue6_build_header() argument 69 fou6_build_udp(skb, e, fl6, protocol, sport); in gue6_build_header()
|
| H A D | tcp_ipv6.c | 146 struct flowi6 *fl6; in tcp_v6_connect() local 156 fl6 = &inet_sk(sk)->cork.fl.u.ip6; in tcp_v6_connect() 157 memset(fl6, 0, sizeof(*fl6)); in tcp_v6_connect() 160 fl6->flowlabel = usin->sin6_flowinfo & IPV6_FLOWINFO_MASK; in tcp_v6_connect() 161 IP6_ECN_flow_init(fl6->flowlabel); in tcp_v6_connect() 162 if (fl6->flowlabel & IPV6_FLOWLABEL_MASK) { in tcp_v6_connect() 164 flowlabel = fl6_sock_lookup(sk, fl6->flowlabel); in tcp_v6_connect() 213 np->flow_label = fl6->flowlabel; in tcp_v6_connect() 263 fl6->flowi6_proto = IPPROTO_TCP; in tcp_v6_connect() 264 fl6->daddr = sk->sk_v6_daddr; in tcp_v6_connect() [all …]
|
| H A D | ip6_output.c | 291 int ip6_xmit(const struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6, in ip6_xmit() argument 295 struct in6_addr *first_hop = &fl6->daddr; in ip6_xmit() 302 u8 proto = fl6->flowi6_proto; in ip6_xmit() 333 &fl6->saddr); in ip6_xmit() 351 ip6_flow_hdr(hdr, tclass, ip6_make_flowlabel(net, skb, fl6->flowlabel, in ip6_xmit() 352 ip6_autoflowlabel(net, sk), fl6)); in ip6_xmit() 358 hdr->saddr = fl6->saddr; in ip6_xmit() 392 ipv6_local_error((struct sock *)sk, EMSGSIZE, fl6, mtu); in ip6_xmit() 1091 const struct flowi6 *fl6) in ip6_sk_dst_check() argument 1122 if (ip6_rt_check(&rt->rt6i_dst, &fl6->daddr, in ip6_sk_dst_check() [all …]
|
| H A D | route.c | 439 struct flowi6 *fl6, int oif, bool have_oif_match, in fib6_select_path() argument 458 if (!fl6->mp_hash && in fib6_select_path() 460 fl6->mp_hash = rt6_multipath_hash(net, fl6, skb, NULL); in fib6_select_path() 463 nexthop_path_fib6_result(res, fl6->mp_hash); in fib6_select_path() 471 hash = fl6->mp_hash; in fib6_select_path() 1258 struct flowi6 *fl6, in ip6_pol_route_lookup() argument 1267 fn = fib6_node_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr); in ip6_pol_route_lookup() 1273 rt6_device_match(net, &res, &fl6->saddr, fl6->flowi6_oif, in ip6_pol_route_lookup() 1277 fn = fib6_backtrack(fn, &fl6->saddr); in ip6_pol_route_lookup() 1288 fib6_select_path(net, &res, fl6, fl6->flowi6_oif, in ip6_pol_route_lookup() [all …]
|
| H A D | rpl_iptunnel.c | 223 struct flowi6 fl6; in rpl_output() local 225 memset(&fl6, 0, sizeof(fl6)); in rpl_output() 226 fl6.daddr = hdr->daddr; in rpl_output() 227 fl6.saddr = hdr->saddr; in rpl_output() 228 fl6.flowlabel = ip6_flowinfo(hdr); in rpl_output() 229 fl6.flowi6_mark = skb->mark; in rpl_output() 230 fl6.flowi6_proto = hdr->nexthdr; in rpl_output() 232 dst = ip6_route_output(net, NULL, &fl6); in rpl_output() 241 dst_cache_set_ip6(&rlwt->cache, dst, &fl6.saddr); in rpl_output()
|
| H A D | seg6_iptunnel.c | 489 struct flowi6 *fl6, u32 tbl_id) in seg6_table_lookup() argument 498 rt = ip6_pol_route(net, table, 0, fl6, skb, RT6_LOOKUP_F_HAS_SADDR); in seg6_table_lookup() 503 struct flowi6 *fl6) in seg6_init_flowi6() argument 505 memset(fl6, 0, sizeof(*fl6)); in seg6_init_flowi6() 507 fl6->daddr = hdr->daddr; in seg6_init_flowi6() 508 fl6->saddr = hdr->saddr; in seg6_init_flowi6() 509 fl6->flowlabel = ip6_flowinfo(hdr); in seg6_init_flowi6() 510 fl6->flowi6_mark = skb->mark; in seg6_init_flowi6() 511 fl6->flowi6_proto = hdr->nexthdr; in seg6_init_flowi6() 526 struct flowi6 fl6; in seg6_input_route() local [all …]
|
| H A D | netfilter.c | 34 struct flowi6 fl6 = { in ip6_route_me_harder() local 45 fl6.flowi6_oif = sk->sk_bound_dev_if; in ip6_route_me_harder() 47 fl6.flowi6_oif = dev->ifindex; in ip6_route_me_harder() 49 fib6_rules_early_flow_dissect(net, skb, &fl6, &flkeys); in ip6_route_me_harder() 50 dst = ip6_route_output(net, sk, &fl6); in ip6_route_me_harder() 66 xfrm_decode_session(net, skb, flowi6_to_flowi(&fl6), AF_INET6) == 0) { in ip6_route_me_harder() 71 dst = xfrm_lookup(net, dst, flowi6_to_flowi(&fl6), sk, 0); in ip6_route_me_harder()
|
| /linux/net/ipv6/netfilter/ |
| H A D | nf_dup_ipv6.c | 24 struct flowi6 fl6; in nf_dup_ipv6_route() local 26 memset(&fl6, 0, sizeof(fl6)); in nf_dup_ipv6_route() 28 fl6.flowi6_oif = oif; in nf_dup_ipv6_route() 30 fl6.daddr = *gw; in nf_dup_ipv6_route() 31 fl6.flowlabel = (__force __be32)(((iph->flow_lbl[0] & 0xF) << 16) | in nf_dup_ipv6_route() 33 fl6.flowi6_flags = FLOWI_FLAG_KNOWN_NH; in nf_dup_ipv6_route() 34 dst = ip6_route_output(net, NULL, &fl6); in nf_dup_ipv6_route()
|
| H A D | nf_reject_ipv6.c | 322 struct flowi6 fl6; in nf_send_reset6() local 334 memset(&fl6, 0, sizeof(fl6)); in nf_send_reset6() 335 fl6.flowi6_proto = IPPROTO_TCP; in nf_send_reset6() 336 fl6.saddr = oip6h->daddr; in nf_send_reset6() 337 fl6.daddr = oip6h->saddr; in nf_send_reset6() 338 fl6.fl6_sport = otcph->dest; in nf_send_reset6() 339 fl6.fl6_dport = otcph->source; in nf_send_reset6() 342 nf_ip6_route(net, &dst, flowi6_to_flowi(&fl6), false); in nf_send_reset6() 350 fl6.flowi6_oif = l3mdev_master_ifindex(skb_dst_dev(oldskb)); in nf_send_reset6() 351 fl6.flowi6_mark = IP6_REPLY_MARK(net, oldskb->mark); in nf_send_reset6() [all …]
|
| H A D | ip6t_rpfilter.c | 38 struct flowi6 fl6 = { in rpfilter_lookup_reverse6() local 49 memcpy(&fl6.saddr, &iph->daddr, sizeof(struct in6_addr)); in rpfilter_lookup_reverse6() 55 fl6.flowi6_mark = flags & XT_RPFILTER_VALID_MARK ? skb->mark : 0; in rpfilter_lookup_reverse6() 59 fl6.flowi6_oif = dev->ifindex; in rpfilter_lookup_reverse6() 61 fl6.flowi6_oif = dev->ifindex; in rpfilter_lookup_reverse6() 63 rt = (void *)ip6_route_lookup(net, &fl6, skb, lookup_flags); in rpfilter_lookup_reverse6()
|
| /linux/net/dccp/ |
| H A D | ipv6.c | |
| /linux/drivers/net/ethernet/chelsio/libcxgb/ |
| H A D | libcxgb_cm.c | 129 struct flowi6 fl6; in cxgb_find_route6() local 131 memset(&fl6, 0, sizeof(fl6)); in cxgb_find_route6() 132 memcpy(&fl6.daddr, peer_ip, 16); in cxgb_find_route6() 133 memcpy(&fl6.saddr, local_ip, 16); in cxgb_find_route6() 134 if (ipv6_addr_type(&fl6.daddr) & IPV6_ADDR_LINKLOCAL) in cxgb_find_route6() 135 fl6.flowi6_oif = sin6_scope_id; in cxgb_find_route6() 136 dst = ip6_route_output(&init_net, NULL, &fl6); in cxgb_find_route6()
|
| /linux/net/sctp/ |
| H A D | ipv6.c | 223 struct flowi6 *fl6 = &t->fl.u.ip6; in sctp_v6_xmit() local 230 skb->len, &fl6->saddr, &fl6->daddr); in sctp_v6_xmit() 236 IP6_ECN_flow_xmit(sk, fl6->flowlabel); in sctp_v6_xmit() 248 res = ip6_xmit(sk, skb, fl6, sk->sk_mark, in sctp_v6_xmit() 262 label = ip6_make_flowlabel(sock_net(sk), skb, fl6->flowlabel, true, fl6); in sctp_v6_xmit() 265 udp_tunnel6_xmit_skb(dst, sk, skb, NULL, &fl6->saddr, &fl6->daddr, in sctp_v6_xmit() 281 struct flowi6 *fl6 in sctp_v6_get_dst() 279 struct flowi6 *fl6 = &_fl.u.ip6; sctp_v6_get_dst() local 446 struct flowi6 *fl6 = &fl->u.ip6; sctp_v6_get_saddr() local [all...] |
| /linux/net/xfrm/ |
| H A D | xfrm_nat_keepalive.c | 81 struct flowi6 fl6; in nat_keepalive_send_ipv6() local 92 memset(&fl6, 0, sizeof(fl6)); in nat_keepalive_send_ipv6() 93 fl6.flowi6_mark = skb->mark; in nat_keepalive_send_ipv6() 94 fl6.saddr = ka->saddr.in6; in nat_keepalive_send_ipv6() 95 fl6.daddr = ka->daddr.in6; in nat_keepalive_send_ipv6() 96 fl6.flowi6_proto = IPPROTO_UDP; in nat_keepalive_send_ipv6() 97 fl6.fl6_sport = ka->encap_sport; in nat_keepalive_send_ipv6() 98 fl6.fl6_dport = ka->encap_dport; in nat_keepalive_send_ipv6() 103 dst = ip6_dst_lookup_flow(net, sk, &fl6, NULL); in nat_keepalive_send_ipv6() 111 err = ip6_xmit(sk, skb, &fl6, skb->mark, NULL, 0, 0); in nat_keepalive_send_ipv6()
|
| /linux/net/ipv6/ila/ |
| H A D | ila_lwt.c | 66 struct flowi6 fl6; in ila_output() local 72 memset(&fl6, 0, sizeof(fl6)); in ila_output() 73 fl6.flowi6_oif = dst_dev(orig_dst)->ifindex; in ila_output() 74 fl6.flowi6_iif = LOOPBACK_IFINDEX; in ila_output() 75 fl6.daddr = *rt6_nexthop(dst_rt6_info(orig_dst), in ila_output() 78 dst = ip6_route_output(net, NULL, &fl6); in ila_output() 85 dst = xfrm_lookup(net, dst, flowi6_to_flowi(&fl6), NULL, 0); in ila_output() 94 dst_cache_set_ip6(&ilwt->dst_cache, dst, &fl6.saddr); in ila_output()
|
| /linux/include/net/ |
| H A D | ip6_fib.h | 436 struct dst_entry *fib6_rule_lookup(struct net *net, struct flowi6 *fl6, 443 int fib6_lookup(struct net *net, int oif, struct flowi6 *fl6, 448 int oif, struct flowi6 *fl6, struct fib6_result *res, 452 struct flowi6 *fl6, int oif, bool have_oif_match, 645 struct flowi6 *fl6, 650 struct flowi6 *fl6, 655 struct flowi6 *fl6, 660 struct flowi6 *fl6, 666 struct flowi6 *fl6, in pol_lookup_func() argument 675 net, table, fl6, skb, flags); in pol_lookup_func() [all …]
|