| /linux/net/ipv4/ |
| H A D | route.c | 510 static void __build_flow_key(const struct net *net, struct flowi4 *fl4, in __build_flow_key() argument 526 flowi4_init_output(fl4, oif, mark, tos & INET_DSCP_MASK, scope, in __build_flow_key() 531 static void build_skb_flow_key(struct flowi4 *fl4, const struct sk_buff *skb, in build_skb_flow_key() argument 541 __build_flow_key(net, fl4, sk, iph, oif, tos, prot, mark, 0); in build_skb_flow_key() 544 static void build_sk_flow_key(struct flowi4 *fl4, const struct sock *sk) in build_sk_flow_key() argument 554 flowi4_init_output(fl4, sk->sk_bound_dev_if, READ_ONCE(sk->sk_mark), in build_sk_flow_key() 565 static void ip_rt_build_flow_key(struct flowi4 *fl4, const struct sock *sk, in ip_rt_build_flow_key() argument 569 build_skb_flow_key(fl4, skb, sk); in ip_rt_build_flow_key() 571 build_sk_flow_key(fl4, sk); in ip_rt_build_flow_key() 744 static void __ip_do_redirect(struct rtable *rt, struct sk_buff *skb, struct flowi4 *fl4, in __ip_do_redirect() argument [all …]
|
| H A D | datagram.c | 23 struct flowi4 *fl4; in __ip4_datagram_connect() local 48 fl4 = &inet->cork.fl.u.ip4; in __ip4_datagram_connect() 49 rt = ip_route_connect(fl4, usin->sin_addr.s_addr, saddr, oif, in __ip4_datagram_connect() 66 inet->inet_daddr = fl4->daddr; in __ip4_datagram_connect() 69 inet->inet_saddr = fl4->saddr; in __ip4_datagram_connect() 71 inet->inet_rcv_saddr = fl4->saddr; in __ip4_datagram_connect() 106 struct flowi4 fl4; in ip4_datagram_release_cb() local 117 inet_sk_init_flowi4(inet, &fl4); in ip4_datagram_release_cb() 118 rt = ip_route_output_flow(sock_net(sk), &fl4, sk); in ip4_datagram_release_cb()
|
| H A D | icmp.c | 313 struct flowi4 *fl4, int type, int code, in icmpv4_xrlim_allow() argument 335 peer = inet_getpeer_v4(net->ipv4.peers, fl4->daddr, in icmpv4_xrlim_allow() 383 struct flowi4 *fl4, in icmp_push_reply() argument 388 if (ip_append_data(sk, fl4, icmp_glue_bits, icmp_param, in icmp_push_reply() 407 ip_push_pending_frames(sk, fl4); in icmp_push_reply() 421 struct flowi4 fl4; in icmp_reply() local 455 memset(&fl4, 0, sizeof(fl4)); in icmp_reply() 456 fl4.daddr = daddr; in icmp_reply() 457 fl4.saddr = saddr; in icmp_reply() 458 fl4.flowi4_mark = mark; in icmp_reply() [all …]
|
| H A D | ip_output.c | 450 * iph->saddr = fl4->saddr; 451 * iph->daddr = fl4->daddr; 453 static void ip_copy_addrs(struct iphdr *iph, const struct flowi4 *fl4) in ip_copy_addrs() argument 455 BUILD_BUG_ON(offsetof(typeof(*fl4), daddr) != in ip_copy_addrs() 456 offsetof(typeof(*fl4), saddr) + sizeof(fl4->saddr)); in ip_copy_addrs() 458 iph->saddr = fl4->saddr; in ip_copy_addrs() 459 iph->daddr = fl4->daddr; in ip_copy_addrs() 469 struct flowi4 *fl4; in __ip_queue_xmit() local 479 fl4 in __ip_queue_xmit() 951 __ip_append_data(struct sock * sk,struct flowi4 * fl4,struct sk_buff_head * queue,struct inet_cork * cork,struct page_frag * pfrag,int getfrag (void * from,char * to,int offset,int len,int odd,struct sk_buff * skb),void * from,int length,int transhdrlen,unsigned int flags) __ip_append_data() argument 1357 ip_append_data(struct sock * sk,struct flowi4 * fl4,int getfrag (void * from,char * to,int offset,int len,int odd,struct sk_buff * skb),void * from,int length,int transhdrlen,struct ipcm_cookie * ipc,struct rtable ** rtp,unsigned int flags) ip_append_data() argument 1397 __ip_make_skb(struct sock * sk,struct flowi4 * fl4,struct sk_buff_head * queue,struct inet_cork * cork) __ip_make_skb() argument 1519 ip_push_pending_frames(struct sock * sk,struct flowi4 * fl4) ip_push_pending_frames() argument 1552 ip_make_skb(struct sock * sk,struct flowi4 * fl4,int getfrag (void * from,char * to,int offset,int len,int odd,struct sk_buff * skb),void * from,int length,int transhdrlen,struct ipcm_cookie * ipc,struct rtable ** rtp,struct inet_cork * cork,unsigned int flags) ip_make_skb() argument 1611 struct flowi4 fl4; ip_send_unicast_reply() local [all...] |
| H A D | ip_tunnel.c | 293 struct flowi4 fl4; in ip_tunnel_bind_dev() local 296 ip_tunnel_init_flow(&fl4, iph->protocol, iph->daddr, in ip_tunnel_bind_dev() 300 rt = ip_route_output_key(tunnel->net, &fl4); in ip_tunnel_bind_dev() 580 struct flowi4 fl4; in ip_md_tunnel_xmit() local 599 ip_tunnel_init_flow(&fl4, proto, key->u.ipv4.dst, key->u.ipv4.src, in ip_md_tunnel_xmit() 607 if (ip_tunnel_encap(skb, &tun_info->encap, &proto, &fl4) < 0) in ip_md_tunnel_xmit() 612 rt = dst_cache_get_ip4(&tun_info->dst_cache, &fl4.saddr); in ip_md_tunnel_xmit() 614 rt = ip_route_output_key(tunnel->net, &fl4); in ip_md_tunnel_xmit() 621 fl4.saddr); in ip_md_tunnel_xmit() 656 iptunnel_xmit(NULL, rt, skb, fl4.saddr, fl4.daddr, proto, tos, ttl, in ip_md_tunnel_xmit() [all …]
|
| H A D | ping.c | 637 struct flowi4 *fl4) in ping_v4_push_pending_frames() argument 648 return ip_push_pending_frames(sk, fl4); in ping_v4_push_pending_frames() 702 struct flowi4 fl4; in ping_v4_sendmsg() local 783 flowi4_init_output(&fl4, ipc.oif, ipc.sockc.mark, in ping_v4_sendmsg() 788 fl4.fl4_icmp_type = user_icmph.type; in ping_v4_sendmsg() 789 fl4.fl4_icmp_code = user_icmph.code; in ping_v4_sendmsg() 791 security_sk_classify_flow(sk, flowi4_to_flowi_common(&fl4)); in ping_v4_sendmsg() 792 rt = ip_route_output_flow(net, &fl4, sk); in ping_v4_sendmsg() 811 ipc.addr = fl4.daddr; in ping_v4_sendmsg() 824 err = ip_append_data(sk, &fl4, ping_getfrag, &pfh, len, in ping_v4_sendmsg() [all …]
|
| H A D | fib_semantics.c | 1181 struct flowi4 fl4 = { in fib_check_nh_v4_gw() local 1189 if (fl4.flowi4_scope < RT_SCOPE_LINK) in fib_check_nh_v4_gw() 1190 fl4.flowi4_scope = RT_SCOPE_LINK; in fib_check_nh_v4_gw() 1196 err = fib_table_lookup(tbl, &fl4, &res, in fib_check_nh_v4_gw() 1205 err = fib_lookup(net, &fl4, &res, in fib_check_nh_v4_gw() 2165 const struct flowi4 *fl4) in fib_select_multipath() argument 2179 saddr = fl4 ? fl4->saddr : 0; in fib_select_multipath() 2209 struct flowi4 *fl4, const struct sk_buff *skb) in fib_select_path() argument 2211 if (fl4->flowi4_oif) in fib_select_path() 2216 int h = fib_multipath_hash(net, fl4, skb, NULL); in fib_select_path() [all …]
|
| H A D | udp.c | 1117 static int udp_send_skb(struct sk_buff *skb, struct flowi4 *fl4, in udp_send_skb() argument 1135 uh->dest = fl4->fl4_dport; in udp_send_skb() 1182 udp4_hwcsum(skb, fl4->saddr, fl4->daddr); in udp_send_skb() 1189 uh->check = csum_tcpudp_magic(fl4->saddr, fl4->daddr, len, in udp_send_skb() 1216 struct flowi4 *fl4 = &inet->cork.fl.u.ip4; in udp_push_pending_frames() local 1220 skb = ip_finish_skb(sk, fl4); in udp_push_pending_frames() 1224 err = udp_send_skb(skb, fl4, &inet->cork.base); in udp_push_pending_frames() 1278 struct flowi4 *fl4; in udp_sendmsg() local 1305 fl4 = &inet->cork.fl.u.ip4; in udp_sendmsg() 1442 fl4 = &fl4_stack; in udp_sendmsg() [all …]
|
| H A D | fou_core.c | 1035 struct flowi4 *fl4, u8 *protocol, __be16 sport) in fou_build_udp() argument 1048 fl4->saddr, fl4->daddr, skb->len); in fou_build_udp() 1054 u8 *protocol, struct flowi4 *fl4) in fou_build_header() argument 1065 fou_build_udp(skb, e, fl4, protocol, sport); in fou_build_header() 1071 u8 *protocol, struct flowi4 *fl4) in gue_build_header() argument 1082 fou_build_udp(skb, e, fl4, protocol, sport); in gue_build_header()
|
| H A D | af_inet.c | 1266 struct flowi4 *fl4; in inet_sk_reselect_saddr() local 1278 fl4 = &inet->cork.fl.u.ip4; in inet_sk_reselect_saddr() 1279 rt = ip_route_connect(fl4, daddr, 0, sk->sk_bound_dev_if, in inet_sk_reselect_saddr() 1285 new_saddr = fl4->saddr; in inet_sk_reselect_saddr() 1320 struct flowi4 *fl4; in inet_sk_rebuild_header() local 1328 fl4 = &inet->cork.fl.u.ip4; in inet_sk_rebuild_header() 1329 inet_sk_init_flowi4(inet, fl4); in inet_sk_rebuild_header() 1330 rt = ip_route_output_flow(sock_net(sk), fl4, sk); in inet_sk_rebuild_header()
|
| /linux/include/net/ |
| H A D | ip_tunnels.h | 350 static inline void ip_tunnel_init_flow(struct flowi4 *fl4, in ip_tunnel_init_flow() argument 358 memset(fl4, 0, sizeof(*fl4)); in ip_tunnel_init_flow() 361 fl4->flowi4_l3mdev = l3mdev_master_upper_ifindex_by_index(net, oif); in ip_tunnel_init_flow() 363 fl4->flowi4_oif = fl4->flowi4_l3mdev ? 0 : oif; in ip_tunnel_init_flow() 366 fl4->daddr = daddr; in ip_tunnel_init_flow() 367 fl4->saddr = saddr; in ip_tunnel_init_flow() 368 fl4->flowi4_dscp = inet_dsfield_to_dscp(tos); in ip_tunnel_init_flow() 369 fl4->flowi4_proto = proto; in ip_tunnel_init_flow() 370 fl4->fl4_gre_key = key; in ip_tunnel_init_flow() 371 fl4->flowi4_mark = mark; in ip_tunnel_init_flow() [all …]
|
| /linux/net/sctp/ |
| H A D | protocol.c | 287 static void sctp_v4_dst_saddr(union sctp_addr *saddr, struct flowi4 *fl4, in sctp_v4_dst_saddr() argument 292 saddr->v4.sin_addr.s_addr = fl4->saddr; in sctp_v4_dst_saddr() 423 struct flowi4 *fl4 = &_fl.u.ip4; in sctp_v4_get_dst() local 437 fl4->daddr = daddr->v4.sin_addr.s_addr; in sctp_v4_get_dst() 438 fl4->fl4_dport = daddr->v4.sin_port; in sctp_v4_get_dst() 439 fl4->flowi4_proto = IPPROTO_SCTP; in sctp_v4_get_dst() 441 fl4->flowi4_dscp = dscp; in sctp_v4_get_dst() 442 fl4->flowi4_scope = ip_sock_rt_scope(asoc->base.sk); in sctp_v4_get_dst() 443 fl4->flowi4_oif = asoc->base.sk->sk_bound_dev_if; in sctp_v4_get_dst() 444 fl4->fl4_sport = htons(asoc->base.bind_addr.port); in sctp_v4_get_dst() [all …]
|
| /linux/drivers/net/ |
| H A D | gtp.c | 348 static struct rtable *ip4_route_output_gtp(struct flowi4 *fl4, in ip4_route_output_gtp() argument 352 memset(fl4, 0, sizeof(*fl4)); in ip4_route_output_gtp() 353 fl4->flowi4_oif = sk->sk_bound_dev_if; in ip4_route_output_gtp() 354 fl4->daddr = daddr; in ip4_route_output_gtp() 355 fl4->saddr = saddr; in ip4_route_output_gtp() 356 fl4->flowi4_dscp = inet_sk_dscp(inet_sk(sk)); in ip4_route_output_gtp() 357 fl4->flowi4_scope = ip_sock_rt_scope(sk); in ip4_route_output_gtp() 358 fl4->flowi4_proto = sk->sk_protocol; in ip4_route_output_gtp() 360 return ip_route_output_key(sock_net(sk), fl4); in ip4_route_output_gtp() 429 struct flowi4 fl4; in gtp0_send_echo_resp_ip() local [all …]
|
| H A D | amt.c | 622 struct flowi4 fl4; in amt_send_discovery() local 634 rt = ip_route_output_ports(amt->net, &fl4, sock->sk, in amt_send_discovery() 711 struct flowi4 fl4; in amt_send_request() local 723 rt = ip_route_output_ports(amt->net, &fl4, sock->sk, in amt_send_request() 1005 struct flowi4 fl4; in amt_send_membership_update() local 1019 memset(&fl4, 0, sizeof(struct flowi4)); in amt_send_membership_update() 1020 fl4.flowi4_oif = amt->stream_dev->ifindex; in amt_send_membership_update() 1021 fl4.daddr = amt->remote_ip; in amt_send_membership_update() 1022 fl4.saddr = amt->local_ip; in amt_send_membership_update() 1023 fl4.flowi4_dscp = inet_dsfield_to_dscp(AMT_TOS); in amt_send_membership_update() [all …]
|
| H A D | vrf.c | 495 struct flowi4 fl4; in vrf_process_v4_outbound() local 504 memset(&fl4, 0, sizeof(fl4)); in vrf_process_v4_outbound() 506 fl4.flowi4_l3mdev = vrf_dev->ifindex; in vrf_process_v4_outbound() 507 fl4.flowi4_iif = LOOPBACK_IFINDEX; in vrf_process_v4_outbound() 508 fl4.flowi4_dscp = ip4h_dscp(ip4h); in vrf_process_v4_outbound() 509 fl4.flowi4_flags = FLOWI_FLAG_ANYSRC; in vrf_process_v4_outbound() 510 fl4.flowi4_proto = ip4h->protocol; in vrf_process_v4_outbound() 511 fl4.daddr = ip4h->daddr; in vrf_process_v4_outbound() 512 fl4.saddr = ip4h->saddr; in vrf_process_v4_outbound() 514 rt = ip_route_output_flow(net, &fl4, NULL); in vrf_process_v4_outbound()
|
| /linux/net/xfrm/ |
| H A D | xfrm_nat_keepalive.c | 46 struct flowi4 fl4; in nat_keepalive_send_ipv4() 52 flowi4_init_output(&fl4, 0 /* oif */, skb->mark, tos, in nat_keepalive_send_ipv4() 57 rt = ip_route_output_key(net, &fl4); in nat_keepalive_send_ipv4() 66 err = ip_build_and_send_pkt(skb, sk, fl4.saddr, fl4.daddr, NULL, tos); 42 struct flowi4 fl4; nat_keepalive_send_ipv4() local
|
| H A D | xfrm_policy.c | 219 const struct flowi4 *fl4 = &fl->u.ip4; in __xfrm4_selector_match() local 221 return addr4_match(fl4->daddr, sel->daddr.a4, sel->prefixlen_d) && in __xfrm4_selector_match() 222 addr4_match(fl4->saddr, sel->saddr.a4, sel->prefixlen_s) && in __xfrm4_selector_match() 223 !((xfrm_flowi_dport(fl, &fl4->uli) ^ sel->dport) & sel->dport_mask) && in __xfrm4_selector_match() 224 !((xfrm_flowi_sport(fl, &fl4->uli) ^ sel->sport) & sel->sport_mask) && in __xfrm4_selector_match() 225 (fl4->flowi4_proto == sel->proto || !sel->proto) && in __xfrm4_selector_match() 226 (fl4->flowi4_oif == sel->ifindex || !sel->ifindex); in __xfrm4_selector_match() 3438 struct flowi4 *fl4 = &fl->u.ip4; in decode_session4() local 3440 memset(fl4, 0, sizeof(struct flowi4)); in decode_session4() 3443 fl4->saddr = flkeys->addrs.ipv4.dst; in decode_session4() [all …]
|
| /linux/net/dccp/ |
| H A D | ipv4.c | |
| /linux/drivers/infiniband/core/ |
| H A D | addr.c | 377 struct flowi4 fl4; in addr4_resolve() local 380 memset(&fl4, 0, sizeof(fl4)); in addr4_resolve() 381 fl4.daddr = dst_ip; in addr4_resolve() 382 fl4.saddr = src_ip; in addr4_resolve() 383 fl4.flowi4_oif = addr->bound_dev_if; in addr4_resolve() 384 rt = ip_route_output_key(addr->net, &fl4); in addr4_resolve() 389 src_in->sin_addr.s_addr = fl4.saddr; in addr4_resolve()
|
| /linux/net/netfilter/ |
| H A D | xt_TCPMSS.c | 52 struct flowi4 *fl4 = &fl.u.ip4; in tcpmss_reverse_mtu() local 53 memset(fl4, 0, sizeof(*fl4)); in tcpmss_reverse_mtu() 54 fl4->daddr = ip_hdr(skb)->saddr; in tcpmss_reverse_mtu()
|
| /linux/drivers/net/ethernet/chelsio/libcxgb/ |
| H A D | libcxgb_cm.c | 98 struct flowi4 fl4; in cxgb_find_route() local 101 rt = ip_route_output_ports(&init_net, &fl4, NULL, peer_ip, local_ip, in cxgb_find_route()
|
| /linux/net/netfilter/ipvs/ |
| H A D | ip_vs_xmit.c | 125 struct flowi4 fl4; in do_output_route4() local 128 memset(&fl4, 0, sizeof(fl4)); in do_output_route4() 129 fl4.daddr = daddr; in do_output_route4() 130 fl4.flowi4_flags = (rt_mode & IP_VS_RT_MODE_KNOWN_NH) ? in do_output_route4() 134 rt = ip_route_output_key(net, &fl4); in do_output_route4() 139 if (rt_mode & IP_VS_RT_MODE_CONNECT && fl4.saddr) { in do_output_route4() 141 flowi4_update_output(&fl4, 0, daddr, fl4.saddr); in do_output_route4() 146 *ret_saddr = fl4.saddr; in do_output_route4()
|
| /linux/drivers/net/ipvlan/ |
| H A D | ipvlan_core.c | 435 struct flowi4 fl4 = { in ipvlan_process_v4_outbound() local 445 fl4.daddr = ip4h->daddr; in ipvlan_process_v4_outbound() 446 fl4.saddr = ip4h->saddr; in ipvlan_process_v4_outbound() 447 fl4.flowi4_dscp = ip4h_dscp(ip4h); in ipvlan_process_v4_outbound() 449 rt = ip_route_output_flow(net, &fl4, NULL); in ipvlan_process_v4_outbound()
|
| /linux/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ |
| H A D | ipsec.c | 267 struct flowi4 fl4 = {}; in mlx5e_ipsec_init_macs() local 287 fl4.flowi4_proto = x->sel.proto; in mlx5e_ipsec_init_macs() 288 fl4.daddr = addrs->saddr.a4; in mlx5e_ipsec_init_macs() 289 fl4.saddr = addrs->daddr.a4; in mlx5e_ipsec_init_macs() 307 fl4.flowi4_proto = x->sel.proto; in mlx5e_ipsec_init_macs() 308 fl4.daddr = addrs->daddr.a4; in mlx5e_ipsec_init_macs() 309 fl4.saddr = addrs->saddr.a4; in mlx5e_ipsec_init_macs() 334 rt = ip_route_output_key(dev_net(netdev), &fl4); in mlx5e_ipsec_init_macs()
|
| /linux/net/ipv6/ |
| H A D | sit.c | 911 struct flowi4 fl4; in ipip6_tunnel_xmit() local 931 flowi4_init_output(&fl4, tunnel->parms.link, tunnel->fwmark, in ipip6_tunnel_xmit() 936 rt = dst_cache_get_ip4(&tunnel->dst_cache, &fl4.saddr); in ipip6_tunnel_xmit() 938 rt = ip_route_output_flow(tunnel->net, &fl4, NULL); in ipip6_tunnel_xmit() 943 dst_cache_set_ip4(&tunnel->dst_cache, &rt->dst, fl4.saddr); in ipip6_tunnel_xmit() 1022 if (ip_tunnel_encap(skb, &tunnel->encap, &protocol, &fl4) < 0) { in ipip6_tunnel_xmit() 1029 iptunnel_xmit(NULL, rt, skb, fl4.saddr, fl4.daddr, protocol, tos, ttl, in ipip6_tunnel_xmit() 1098 struct flowi4 fl4; in ipip6_tunnel_bind_dev() local 1103 struct rtable *rt = ip_route_output_ports(tunnel->net, &fl4, in ipip6_tunnel_bind_dev()
|