| /linux/net/ipv4/ |
| H A D | xfrm4_policy.c | 21 static struct dst_entry *__xfrm4_dst_lookup(struct flowi4 *fl4, in __xfrm4_dst_lookup() argument 26 memset(fl4, 0, sizeof(*fl4)); in __xfrm4_dst_lookup() 27 fl4->daddr = params->daddr->a4; in __xfrm4_dst_lookup() 28 fl4->flowi4_dscp = params->dscp; in __xfrm4_dst_lookup() 29 fl4->flowi4_l3mdev = l3mdev_master_ifindex_by_index(params->net, in __xfrm4_dst_lookup() 31 fl4->flowi4_mark = params->mark; in __xfrm4_dst_lookup() 33 fl4->saddr = params->saddr->a4; in __xfrm4_dst_lookup() 34 fl4->flowi4_proto = params->ipproto; in __xfrm4_dst_lookup() 35 fl4->uli = params->uli; in __xfrm4_dst_lookup() 37 rt = __ip_route_output_key(params->net, fl4); in __xfrm4_dst_lookup() [all …]
|
| 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() 773 static void __ip_do_redirect(struct rtable *rt, struct sk_buff *skb, struct flowi4 *fl4, in __ip_do_redirect() argument [all …]
|
| H A D | udp_tunnel_core.c | 234 struct flowi4 fl4; in udp_tunnel_dst_lookup() local 244 memset(&fl4, 0, sizeof(fl4)); in udp_tunnel_dst_lookup() 245 fl4.flowi4_mark = skb->mark; in udp_tunnel_dst_lookup() 246 fl4.flowi4_proto = IPPROTO_UDP; in udp_tunnel_dst_lookup() 247 fl4.flowi4_oif = oif; in udp_tunnel_dst_lookup() 248 fl4.daddr = key->u.ipv4.dst; in udp_tunnel_dst_lookup() 249 fl4.saddr = key->u.ipv4.src; in udp_tunnel_dst_lookup() 250 fl4.fl4_dport = dport; in udp_tunnel_dst_lookup() 251 fl4.fl4_sport = sport; in udp_tunnel_dst_lookup() 252 fl4.flowi4_dscp = inet_dsfield_to_dscp(tos); in udp_tunnel_dst_lookup() [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 WRITE_ONCE(inet->inet_daddr, fl4->daddr); in __ip4_datagram_connect() 69 inet->inet_saddr = fl4->saddr; in __ip4_datagram_connect() 71 WRITE_ONCE(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 | 312 struct flowi4 *fl4, int type, int code, in icmpv4_xrlim_allow() argument 334 peer = inet_getpeer_v4(net->ipv4.peers, fl4->daddr, in icmpv4_xrlim_allow() 384 struct flowi4 *fl4, in icmp_push_reply() argument 389 if (ip_append_data(sk, fl4, icmp_glue_bits, icmp_param, in icmp_push_reply() 408 ip_push_pending_frames(sk, fl4); in icmp_push_reply() 422 struct flowi4 fl4; in icmp_reply() local 456 memset(&fl4, 0, sizeof(fl4)); in icmp_reply() 457 fl4.daddr = daddr; in icmp_reply() 458 fl4.saddr = saddr; in icmp_reply() 459 fl4.flowi4_mark = mark; in icmp_reply() [all …]
|
| H A D | ip_output.c | 452 static void ip_copy_addrs(struct iphdr *iph, const struct flowi4 *fl4) in ip_copy_addrs() argument 454 BUILD_BUG_ON(offsetof(typeof(*fl4), daddr) != in ip_copy_addrs() 455 offsetof(typeof(*fl4), saddr) + sizeof(fl4->saddr)); in ip_copy_addrs() 457 iph->saddr = fl4->saddr; in ip_copy_addrs() 458 iph->daddr = fl4->daddr; in ip_copy_addrs() 468 struct flowi4 *fl4; in __ip_queue_xmit() local 478 fl4 = &fl->u.ip4; in __ip_queue_xmit() 486 inet_sk_init_flowi4(inet, fl4); in __ip_queue_xmit() 489 fl4->flowi4_dscp = inet_dsfield_to_dscp(tos); in __ip_queue_xmit() 495 rt = ip_route_output_flow(net, fl4, sk); in __ip_queue_xmit() [all …]
|
| H A D | raw.c | 333 static int raw_send_hdrinc(struct sock *sk, struct flowi4 *fl4, in raw_send_hdrinc() argument 348 ip_local_error(sk, EMSGSIZE, fl4->daddr, inet->inet_dport, in raw_send_hdrinc() 405 iph->saddr = fl4->saddr; in raw_send_hdrinc() 438 static int raw_probe_proto_opt(struct raw_frag_vec *rfv, struct flowi4 *fl4) in raw_probe_proto_opt() argument 442 if (fl4->flowi4_proto != IPPROTO_ICMP) in raw_probe_proto_opt() 452 fl4->fl4_icmp_type = rfv->hdr.icmph.type; in raw_probe_proto_opt() 453 fl4->fl4_icmp_code = rfv->hdr.icmph.code; in raw_probe_proto_opt() 497 struct flowi4 fl4; in raw_sendmsg() local 616 flowi4_init_output(&fl4, ipc.oif, ipc.sockc.mark, in raw_sendmsg() 623 fl4.fl4_icmp_type = 0; in raw_sendmsg() [all …]
|
| H A D | fib_frontend.c | 231 struct flowi4 fl4 = { .daddr = addr }; in __inet_dev_addr_type() local 246 if (!fib_table_lookup(table, &fl4, &res, FIB_LOOKUP_NOREF)) { in __inet_dev_addr_type() 313 struct flowi4 fl4 = { in fib_compute_spec_dst() local 321 if (!fib_lookup(net, &fl4, &res, 0)) in fib_compute_spec_dst() 374 struct flowi4 fl4; in __fib_validate_source() local 377 fl4.flowi4_oif = 0; in __fib_validate_source() 378 fl4.flowi4_l3mdev = l3mdev_master_ifindex_rcu(dev); in __fib_validate_source() 379 fl4.flowi4_iif = oif ? : LOOPBACK_IFINDEX; in __fib_validate_source() 380 fl4.daddr = src; in __fib_validate_source() 381 fl4.saddr = dst; in __fib_validate_source() [all …]
|
| H A D | fib_rules.c | 184 struct flowi4 *fl4 = &fl->u.ip4; in fib4_rule_match() local 185 __be32 daddr = fl4->daddr; in fib4_rule_match() 186 __be32 saddr = fl4->saddr; in fib4_rule_match() 197 if (r->dscp_full && (r->dscp ^ fl4->flowi4_dscp) & r->dscp_mask) in fib4_rule_match() 200 !fib_dscp_masked_match(r->dscp, fl4)) in fib4_rule_match() 203 if (rule->ip_proto && (rule->ip_proto != fl4->flowi4_proto)) in fib4_rule_match() 207 fl4->fl4_sport)) in fib4_rule_match() 211 fl4->fl4_dport)) in fib4_rule_match()
|
| 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 | inet_connection_sock.c | 759 struct flowi4 *fl4, in inet_csk_route_req() argument 770 flowi4_init_output(fl4, ireq->ir_iif, ireq->ir_mark, in inet_csk_route_req() 776 security_req_classify_flow(req, flowi4_to_flowi_common(fl4)); in inet_csk_route_req() 777 rt = ip_route_output_flow(net, fl4, sk); in inet_csk_route_req() 801 struct flowi4 *fl4; in inet_csk_route_child_sock() local 805 fl4 = &newinet->cork.fl.u.ip4; in inet_csk_route_child_sock() 807 flowi4_init_output(fl4, ireq->ir_iif, ireq->ir_mark, in inet_csk_route_child_sock() 813 security_req_classify_flow(req, flowi4_to_flowi_common(fl4)); in inet_csk_route_child_sock() 814 rt = ip_route_output_flow(net, fl4, sk); in inet_csk_route_child_sock() 1543 struct flowi4 *fl4; in inet_csk_rebuild_route() local [all …]
|
| H A D | fib_semantics.c | 1209 struct flowi4 fl4 = { in fib_check_nh_v4_gw() local 1217 if (fl4.flowi4_scope < RT_SCOPE_LINK) in fib_check_nh_v4_gw() 1218 fl4.flowi4_scope = RT_SCOPE_LINK; in fib_check_nh_v4_gw() 1224 err = fib_table_lookup(tbl, &fl4, &res, in fib_check_nh_v4_gw() 1233 err = fib_lookup(net, &fl4, &res, in fib_check_nh_v4_gw() 2180 const struct flowi4 *fl4) in fib_select_multipath() argument 2194 saddr = fl4 ? fl4->saddr : 0; in fib_select_multipath() 2224 struct flowi4 *fl4, const struct sk_buff *skb) in fib_select_path() argument 2226 if (fl4->flowi4_oif) in fib_select_path() 2231 int h = fib_multipath_hash(net, fl4, skb, NULL); in fib_select_path() [all …]
|
| H A D | udp.c | 1093 static int udp_send_skb(struct sk_buff *skb, struct flowi4 *fl4, in udp_send_skb() argument 1110 uh->dest = fl4->fl4_dport; in udp_send_skb() 1152 udp4_hwcsum(skb, fl4->saddr, fl4->daddr); in udp_send_skb() 1157 uh->check = csum_tcpudp_magic(fl4->saddr, fl4->daddr, len, in udp_send_skb() 1183 struct flowi4 *fl4 = &inet->cork.fl.u.ip4; in udp_push_pending_frames() local 1187 skb = ip_finish_skb(sk, fl4); in udp_push_pending_frames() 1191 err = udp_send_skb(skb, fl4, &inet->cork.base); in udp_push_pending_frames() 1249 struct flowi4 *fl4; in udp_sendmsg() local 1265 fl4 = &inet->cork.fl.u.ip4; in udp_sendmsg() 1402 fl4 = &fl4_stack; in udp_sendmsg() [all …]
|
| /linux/include/net/ |
| H A D | route.h | 135 struct flowi4 *fl4) in inet_sk_init_flowi4() argument 152 flowi4_init_output(fl4, sk->sk_bound_dev_if, READ_ONCE(sk->sk_mark), in inet_sk_init_flowi4() 157 security_sk_classify_flow(sk, flowi4_to_flowi_common(fl4)); in inet_sk_init_flowi4() 190 struct flowi4 fl4 = { in ip_route_output() local 198 return ip_route_output_key(net, &fl4); in ip_route_output() 201 static inline struct rtable *ip_route_output_ports(struct net *net, struct flowi4 *fl4, in ip_route_output_ports() argument 207 flowi4_init_output(fl4, oif, sk ? READ_ONCE(sk->sk_mark) : 0, tos, in ip_route_output_ports() 212 security_sk_classify_flow(sk, flowi4_to_flowi_common(fl4)); in ip_route_output_ports() 213 return ip_route_output_flow(net, fl4, sk); in ip_route_output_ports() 321 static inline void ip_route_connect_init(struct flowi4 *fl4, __be32 dst, in ip_route_connect_init() argument [all …]
|
| H A D | ip_tunnels.h | 357 static inline void ip_tunnel_init_flow(struct flowi4 *fl4, in ip_tunnel_init_flow() argument 365 memset(fl4, 0, sizeof(*fl4)); in ip_tunnel_init_flow() 368 fl4->flowi4_l3mdev = l3mdev_master_upper_ifindex_by_index(net, oif); in ip_tunnel_init_flow() 370 fl4->flowi4_oif = fl4->flowi4_l3mdev ? 0 : oif; in ip_tunnel_init_flow() 373 fl4->daddr = daddr; in ip_tunnel_init_flow() 374 fl4->saddr = saddr; in ip_tunnel_init_flow() 375 fl4->flowi4_dscp = inet_dsfield_to_dscp(tos); in ip_tunnel_init_flow() 376 fl4->flowi4_proto = proto; in ip_tunnel_init_flow() 377 fl4->fl4_gre_key = key; in ip_tunnel_init_flow() 378 fl4->flowi4_mark = mark; in ip_tunnel_init_flow() [all …]
|
| H A D | ip_fib.h | 359 struct flowi4 *fl4, in fib4_rules_early_flow_dissect() argument 419 struct flowi4 *fl4, in fib4_rules_early_flow_dissect() argument 431 fl4->fl4_sport = flkeys->ports.src; in fib4_rules_early_flow_dissect() 432 fl4->fl4_dport = flkeys->ports.dst; in fib4_rules_early_flow_dissect() 433 fl4->flowi4_proto = flkeys->basic.ip_proto; in fib4_rules_early_flow_dissect() 440 static inline bool fib_dscp_masked_match(dscp_t dscp, const struct flowi4 *fl4) in fib_dscp_masked_match() argument 442 return dscp == (fl4->flowi4_dscp & INET_DSCP_LEGACY_TOS_MASK); in fib_dscp_masked_match() 543 int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4, 577 const struct flowi4 *fl4); 579 struct flowi4 *fl4, const struct sk_buff *skb);
|
| /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/net/core/ |
| H A D | lwt_bpf.c | 210 struct flowi4 fl4 = {}; in bpf_lwt_xmit_reroute() local 213 fl4.flowi4_oif = oif; in bpf_lwt_xmit_reroute() 214 fl4.flowi4_mark = skb->mark; in bpf_lwt_xmit_reroute() 215 fl4.flowi4_uid = sock_net_uid(net, sk); in bpf_lwt_xmit_reroute() 216 fl4.flowi4_dscp = ip4h_dscp(iph); in bpf_lwt_xmit_reroute() 217 fl4.flowi4_flags = FLOWI_FLAG_ANYSRC; in bpf_lwt_xmit_reroute() 218 fl4.flowi4_proto = iph->protocol; in bpf_lwt_xmit_reroute() 219 fl4.daddr = iph->daddr; in bpf_lwt_xmit_reroute() 220 fl4.saddr = iph->saddr; in bpf_lwt_xmit_reroute() 222 rt = ip_route_output_key(net, &fl4); in bpf_lwt_xmit_reroute()
|
| /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 | 621 struct flowi4 fl4; in amt_send_discovery() local 634 rt = ip_route_output_ports(amt->net, &fl4, sk, in amt_send_discovery() 710 struct flowi4 fl4; in amt_send_request() local 725 rt = ip_route_output_ports(amt->net, &fl4, sk, in amt_send_request() 1007 struct flowi4 fl4; in amt_send_membership_update() local 1022 memset(&fl4, 0, sizeof(struct flowi4)); in amt_send_membership_update() 1023 fl4.flowi4_oif = amt->stream_dev->ifindex; in amt_send_membership_update() 1024 fl4.daddr = remote_ip; in amt_send_membership_update() 1025 fl4.saddr = amt->local_ip; in amt_send_membership_update() 1026 fl4.flowi4_dscp = inet_dsfield_to_dscp(AMT_TOS); in amt_send_membership_update() [all …]
|
| /linux/drivers/net/ppp/ |
| H A D | pptp.c | 133 struct flowi4 *fl4) in pptp_route_output() argument 139 flowi4_init_output(fl4, sk->sk_bound_dev_if, sk->sk_mark, 0, in pptp_route_output() 144 security_sk_classify_flow(sk, flowi4_to_flowi_common(fl4)); in pptp_route_output() 146 return ip_route_output_flow(net, fl4, sk); in pptp_route_output() 157 struct flowi4 fl4; in pptp_xmit() local 170 rt = pptp_route_output(po, &fl4); in pptp_xmit() 249 iph->daddr = fl4.daddr; in pptp_xmit() 250 iph->saddr = fl4.saddr; in pptp_xmit() 423 struct flowi4 fl4; in pptp_connect() local 456 rt = pptp_route_output(po, &fl4); in pptp_connect()
|
| /linux/net/xfrm/ |
| H A D | xfrm_nat_keepalive.c | 46 struct flowi4 fl4; in nat_keepalive_send_ipv4() local 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() 68 err = ip_build_and_send_pkt(skb, sk, fl4.saddr, fl4.daddr, NULL, tos); in nat_keepalive_send_ipv4()
|
| /linux/net/dccp/ |
| H A D | ipv4.c | |
| /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()
|