| /linux/net/ipv6/netfilter/ |
| H A D | nft_fib_ipv6.c | 22 static int nft_fib6_flowi_init(struct flowi6 *fl6, const struct nft_fib *priv, in nft_fib6_flowi_init() argument 30 fl6->daddr = iph->daddr; in nft_fib6_flowi_init() 31 fl6->saddr = iph->saddr; in nft_fib6_flowi_init() 35 fl6->flowi6_iif = nft_out(pkt)->ifindex; in nft_fib6_flowi_init() 37 fl6->daddr = iph->saddr; in nft_fib6_flowi_init() 38 fl6->saddr = iph->daddr; in nft_fib6_flowi_init() 41 if (ipv6_addr_type(&fl6->daddr) & IPV6_ADDR_LINKLOCAL) { in nft_fib6_flowi_init() 43 fl6->flowi6_oif = get_ifindex(dev ? dev : pkt->skb->dev); in nft_fib6_flowi_init() 46 if (ipv6_addr_type(&fl6->saddr) & IPV6_ADDR_UNICAST) in nft_fib6_flowi_init() 50 fl6 in nft_fib6_flowi_init() 64 struct flowi6 fl6 = { __nft_fib6_eval_type() local 164 struct flowi6 fl6 = { nft_fib6_eval() local [all...] |
| 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 | 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/ipv6/ |
| 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 in udp_tunnel6_dst_lookup() [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 | 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 | 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() 96 struct dst_entry *fib6_rule_lookup(struct net *net, struct flowi6 *fl6, in fib6_rule_lookup() argument 110 l3mdev_update_flow(net, flowi6_to_flowi(fl6)); in fib6_rule_lookup() 113 flowi6_to_flowi(fl6), flags, &arg); in fib6_rule_lookup() 121 net, net->ipv6.fib6_local_tbl, fl6, skb, flags); in fib6_rule_lookup() 126 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 | 149 struct flowi6 fl6; in tcp_v6_connect() 159 memset(&fl6, 0, sizeof(fl6)); in tcp_v6_connect() 162 fl6.flowlabel = usin->sin6_flowinfo&IPV6_FLOWINFO_MASK; in tcp_v6_connect() 163 IP6_ECN_flow_init(fl6.flowlabel); in tcp_v6_connect() 164 if (fl6.flowlabel&IPV6_FLOWLABEL_MASK) { in tcp_v6_connect() 166 flowlabel = fl6_sock_lookup(sk, fl6.flowlabel); in tcp_v6_connect() 215 np->flow_label = fl6.flowlabel; in tcp_v6_connect() 263 fl6.flowi6_proto = IPPROTO_TCP; in tcp_v6_connect() 264 fl6 in tcp_v6_connect() 150 struct flowi6 fl6; tcp_v6_connect() local 535 struct flowi6 *fl6 = &fl->u.ip6; tcp_v6_send_synack() local 880 struct flowi6 fl6; tcp_v6_send_response() local 1376 struct flowi6 fl6; global() local [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 | ip6_tunnel.c | 1086 struct flowi6 *fl6, int encap_limit, __u32 *pmtu, in ip6_tnl_xmit() argument 1134 memcpy(&fl6->daddr, addr6, sizeof(fl6->daddr)); in ip6_tnl_xmit() 1143 memcpy(&fl6->daddr, &rt->rt_gw6, sizeof(fl6->daddr)); in ip6_tnl_xmit() 1157 if (!ip6_tnl_xmit_ctl(t, &fl6->saddr, &fl6->daddr)) in ip6_tnl_xmit() 1163 fl6->flowlabel = ip6_make_flowinfo(dsfield, fl6->flowlabel); in ip6_tnl_xmit() 1165 dst = ip6_route_output(net, NULL, fl6); in ip6_tnl_xmit() 1169 dst = xfrm_lookup(net, dst, flowi6_to_flowi(fl6), NULL, 0); in ip6_tnl_xmit() 1175 if (t->parms.collect_md && ipv6_addr_any(&fl6->saddr) && in ip6_tnl_xmit() 1177 &fl6->daddr, 0, &fl6->saddr)) in ip6_tnl_xmit() 1242 dst_cache_set_ip6(&t->dst_cache, ndst, &fl6->saddr); in ip6_tnl_xmit() [all …]
|
| H A D | ioam6_iptunnel.c | 416 struct flowi6 fl6; in ioam6_output() local 418 memset(&fl6, 0, sizeof(fl6)); in ioam6_output() 419 fl6.daddr = hdr->daddr; in ioam6_output() 420 fl6.saddr = hdr->saddr; in ioam6_output() 421 fl6.flowlabel = ip6_flowinfo(hdr); in ioam6_output() 422 fl6.flowi6_mark = skb->mark; in ioam6_output() 423 fl6.flowi6_proto = hdr->nexthdr; in ioam6_output() 425 dst = ip6_route_output(net, NULL, &fl6); in ioam6_output() 440 &ilwt->null_dst, &fl6.saddr); in ioam6_output() 442 dst_cache_set_ip6(&ilwt->cache, dst, &fl6.saddr); in ioam6_output()
|
| H A D | mip6.c | 201 const struct flowi6 *fl6 = &fl->u.ip6; in mip6_destopt_reject() local 208 if (unlikely(fl6->flowi6_proto == IPPROTO_MH && in mip6_destopt_reject() 209 fl6->fl6_mh_type <= IP6_MH_TYPE_MAX)) in mip6_destopt_reject() 234 sel.proto = fl6->flowi6_proto; in mip6_destopt_reject() 235 sel.dport = xfrm_flowi_dport(fl, &fl6->uli); in mip6_destopt_reject() 238 sel.sport = xfrm_flowi_sport(fl, &fl6->uli); in mip6_destopt_reject() 241 sel.ifindex = fl6->flowi6_oif; in mip6_destopt_reject()
|
| H A D | seg6_iptunnel.c | 576 struct flowi6 fl6; in seg6_output_core() local 578 memset(&fl6, 0, sizeof(fl6)); in seg6_output_core() 579 fl6.daddr = hdr->daddr; in seg6_output_core() 580 fl6.saddr = hdr->saddr; in seg6_output_core() 581 fl6.flowlabel = ip6_flowinfo(hdr); in seg6_output_core() 582 fl6.flowi6_mark = skb->mark; in seg6_output_core() 583 fl6.flowi6_proto = hdr->nexthdr; in seg6_output_core() 585 dst = ip6_route_output(net, NULL, &fl6); in seg6_output_core() 594 dst_cache_set_ip6(&slwt->cache, dst, &fl6.saddr); in seg6_output_core()
|
| /linux/net/dccp/ |
| H A D | ipv6.c | |
| /linux/net/l2tp/ |
| H A D | l2tp_ip6.c | 528 struct flowi6 fl6; in l2tp_ip6_sendmsg() 546 memset(&fl6, 0, sizeof(fl6)); in l2tp_ip6_sendmsg() 548 fl6.flowi6_mark = READ_ONCE(sk->sk_mark); in l2tp_ip6_sendmsg() 549 fl6.flowi6_uid = sk_uid(sk); in l2tp_ip6_sendmsg() 562 fl6.flowlabel = lsa->l2tp_flowinfo & IPV6_FLOWINFO_MASK; in l2tp_ip6_sendmsg() 563 if (fl6.flowlabel & IPV6_FLOWLABEL_MASK) { in l2tp_ip6_sendmsg() 564 flowlabel = fl6_sock_lookup(sk, fl6.flowlabel); in l2tp_ip6_sendmsg() 580 fl6.flowi6_oif = lsa->l2tp_scope_id; in l2tp_ip6_sendmsg() 586 fl6 in l2tp_ip6_sendmsg() 527 struct flowi6 fl6; l2tp_ip6_sendmsg() local [all...] |
| /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/xfrm/ |
| H A D | xfrm_nat_keepalive.c | 79 struct flowi6 fl6; in nat_keepalive_send_ipv6() 90 memset(&fl6, 0, sizeof(fl6)); in nat_keepalive_send_ipv6() 91 fl6.flowi6_mark = skb->mark; in nat_keepalive_send_ipv6() 92 fl6.saddr = ka->saddr.in6; in nat_keepalive_send_ipv6() 93 fl6.daddr = ka->daddr.in6; in nat_keepalive_send_ipv6() 94 fl6.flowi6_proto = IPPROTO_UDP; in nat_keepalive_send_ipv6() 95 fl6.fl6_sport = ka->encap_sport; in nat_keepalive_send_ipv6() 96 fl6.fl6_dport = ka->encap_dport; in nat_keepalive_send_ipv6() 101 dst = ipv6_stub->ipv6_dst_lookup_flow(net, sk, &fl6, NUL in nat_keepalive_send_ipv6() 73 struct flowi6 fl6; nat_keepalive_send_ipv6() local [all...] |
| /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() 264 udp_tunnel6_xmit_skb(dst, sk, skb, NULL, &fl6->saddr, &fl6->daddr, in sctp_v6_xmit() 279 struct flowi6 *fl6 in sctp_v6_get_dst() local 446 struct flowi6 *fl6 = &fl->u.ip6; sctp_v6_get_saddr() local [all...] |
| /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 | ipv6_stubs.h | 30 struct flowi6 *fl6, 35 int (*fib6_lookup)(struct net *net, int oif, struct flowi6 *fl6, 38 int oif, struct flowi6 *fl6, 41 struct flowi6 *fl6, int oif, bool oif_match, 76 int (*ip6_xmit)(const struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6,
|
| H A D | ip6_tunnel.h | 72 u8 *protocol, struct flowi6 *fl6); 110 u8 *protocol, struct flowi6 *fl6) in ip6_tnl_encap() argument 124 ret = ops->build_header(skb, &t->encap, protocol, fl6); in ip6_tnl_encap() 146 struct flowi6 *fl6, int encap_limit, __u32 *pmtu, __u8 proto);
|
| H A D | ipv6.h | 438 void icmpv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6, 904 static inline int ip6_sk_dst_hoplimit(struct ipv6_pinfo *np, struct flowi6 *fl6, in ip6_sk_dst_hoplimit() argument 909 if (ipv6_addr_is_multicast(&fl6->daddr)) in ip6_sk_dst_hoplimit() 954 struct flowi6 *fl6) in ip6_make_flowlabel() argument 969 hash = skb_get_hash_flowi6(skb, fl6); in ip6_make_flowlabel() 1000 struct flowi6 *fl6) in ip6_make_flowlabel() argument 1064 static inline __be32 flowi6_get_flowlabel(const struct flowi6 *fl6) in flowi6_get_flowlabel() argument 1066 return fl6->flowlabel & IPV6_FLOWLABEL_MASK; in flowi6_get_flowlabel() 1087 int ip6_xmit(const struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6, 1096 struct ipcm6_cookie *ipc6, struct flowi6 *fl6, [all...] |
| /linux/net/rxrpc/ |
| H A D | peer_object.c | 160 struct flowi6 *fl6 = &fl.u.ip6; in rxrpc_assess_MTU_size() local 186 fl6->flowi6_iif = LOOPBACK_IFINDEX; in rxrpc_assess_MTU_size() 187 fl6->flowi6_scope = RT_SCOPE_UNIVERSE; in rxrpc_assess_MTU_size() 188 fl6->flowi6_proto = IPPROTO_UDP; in rxrpc_assess_MTU_size() 189 memcpy(&fl6->daddr, &peer->srx.transport.sin6.sin6_addr, in rxrpc_assess_MTU_size() 191 fl6->fl6_dport = htons(7001); in rxrpc_assess_MTU_size() 192 fl6->fl6_sport = htons(7000); in rxrpc_assess_MTU_size() 193 dst = ip6_route_output(net, NULL, fl6); in rxrpc_assess_MTU_size()
|
| /linux/net/l3mdev/ |
| H A D | l3mdev.c | 219 struct flowi6 *fl6) in l3mdev_link_scope_lookup() argument 225 if (fl6->flowi6_oif) { in l3mdev_link_scope_lookup() 226 dev = dev_get_by_index_rcu(net, fl6->flowi6_oif); in l3mdev_link_scope_lookup() 232 dst = dev->l3mdev_ops->l3mdev_link_scope_lookup(dev, fl6); in l3mdev_link_scope_lookup()
|