aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-03-12 00:29:39 -0500
committerDavid S. Miller <davem@davemloft.net>2011-03-12 18:08:44 -0500
commit1d28f42c1bd4bb2363d88df74d0128b4da135b4a (patch)
treecb2e652fe79a2bc307e871bc2d3fa51cc8051e45 /net/ipv6
parentca116922afa8cc5ad46b00c0a637b1cde5ca478a (diff)
net: Put flowi_* prefix on AF independent members of struct flowi
I intend to turn struct flowi into a union of AF specific flowi structs. There will be a common structure that each variant includes first, much like struct sock_common. This is the first step to move in that direction. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/af_inet6.c6
-rw-r--r--net/ipv6/datagram.c20
-rw-r--r--net/ipv6/icmp.c24
-rw-r--r--net/ipv6/inet6_connection_sock.c12
-rw-r--r--net/ipv6/ip6_flowlabel.c2
-rw-r--r--net/ipv6/ip6_output.c10
-rw-r--r--net/ipv6/ip6_tunnel.c8
-rw-r--r--net/ipv6/ip6mr.c22
-rw-r--r--net/ipv6/ipv6_sockglue.c4
-rw-r--r--net/ipv6/mip6.c6
-rw-r--r--net/ipv6/netfilter.c4
-rw-r--r--net/ipv6/netfilter/ip6t_REJECT.c2
-rw-r--r--net/ipv6/raw.c20
-rw-r--r--net/ipv6/route.c20
-rw-r--r--net/ipv6/syncookies.c6
-rw-r--r--net/ipv6/tcp_ipv6.c22
-rw-r--r--net/ipv6/udp.c20
-rw-r--r--net/ipv6/xfrm6_policy.c10
-rw-r--r--net/ipv6/xfrm6_state.c4
19 files changed, 111 insertions, 111 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index a88b2e9d25f1..35b0be0463f9 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -655,12 +655,12 @@ int inet6_sk_rebuild_header(struct sock *sk)
655 struct flowi fl; 655 struct flowi fl;
656 656
657 memset(&fl, 0, sizeof(fl)); 657 memset(&fl, 0, sizeof(fl));
658 fl.proto = sk->sk_protocol; 658 fl.flowi_proto = sk->sk_protocol;
659 ipv6_addr_copy(&fl.fl6_dst, &np->daddr); 659 ipv6_addr_copy(&fl.fl6_dst, &np->daddr);
660 ipv6_addr_copy(&fl.fl6_src, &np->saddr); 660 ipv6_addr_copy(&fl.fl6_src, &np->saddr);
661 fl.fl6_flowlabel = np->flow_label; 661 fl.fl6_flowlabel = np->flow_label;
662 fl.oif = sk->sk_bound_dev_if; 662 fl.flowi_oif = sk->sk_bound_dev_if;
663 fl.mark = sk->sk_mark; 663 fl.flowi_mark = sk->sk_mark;
664 fl.fl_ip_dport = inet->inet_dport; 664 fl.fl_ip_dport = inet->inet_dport;
665 fl.fl_ip_sport = inet->inet_sport; 665 fl.fl_ip_sport = inet->inet_sport;
666 security_sk_classify_flow(sk, &fl); 666 security_sk_classify_flow(sk, &fl);
diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c
index be3a781c0085..6c24b26f67ec 100644
--- a/net/ipv6/datagram.c
+++ b/net/ipv6/datagram.c
@@ -146,16 +146,16 @@ ipv4_connected:
146 * destination cache for it. 146 * destination cache for it.
147 */ 147 */
148 148
149 fl.proto = sk->sk_protocol; 149 fl.flowi_proto = sk->sk_protocol;
150 ipv6_addr_copy(&fl.fl6_dst, &np->daddr); 150 ipv6_addr_copy(&fl.fl6_dst, &np->daddr);
151 ipv6_addr_copy(&fl.fl6_src, &np->saddr); 151 ipv6_addr_copy(&fl.fl6_src, &np->saddr);
152 fl.oif = sk->sk_bound_dev_if; 152 fl.flowi_oif = sk->sk_bound_dev_if;
153 fl.mark = sk->sk_mark; 153 fl.flowi_mark = sk->sk_mark;
154 fl.fl_ip_dport = inet->inet_dport; 154 fl.fl_ip_dport = inet->inet_dport;
155 fl.fl_ip_sport = inet->inet_sport; 155 fl.fl_ip_sport = inet->inet_sport;
156 156
157 if (!fl.oif && (addr_type&IPV6_ADDR_MULTICAST)) 157 if (!fl.flowi_oif && (addr_type&IPV6_ADDR_MULTICAST))
158 fl.oif = np->mcast_oif; 158 fl.flowi_oif = np->mcast_oif;
159 159
160 security_sk_classify_flow(sk, &fl); 160 security_sk_classify_flow(sk, &fl);
161 161
@@ -299,7 +299,7 @@ void ipv6_local_rxpmtu(struct sock *sk, struct flowi *fl, u32 mtu)
299 mtu_info->ip6m_addr.sin6_family = AF_INET6; 299 mtu_info->ip6m_addr.sin6_family = AF_INET6;
300 mtu_info->ip6m_addr.sin6_port = 0; 300 mtu_info->ip6m_addr.sin6_port = 0;
301 mtu_info->ip6m_addr.sin6_flowinfo = 0; 301 mtu_info->ip6m_addr.sin6_flowinfo = 0;
302 mtu_info->ip6m_addr.sin6_scope_id = fl->oif; 302 mtu_info->ip6m_addr.sin6_scope_id = fl->flowi_oif;
303 ipv6_addr_copy(&mtu_info->ip6m_addr.sin6_addr, &ipv6_hdr(skb)->daddr); 303 ipv6_addr_copy(&mtu_info->ip6m_addr.sin6_addr, &ipv6_hdr(skb)->daddr);
304 304
305 __skb_pull(skb, skb_tail_pointer(skb) - skb->data); 305 __skb_pull(skb, skb_tail_pointer(skb) - skb->data);
@@ -629,16 +629,16 @@ int datagram_send_ctl(struct net *net,
629 src_info = (struct in6_pktinfo *)CMSG_DATA(cmsg); 629 src_info = (struct in6_pktinfo *)CMSG_DATA(cmsg);
630 630
631 if (src_info->ipi6_ifindex) { 631 if (src_info->ipi6_ifindex) {
632 if (fl->oif && src_info->ipi6_ifindex != fl->oif) 632 if (fl->flowi_oif && src_info->ipi6_ifindex != fl->flowi_oif)
633 return -EINVAL; 633 return -EINVAL;
634 fl->oif = src_info->ipi6_ifindex; 634 fl->flowi_oif = src_info->ipi6_ifindex;
635 } 635 }
636 636
637 addr_type = __ipv6_addr_type(&src_info->ipi6_addr); 637 addr_type = __ipv6_addr_type(&src_info->ipi6_addr);
638 638
639 rcu_read_lock(); 639 rcu_read_lock();
640 if (fl->oif) { 640 if (fl->flowi_oif) {
641 dev = dev_get_by_index_rcu(net, fl->oif); 641 dev = dev_get_by_index_rcu(net, fl->flowi_oif);
642 if (!dev) { 642 if (!dev) {
643 rcu_read_unlock(); 643 rcu_read_unlock();
644 return -ENODEV; 644 return -ENODEV;
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
index 55665956b3a8..9e123e08b9b7 100644
--- a/net/ipv6/icmp.c
+++ b/net/ipv6/icmp.c
@@ -235,7 +235,7 @@ static int icmpv6_push_pending_frames(struct sock *sk, struct flowi *fl, struct
235 sizeof(struct icmp6hdr), skb->csum); 235 sizeof(struct icmp6hdr), skb->csum);
236 icmp6h->icmp6_cksum = csum_ipv6_magic(&fl->fl6_src, 236 icmp6h->icmp6_cksum = csum_ipv6_magic(&fl->fl6_src,
237 &fl->fl6_dst, 237 &fl->fl6_dst,
238 len, fl->proto, 238 len, fl->flowi_proto,
239 skb->csum); 239 skb->csum);
240 } else { 240 } else {
241 __wsum tmp_csum = 0; 241 __wsum tmp_csum = 0;
@@ -248,7 +248,7 @@ static int icmpv6_push_pending_frames(struct sock *sk, struct flowi *fl, struct
248 sizeof(struct icmp6hdr), tmp_csum); 248 sizeof(struct icmp6hdr), tmp_csum);
249 icmp6h->icmp6_cksum = csum_ipv6_magic(&fl->fl6_src, 249 icmp6h->icmp6_cksum = csum_ipv6_magic(&fl->fl6_src,
250 &fl->fl6_dst, 250 &fl->fl6_dst,
251 len, fl->proto, 251 len, fl->flowi_proto,
252 tmp_csum); 252 tmp_csum);
253 } 253 }
254 ip6_push_pending_frames(sk); 254 ip6_push_pending_frames(sk);
@@ -443,11 +443,11 @@ void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info)
443 mip6_addr_swap(skb); 443 mip6_addr_swap(skb);
444 444
445 memset(&fl, 0, sizeof(fl)); 445 memset(&fl, 0, sizeof(fl));
446 fl.proto = IPPROTO_ICMPV6; 446 fl.flowi_proto = IPPROTO_ICMPV6;
447 ipv6_addr_copy(&fl.fl6_dst, &hdr->saddr); 447 ipv6_addr_copy(&fl.fl6_dst, &hdr->saddr);
448 if (saddr) 448 if (saddr)
449 ipv6_addr_copy(&fl.fl6_src, saddr); 449 ipv6_addr_copy(&fl.fl6_src, saddr);
450 fl.oif = iif; 450 fl.flowi_oif = iif;
451 fl.fl_icmp_type = type; 451 fl.fl_icmp_type = type;
452 fl.fl_icmp_code = code; 452 fl.fl_icmp_code = code;
453 security_skb_classify_flow(skb, &fl); 453 security_skb_classify_flow(skb, &fl);
@@ -465,8 +465,8 @@ void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info)
465 tmp_hdr.icmp6_cksum = 0; 465 tmp_hdr.icmp6_cksum = 0;
466 tmp_hdr.icmp6_pointer = htonl(info); 466 tmp_hdr.icmp6_pointer = htonl(info);
467 467
468 if (!fl.oif && ipv6_addr_is_multicast(&fl.fl6_dst)) 468 if (!fl.flowi_oif && ipv6_addr_is_multicast(&fl.fl6_dst))
469 fl.oif = np->mcast_oif; 469 fl.flowi_oif = np->mcast_oif;
470 470
471 dst = icmpv6_route_lookup(net, skb, sk, &fl); 471 dst = icmpv6_route_lookup(net, skb, sk, &fl);
472 if (IS_ERR(dst)) 472 if (IS_ERR(dst))
@@ -539,11 +539,11 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
539 tmp_hdr.icmp6_type = ICMPV6_ECHO_REPLY; 539 tmp_hdr.icmp6_type = ICMPV6_ECHO_REPLY;
540 540
541 memset(&fl, 0, sizeof(fl)); 541 memset(&fl, 0, sizeof(fl));
542 fl.proto = IPPROTO_ICMPV6; 542 fl.flowi_proto = IPPROTO_ICMPV6;
543 ipv6_addr_copy(&fl.fl6_dst, &ipv6_hdr(skb)->saddr); 543 ipv6_addr_copy(&fl.fl6_dst, &ipv6_hdr(skb)->saddr);
544 if (saddr) 544 if (saddr)
545 ipv6_addr_copy(&fl.fl6_src, saddr); 545 ipv6_addr_copy(&fl.fl6_src, saddr);
546 fl.oif = skb->dev->ifindex; 546 fl.flowi_oif = skb->dev->ifindex;
547 fl.fl_icmp_type = ICMPV6_ECHO_REPLY; 547 fl.fl_icmp_type = ICMPV6_ECHO_REPLY;
548 security_skb_classify_flow(skb, &fl); 548 security_skb_classify_flow(skb, &fl);
549 549
@@ -552,8 +552,8 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
552 return; 552 return;
553 np = inet6_sk(sk); 553 np = inet6_sk(sk);
554 554
555 if (!fl.oif && ipv6_addr_is_multicast(&fl.fl6_dst)) 555 if (!fl.flowi_oif && ipv6_addr_is_multicast(&fl.fl6_dst))
556 fl.oif = np->mcast_oif; 556 fl.flowi_oif = np->mcast_oif;
557 557
558 err = ip6_dst_lookup(sk, &dst, &fl); 558 err = ip6_dst_lookup(sk, &dst, &fl);
559 if (err) 559 if (err)
@@ -793,10 +793,10 @@ void icmpv6_flow_init(struct sock *sk, struct flowi *fl,
793 memset(fl, 0, sizeof(*fl)); 793 memset(fl, 0, sizeof(*fl));
794 ipv6_addr_copy(&fl->fl6_src, saddr); 794 ipv6_addr_copy(&fl->fl6_src, saddr);
795 ipv6_addr_copy(&fl->fl6_dst, daddr); 795 ipv6_addr_copy(&fl->fl6_dst, daddr);
796 fl->proto = IPPROTO_ICMPV6; 796 fl->flowi_proto = IPPROTO_ICMPV6;
797 fl->fl_icmp_type = type; 797 fl->fl_icmp_type = type;
798 fl->fl_icmp_code = 0; 798 fl->fl_icmp_code = 0;
799 fl->oif = oif; 799 fl->flowi_oif = oif;
800 security_sk_classify_flow(sk, fl); 800 security_sk_classify_flow(sk, fl);
801} 801}
802 802
diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c
index d687e1397333..673f9bf28958 100644
--- a/net/ipv6/inet6_connection_sock.c
+++ b/net/ipv6/inet6_connection_sock.c
@@ -64,12 +64,12 @@ struct dst_entry *inet6_csk_route_req(struct sock *sk,
64 struct flowi fl; 64 struct flowi fl;
65 65
66 memset(&fl, 0, sizeof(fl)); 66 memset(&fl, 0, sizeof(fl));
67 fl.proto = IPPROTO_TCP; 67 fl.flowi_proto = IPPROTO_TCP;
68 ipv6_addr_copy(&fl.fl6_dst, &treq->rmt_addr); 68 ipv6_addr_copy(&fl.fl6_dst, &treq->rmt_addr);
69 final_p = fl6_update_dst(&fl, np->opt, &final); 69 final_p = fl6_update_dst(&fl, np->opt, &final);
70 ipv6_addr_copy(&fl.fl6_src, &treq->loc_addr); 70 ipv6_addr_copy(&fl.fl6_src, &treq->loc_addr);
71 fl.oif = sk->sk_bound_dev_if; 71 fl.flowi_oif = sk->sk_bound_dev_if;
72 fl.mark = sk->sk_mark; 72 fl.flowi_mark = sk->sk_mark;
73 fl.fl_ip_dport = inet_rsk(req)->rmt_port; 73 fl.fl_ip_dport = inet_rsk(req)->rmt_port;
74 fl.fl_ip_sport = inet_rsk(req)->loc_port; 74 fl.fl_ip_sport = inet_rsk(req)->loc_port;
75 security_req_classify_flow(req, &fl); 75 security_req_classify_flow(req, &fl);
@@ -213,13 +213,13 @@ int inet6_csk_xmit(struct sk_buff *skb)
213 struct in6_addr *final_p, final; 213 struct in6_addr *final_p, final;
214 214
215 memset(&fl, 0, sizeof(fl)); 215 memset(&fl, 0, sizeof(fl));
216 fl.proto = sk->sk_protocol; 216 fl.flowi_proto = sk->sk_protocol;
217 ipv6_addr_copy(&fl.fl6_dst, &np->daddr); 217 ipv6_addr_copy(&fl.fl6_dst, &np->daddr);
218 ipv6_addr_copy(&fl.fl6_src, &np->saddr); 218 ipv6_addr_copy(&fl.fl6_src, &np->saddr);
219 fl.fl6_flowlabel = np->flow_label; 219 fl.fl6_flowlabel = np->flow_label;
220 IP6_ECN_flow_xmit(sk, fl.fl6_flowlabel); 220 IP6_ECN_flow_xmit(sk, fl.fl6_flowlabel);
221 fl.oif = sk->sk_bound_dev_if; 221 fl.flowi_oif = sk->sk_bound_dev_if;
222 fl.mark = sk->sk_mark; 222 fl.flowi_mark = sk->sk_mark;
223 fl.fl_ip_sport = inet->inet_sport; 223 fl.fl_ip_sport = inet->inet_sport;
224 fl.fl_ip_dport = inet->inet_dport; 224 fl.fl_ip_dport = inet->inet_dport;
225 security_sk_classify_flow(sk, &fl); 225 security_sk_classify_flow(sk, &fl);
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
index 13654686aeab..c8fa470b174b 100644
--- a/net/ipv6/ip6_flowlabel.c
+++ b/net/ipv6/ip6_flowlabel.c
@@ -358,7 +358,7 @@ fl_create(struct net *net, struct in6_flowlabel_req *freq, char __user *optval,
358 358
359 msg.msg_controllen = olen; 359 msg.msg_controllen = olen;
360 msg.msg_control = (void*)(fl->opt+1); 360 msg.msg_control = (void*)(fl->opt+1);
361 flowi.oif = 0; 361 flowi.flowi_oif = 0;
362 362
363 err = datagram_send_ctl(net, &msg, &flowi, fl->opt, &junk, 363 err = datagram_send_ctl(net, &msg, &flowi, fl->opt, &junk,
364 &junk, &junk); 364 &junk, &junk);
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index adaffaf84555..3d0f2ac868a7 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -182,7 +182,7 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,
182 struct in6_addr *first_hop = &fl->fl6_dst; 182 struct in6_addr *first_hop = &fl->fl6_dst;
183 struct dst_entry *dst = skb_dst(skb); 183 struct dst_entry *dst = skb_dst(skb);
184 struct ipv6hdr *hdr; 184 struct ipv6hdr *hdr;
185 u8 proto = fl->proto; 185 u8 proto = fl->flowi_proto;
186 int seg_len = skb->len; 186 int seg_len = skb->len;
187 int hlimit = -1; 187 int hlimit = -1;
188 int tclass = 0; 188 int tclass = 0;
@@ -908,7 +908,7 @@ static struct dst_entry *ip6_sk_dst_check(struct sock *sk,
908#ifdef CONFIG_IPV6_SUBTREES 908#ifdef CONFIG_IPV6_SUBTREES
909 ip6_rt_check(&rt->rt6i_src, &fl->fl6_src, np->saddr_cache) || 909 ip6_rt_check(&rt->rt6i_src, &fl->fl6_src, np->saddr_cache) ||
910#endif 910#endif
911 (fl->oif && fl->oif != dst->dev->ifindex)) { 911 (fl->flowi_oif && fl->flowi_oif != dst->dev->ifindex)) {
912 dst_release(dst); 912 dst_release(dst);
913 dst = NULL; 913 dst = NULL;
914 } 914 }
@@ -1026,7 +1026,7 @@ struct dst_entry *ip6_dst_lookup_flow(struct sock *sk, struct flowi *fl,
1026 if (final_dst) 1026 if (final_dst)
1027 ipv6_addr_copy(&fl->fl6_dst, final_dst); 1027 ipv6_addr_copy(&fl->fl6_dst, final_dst);
1028 if (can_sleep) 1028 if (can_sleep)
1029 fl->flags |= FLOWI_FLAG_CAN_SLEEP; 1029 fl->flowi_flags |= FLOWI_FLAG_CAN_SLEEP;
1030 1030
1031 return xfrm_lookup(sock_net(sk), dst, fl, sk, 0); 1031 return xfrm_lookup(sock_net(sk), dst, fl, sk, 0);
1032} 1032}
@@ -1062,7 +1062,7 @@ struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi *fl,
1062 if (final_dst) 1062 if (final_dst)
1063 ipv6_addr_copy(&fl->fl6_dst, final_dst); 1063 ipv6_addr_copy(&fl->fl6_dst, final_dst);
1064 if (can_sleep) 1064 if (can_sleep)
1065 fl->flags |= FLOWI_FLAG_CAN_SLEEP; 1065 fl->flowi_flags |= FLOWI_FLAG_CAN_SLEEP;
1066 1066
1067 return xfrm_lookup(sock_net(sk), dst, fl, sk, 0); 1067 return xfrm_lookup(sock_net(sk), dst, fl, sk, 0);
1068} 1068}
@@ -1517,7 +1517,7 @@ int ip6_push_pending_frames(struct sock *sk)
1517 struct ipv6_txoptions *opt = np->cork.opt; 1517 struct ipv6_txoptions *opt = np->cork.opt;
1518 struct rt6_info *rt = (struct rt6_info *)inet->cork.dst; 1518 struct rt6_info *rt = (struct rt6_info *)inet->cork.dst;
1519 struct flowi *fl = &inet->cork.fl; 1519 struct flowi *fl = &inet->cork.fl;
1520 unsigned char proto = fl->proto; 1520 unsigned char proto = fl->flowi_proto;
1521 int err = 0; 1521 int err = 0;
1522 1522
1523 if ((skb = __skb_dequeue(&sk->sk_write_queue)) == NULL) 1523 if ((skb = __skb_dequeue(&sk->sk_write_queue)) == NULL)
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
index f199b8486120..c3fc824c24d9 100644
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -963,7 +963,7 @@ static int ip6_tnl_xmit2(struct sk_buff *skb,
963 963
964 skb->transport_header = skb->network_header; 964 skb->transport_header = skb->network_header;
965 965
966 proto = fl->proto; 966 proto = fl->flowi_proto;
967 if (encap_limit >= 0) { 967 if (encap_limit >= 0) {
968 init_tel_txopt(&opt, encap_limit); 968 init_tel_txopt(&opt, encap_limit);
969 ipv6_push_nfrag_opts(skb, &opt.ops, &proto, NULL); 969 ipv6_push_nfrag_opts(skb, &opt.ops, &proto, NULL);
@@ -1020,7 +1020,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev)
1020 encap_limit = t->parms.encap_limit; 1020 encap_limit = t->parms.encap_limit;
1021 1021
1022 memcpy(&fl, &t->fl, sizeof (fl)); 1022 memcpy(&fl, &t->fl, sizeof (fl));
1023 fl.proto = IPPROTO_IPIP; 1023 fl.flowi_proto = IPPROTO_IPIP;
1024 1024
1025 dsfield = ipv4_get_dsfield(iph); 1025 dsfield = ipv4_get_dsfield(iph);
1026 1026
@@ -1070,7 +1070,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev)
1070 encap_limit = t->parms.encap_limit; 1070 encap_limit = t->parms.encap_limit;
1071 1071
1072 memcpy(&fl, &t->fl, sizeof (fl)); 1072 memcpy(&fl, &t->fl, sizeof (fl));
1073 fl.proto = IPPROTO_IPV6; 1073 fl.flowi_proto = IPPROTO_IPV6;
1074 1074
1075 dsfield = ipv6_get_dsfield(ipv6h); 1075 dsfield = ipv6_get_dsfield(ipv6h);
1076 if ((t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)) 1076 if ((t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS))
@@ -1149,7 +1149,7 @@ static void ip6_tnl_link_config(struct ip6_tnl *t)
1149 /* Set up flowi template */ 1149 /* Set up flowi template */
1150 ipv6_addr_copy(&fl->fl6_src, &p->laddr); 1150 ipv6_addr_copy(&fl->fl6_src, &p->laddr);
1151 ipv6_addr_copy(&fl->fl6_dst, &p->raddr); 1151 ipv6_addr_copy(&fl->fl6_dst, &p->raddr);
1152 fl->oif = p->link; 1152 fl->flowi_oif = p->link;
1153 fl->fl6_flowlabel = 0; 1153 fl->fl6_flowlabel = 0;
1154 1154
1155 if (!(p->flags&IP6_TNL_F_USE_ORIG_TCLASS)) 1155 if (!(p->flags&IP6_TNL_F_USE_ORIG_TCLASS))
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c
index 618f67ccda31..61a8be3ac4e4 100644
--- a/net/ipv6/ip6mr.c
+++ b/net/ipv6/ip6mr.c
@@ -618,8 +618,8 @@ static int pim6_rcv(struct sk_buff *skb)
618 struct net *net = dev_net(skb->dev); 618 struct net *net = dev_net(skb->dev);
619 struct mr6_table *mrt; 619 struct mr6_table *mrt;
620 struct flowi fl = { 620 struct flowi fl = {
621 .iif = skb->dev->ifindex, 621 .flowi_iif = skb->dev->ifindex,
622 .mark = skb->mark, 622 .flowi_mark = skb->mark,
623 }; 623 };
624 int reg_vif_num; 624 int reg_vif_num;
625 625
@@ -688,9 +688,9 @@ static netdev_tx_t reg_vif_xmit(struct sk_buff *skb,
688 struct net *net = dev_net(dev); 688 struct net *net = dev_net(dev);
689 struct mr6_table *mrt; 689 struct mr6_table *mrt;
690 struct flowi fl = { 690 struct flowi fl = {
691 .oif = dev->ifindex, 691 .flowi_oif = dev->ifindex,
692 .iif = skb->skb_iif, 692 .flowi_iif = skb->skb_iif,
693 .mark = skb->mark, 693 .flowi_mark = skb->mark,
694 }; 694 };
695 int err; 695 int err;
696 696
@@ -1548,9 +1548,9 @@ struct sock *mroute6_socket(struct net *net, struct sk_buff *skb)
1548{ 1548{
1549 struct mr6_table *mrt; 1549 struct mr6_table *mrt;
1550 struct flowi fl = { 1550 struct flowi fl = {
1551 .iif = skb->skb_iif, 1551 .flowi_iif = skb->skb_iif,
1552 .oif = skb->dev->ifindex, 1552 .flowi_oif = skb->dev->ifindex,
1553 .mark = skb->mark, 1553 .flowi_mark= skb->mark,
1554 }; 1554 };
1555 1555
1556 if (ip6mr_fib_lookup(net, &fl, &mrt) < 0) 1556 if (ip6mr_fib_lookup(net, &fl, &mrt) < 0)
@@ -1916,7 +1916,7 @@ static int ip6mr_forward2(struct net *net, struct mr6_table *mrt,
1916 ipv6h = ipv6_hdr(skb); 1916 ipv6h = ipv6_hdr(skb);
1917 1917
1918 fl = (struct flowi) { 1918 fl = (struct flowi) {
1919 .oif = vif->link, 1919 .flowi_oif = vif->link,
1920 .fl6_dst = ipv6h->daddr, 1920 .fl6_dst = ipv6h->daddr,
1921 }; 1921 };
1922 1922
@@ -2044,8 +2044,8 @@ int ip6_mr_input(struct sk_buff *skb)
2044 struct net *net = dev_net(skb->dev); 2044 struct net *net = dev_net(skb->dev);
2045 struct mr6_table *mrt; 2045 struct mr6_table *mrt;
2046 struct flowi fl = { 2046 struct flowi fl = {
2047 .iif = skb->dev->ifindex, 2047 .flowi_iif = skb->dev->ifindex,
2048 .mark = skb->mark, 2048 .flowi_mark= skb->mark,
2049 }; 2049 };
2050 int err; 2050 int err;
2051 2051
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index d1770e061c08..1448c507fdff 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -448,8 +448,8 @@ sticky_done:
448 int junk; 448 int junk;
449 449
450 fl.fl6_flowlabel = 0; 450 fl.fl6_flowlabel = 0;
451 fl.oif = sk->sk_bound_dev_if; 451 fl.flowi_oif = sk->sk_bound_dev_if;
452 fl.mark = sk->sk_mark; 452 fl.flowi_mark = sk->sk_mark;
453 453
454 if (optlen == 0) 454 if (optlen == 0)
455 goto update; 455 goto update;
diff --git a/net/ipv6/mip6.c b/net/ipv6/mip6.c
index f3e3ca938a54..e2f852cd0f4e 100644
--- a/net/ipv6/mip6.c
+++ b/net/ipv6/mip6.c
@@ -214,7 +214,7 @@ static int mip6_destopt_reject(struct xfrm_state *x, struct sk_buff *skb,
214 struct timeval stamp; 214 struct timeval stamp;
215 int err = 0; 215 int err = 0;
216 216
217 if (unlikely(fl->proto == IPPROTO_MH && 217 if (unlikely(fl->flowi_proto == IPPROTO_MH &&
218 fl->fl_mh_type <= IP6_MH_TYPE_MAX)) 218 fl->fl_mh_type <= IP6_MH_TYPE_MAX))
219 goto out; 219 goto out;
220 220
@@ -240,14 +240,14 @@ static int mip6_destopt_reject(struct xfrm_state *x, struct sk_buff *skb,
240 sizeof(sel.saddr)); 240 sizeof(sel.saddr));
241 sel.prefixlen_s = 128; 241 sel.prefixlen_s = 128;
242 sel.family = AF_INET6; 242 sel.family = AF_INET6;
243 sel.proto = fl->proto; 243 sel.proto = fl->flowi_proto;
244 sel.dport = xfrm_flowi_dport(fl); 244 sel.dport = xfrm_flowi_dport(fl);
245 if (sel.dport) 245 if (sel.dport)
246 sel.dport_mask = htons(~0); 246 sel.dport_mask = htons(~0);
247 sel.sport = xfrm_flowi_sport(fl); 247 sel.sport = xfrm_flowi_sport(fl);
248 if (sel.sport) 248 if (sel.sport)
249 sel.sport_mask = htons(~0); 249 sel.sport_mask = htons(~0);
250 sel.ifindex = fl->oif; 250 sel.ifindex = fl->flowi_oif;
251 251
252 err = km_report(net, IPPROTO_DSTOPTS, &sel, 252 err = km_report(net, IPPROTO_DSTOPTS, &sel,
253 (hao ? (xfrm_address_t *)&hao->addr : NULL)); 253 (hao ? (xfrm_address_t *)&hao->addr : NULL));
diff --git a/net/ipv6/netfilter.c b/net/ipv6/netfilter.c
index 8d74116ae27d..d282c62bc6f4 100644
--- a/net/ipv6/netfilter.c
+++ b/net/ipv6/netfilter.c
@@ -16,8 +16,8 @@ int ip6_route_me_harder(struct sk_buff *skb)
16 struct ipv6hdr *iph = ipv6_hdr(skb); 16 struct ipv6hdr *iph = ipv6_hdr(skb);
17 struct dst_entry *dst; 17 struct dst_entry *dst;
18 struct flowi fl = { 18 struct flowi fl = {
19 .oif = skb->sk ? skb->sk->sk_bound_dev_if : 0, 19 .flowi_oif = skb->sk ? skb->sk->sk_bound_dev_if : 0,
20 .mark = skb->mark, 20 .flowi_mark = skb->mark,
21 .fl6_dst = iph->daddr, 21 .fl6_dst = iph->daddr,
22 .fl6_src = iph->saddr, 22 .fl6_src = iph->saddr,
23 }; 23 };
diff --git a/net/ipv6/netfilter/ip6t_REJECT.c b/net/ipv6/netfilter/ip6t_REJECT.c
index 91f6a61cefab..fd3938803eb3 100644
--- a/net/ipv6/netfilter/ip6t_REJECT.c
+++ b/net/ipv6/netfilter/ip6t_REJECT.c
@@ -90,7 +90,7 @@ static void send_reset(struct net *net, struct sk_buff *oldskb)
90 } 90 }
91 91
92 memset(&fl, 0, sizeof(fl)); 92 memset(&fl, 0, sizeof(fl));
93 fl.proto = IPPROTO_TCP; 93 fl.flowi_proto = IPPROTO_TCP;
94 ipv6_addr_copy(&fl.fl6_src, &oip6h->daddr); 94 ipv6_addr_copy(&fl.fl6_src, &oip6h->daddr);
95 ipv6_addr_copy(&fl.fl6_dst, &oip6h->saddr); 95 ipv6_addr_copy(&fl.fl6_dst, &oip6h->saddr);
96 fl.fl_ip_sport = otcph.dest; 96 fl.fl_ip_sport = otcph.dest;
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index dc29b07caf42..323ad44ff775 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -588,9 +588,9 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi *fl,
588 588
589 csum = csum_ipv6_magic(&fl->fl6_src, 589 csum = csum_ipv6_magic(&fl->fl6_src,
590 &fl->fl6_dst, 590 &fl->fl6_dst,
591 total_len, fl->proto, tmp_csum); 591 total_len, fl->flowi_proto, tmp_csum);
592 592
593 if (csum == 0 && fl->proto == IPPROTO_UDP) 593 if (csum == 0 && fl->flowi_proto == IPPROTO_UDP)
594 csum = CSUM_MANGLED_0; 594 csum = CSUM_MANGLED_0;
595 595
596 if (skb_store_bits(skb, offset, &csum, 2)) 596 if (skb_store_bits(skb, offset, &csum, 2))
@@ -679,7 +679,7 @@ static int rawv6_probe_proto_opt(struct flowi *fl, struct msghdr *msg)
679 if (!iov) 679 if (!iov)
680 continue; 680 continue;
681 681
682 switch (fl->proto) { 682 switch (fl->flowi_proto) {
683 case IPPROTO_ICMPV6: 683 case IPPROTO_ICMPV6:
684 /* check if one-byte field is readable or not. */ 684 /* check if one-byte field is readable or not. */
685 if (iov->iov_base && iov->iov_len < 1) 685 if (iov->iov_base && iov->iov_len < 1)
@@ -758,7 +758,7 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
758 */ 758 */
759 memset(&fl, 0, sizeof(fl)); 759 memset(&fl, 0, sizeof(fl));
760 760
761 fl.mark = sk->sk_mark; 761 fl.flowi_mark = sk->sk_mark;
762 762
763 if (sin6) { 763 if (sin6) {
764 if (addr_len < SIN6_LEN_RFC2133) 764 if (addr_len < SIN6_LEN_RFC2133)
@@ -800,7 +800,7 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
800 if (addr_len >= sizeof(struct sockaddr_in6) && 800 if (addr_len >= sizeof(struct sockaddr_in6) &&
801 sin6->sin6_scope_id && 801 sin6->sin6_scope_id &&
802 ipv6_addr_type(daddr)&IPV6_ADDR_LINKLOCAL) 802 ipv6_addr_type(daddr)&IPV6_ADDR_LINKLOCAL)
803 fl.oif = sin6->sin6_scope_id; 803 fl.flowi_oif = sin6->sin6_scope_id;
804 } else { 804 } else {
805 if (sk->sk_state != TCP_ESTABLISHED) 805 if (sk->sk_state != TCP_ESTABLISHED)
806 return -EDESTADDRREQ; 806 return -EDESTADDRREQ;
@@ -810,8 +810,8 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
810 fl.fl6_flowlabel = np->flow_label; 810 fl.fl6_flowlabel = np->flow_label;
811 } 811 }
812 812
813 if (fl.oif == 0) 813 if (fl.flowi_oif == 0)
814 fl.oif = sk->sk_bound_dev_if; 814 fl.flowi_oif = sk->sk_bound_dev_if;
815 815
816 if (msg->msg_controllen) { 816 if (msg->msg_controllen) {
817 opt = &opt_space; 817 opt = &opt_space;
@@ -838,7 +838,7 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
838 opt = fl6_merge_options(&opt_space, flowlabel, opt); 838 opt = fl6_merge_options(&opt_space, flowlabel, opt);
839 opt = ipv6_fixup_options(&opt_space, opt); 839 opt = ipv6_fixup_options(&opt_space, opt);
840 840
841 fl.proto = proto; 841 fl.flowi_proto = proto;
842 err = rawv6_probe_proto_opt(&fl, msg); 842 err = rawv6_probe_proto_opt(&fl, msg);
843 if (err) 843 if (err)
844 goto out; 844 goto out;
@@ -852,8 +852,8 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
852 852
853 final_p = fl6_update_dst(&fl, opt, &final); 853 final_p = fl6_update_dst(&fl, opt, &final);
854 854
855 if (!fl.oif && ipv6_addr_is_multicast(&fl.fl6_dst)) 855 if (!fl.flowi_oif && ipv6_addr_is_multicast(&fl.fl6_dst))
856 fl.oif = np->mcast_oif; 856 fl.flowi_oif = np->mcast_oif;
857 security_sk_classify_flow(sk, &fl); 857 security_sk_classify_flow(sk, &fl);
858 858
859 dst = ip6_dst_lookup_flow(sk, &fl, final_p, true); 859 dst = ip6_dst_lookup_flow(sk, &fl, final_p, true);
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 001276055a6b..c3b20d63921f 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -608,7 +608,7 @@ static struct rt6_info *ip6_pol_route_lookup(struct net *net,
608 fn = fib6_lookup(&table->tb6_root, &fl->fl6_dst, &fl->fl6_src); 608 fn = fib6_lookup(&table->tb6_root, &fl->fl6_dst, &fl->fl6_src);
609restart: 609restart:
610 rt = fn->leaf; 610 rt = fn->leaf;
611 rt = rt6_device_match(net, rt, &fl->fl6_src, fl->oif, flags); 611 rt = rt6_device_match(net, rt, &fl->fl6_src, fl->flowi_oif, flags);
612 BACKTRACK(net, &fl->fl6_src); 612 BACKTRACK(net, &fl->fl6_src);
613out: 613out:
614 dst_use(&rt->dst, jiffies); 614 dst_use(&rt->dst, jiffies);
@@ -621,7 +621,7 @@ struct rt6_info *rt6_lookup(struct net *net, const struct in6_addr *daddr,
621 const struct in6_addr *saddr, int oif, int strict) 621 const struct in6_addr *saddr, int oif, int strict)
622{ 622{
623 struct flowi fl = { 623 struct flowi fl = {
624 .oif = oif, 624 .flowi_oif = oif,
625 .fl6_dst = *daddr, 625 .fl6_dst = *daddr,
626 }; 626 };
627 struct dst_entry *dst; 627 struct dst_entry *dst;
@@ -825,7 +825,7 @@ out2:
825static struct rt6_info *ip6_pol_route_input(struct net *net, struct fib6_table *table, 825static struct rt6_info *ip6_pol_route_input(struct net *net, struct fib6_table *table,
826 struct flowi *fl, int flags) 826 struct flowi *fl, int flags)
827{ 827{
828 return ip6_pol_route(net, table, fl->iif, fl, flags); 828 return ip6_pol_route(net, table, fl->flowi_iif, fl, flags);
829} 829}
830 830
831void ip6_route_input(struct sk_buff *skb) 831void ip6_route_input(struct sk_buff *skb)
@@ -834,12 +834,12 @@ void ip6_route_input(struct sk_buff *skb)
834 struct net *net = dev_net(skb->dev); 834 struct net *net = dev_net(skb->dev);
835 int flags = RT6_LOOKUP_F_HAS_SADDR; 835 int flags = RT6_LOOKUP_F_HAS_SADDR;
836 struct flowi fl = { 836 struct flowi fl = {
837 .iif = skb->dev->ifindex, 837 .flowi_iif = skb->dev->ifindex,
838 .fl6_dst = iph->daddr, 838 .fl6_dst = iph->daddr,
839 .fl6_src = iph->saddr, 839 .fl6_src = iph->saddr,
840 .fl6_flowlabel = (* (__be32 *) iph)&IPV6_FLOWINFO_MASK, 840 .fl6_flowlabel = (* (__be32 *) iph)&IPV6_FLOWINFO_MASK,
841 .mark = skb->mark, 841 .flowi_mark = skb->mark,
842 .proto = iph->nexthdr, 842 .flowi_proto = iph->nexthdr,
843 }; 843 };
844 844
845 if (rt6_need_strict(&iph->daddr) && skb->dev->type != ARPHRD_PIMREG) 845 if (rt6_need_strict(&iph->daddr) && skb->dev->type != ARPHRD_PIMREG)
@@ -851,7 +851,7 @@ void ip6_route_input(struct sk_buff *skb)
851static struct rt6_info *ip6_pol_route_output(struct net *net, struct fib6_table *table, 851static struct rt6_info *ip6_pol_route_output(struct net *net, struct fib6_table *table,
852 struct flowi *fl, int flags) 852 struct flowi *fl, int flags)
853{ 853{
854 return ip6_pol_route(net, table, fl->oif, fl, flags); 854 return ip6_pol_route(net, table, fl->flowi_oif, fl, flags);
855} 855}
856 856
857struct dst_entry * ip6_route_output(struct net *net, struct sock *sk, 857struct dst_entry * ip6_route_output(struct net *net, struct sock *sk,
@@ -1484,7 +1484,7 @@ restart:
1484 continue; 1484 continue;
1485 if (!(rt->rt6i_flags & RTF_GATEWAY)) 1485 if (!(rt->rt6i_flags & RTF_GATEWAY))
1486 continue; 1486 continue;
1487 if (fl->oif != rt->rt6i_dev->ifindex) 1487 if (fl->flowi_oif != rt->rt6i_dev->ifindex)
1488 continue; 1488 continue;
1489 if (!ipv6_addr_equal(&rdfl->gateway, &rt->rt6i_gateway)) 1489 if (!ipv6_addr_equal(&rdfl->gateway, &rt->rt6i_gateway))
1490 continue; 1490 continue;
@@ -1511,7 +1511,7 @@ static struct rt6_info *ip6_route_redirect(struct in6_addr *dest,
1511 struct net *net = dev_net(dev); 1511 struct net *net = dev_net(dev);
1512 struct ip6rd_flowi rdfl = { 1512 struct ip6rd_flowi rdfl = {
1513 .fl = { 1513 .fl = {
1514 .oif = dev->ifindex, 1514 .flowi_oif = dev->ifindex,
1515 .fl6_dst = *dest, 1515 .fl6_dst = *dest,
1516 .fl6_src = *src, 1516 .fl6_src = *src,
1517 }, 1517 },
@@ -2413,7 +2413,7 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr* nlh, void
2413 iif = nla_get_u32(tb[RTA_IIF]); 2413 iif = nla_get_u32(tb[RTA_IIF]);
2414 2414
2415 if (tb[RTA_OIF]) 2415 if (tb[RTA_OIF])
2416 fl.oif = nla_get_u32(tb[RTA_OIF]); 2416 fl.flowi_oif = nla_get_u32(tb[RTA_OIF]);
2417 2417
2418 if (iif) { 2418 if (iif) {
2419 struct net_device *dev; 2419 struct net_device *dev;
diff --git a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c
index 0b4cf350631b..ca5255c08371 100644
--- a/net/ipv6/syncookies.c
+++ b/net/ipv6/syncookies.c
@@ -234,12 +234,12 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
234 struct in6_addr *final_p, final; 234 struct in6_addr *final_p, final;
235 struct flowi fl; 235 struct flowi fl;
236 memset(&fl, 0, sizeof(fl)); 236 memset(&fl, 0, sizeof(fl));
237 fl.proto = IPPROTO_TCP; 237 fl.flowi_proto = IPPROTO_TCP;
238 ipv6_addr_copy(&fl.fl6_dst, &ireq6->rmt_addr); 238 ipv6_addr_copy(&fl.fl6_dst, &ireq6->rmt_addr);
239 final_p = fl6_update_dst(&fl, np->opt, &final); 239 final_p = fl6_update_dst(&fl, np->opt, &final);
240 ipv6_addr_copy(&fl.fl6_src, &ireq6->loc_addr); 240 ipv6_addr_copy(&fl.fl6_src, &ireq6->loc_addr);
241 fl.oif = sk->sk_bound_dev_if; 241 fl.flowi_oif = sk->sk_bound_dev_if;
242 fl.mark = sk->sk_mark; 242 fl.flowi_mark = sk->sk_mark;
243 fl.fl_ip_dport = inet_rsk(req)->rmt_port; 243 fl.fl_ip_dport = inet_rsk(req)->rmt_port;
244 fl.fl_ip_sport = inet_sk(sk)->inet_sport; 244 fl.fl_ip_sport = inet_sk(sk)->inet_sport;
245 security_req_classify_flow(req, &fl); 245 security_req_classify_flow(req, &fl);
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index e59a31c48baf..a3d1229b4004 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -242,12 +242,12 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
242 if (!ipv6_addr_any(&np->rcv_saddr)) 242 if (!ipv6_addr_any(&np->rcv_saddr))
243 saddr = &np->rcv_saddr; 243 saddr = &np->rcv_saddr;
244 244
245 fl.proto = IPPROTO_TCP; 245 fl.flowi_proto = IPPROTO_TCP;
246 ipv6_addr_copy(&fl.fl6_dst, &np->daddr); 246 ipv6_addr_copy(&fl.fl6_dst, &np->daddr);
247 ipv6_addr_copy(&fl.fl6_src, 247 ipv6_addr_copy(&fl.fl6_src,
248 (saddr ? saddr : &np->saddr)); 248 (saddr ? saddr : &np->saddr));
249 fl.oif = sk->sk_bound_dev_if; 249 fl.flowi_oif = sk->sk_bound_dev_if;
250 fl.mark = sk->sk_mark; 250 fl.flowi_mark = sk->sk_mark;
251 fl.fl_ip_dport = usin->sin6_port; 251 fl.fl_ip_dport = usin->sin6_port;
252 fl.fl_ip_sport = inet->inet_sport; 252 fl.fl_ip_sport = inet->inet_sport;
253 253
@@ -396,11 +396,11 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
396 for now. 396 for now.
397 */ 397 */
398 memset(&fl, 0, sizeof(fl)); 398 memset(&fl, 0, sizeof(fl));
399 fl.proto = IPPROTO_TCP; 399 fl.flowi_proto = IPPROTO_TCP;
400 ipv6_addr_copy(&fl.fl6_dst, &np->daddr); 400 ipv6_addr_copy(&fl.fl6_dst, &np->daddr);
401 ipv6_addr_copy(&fl.fl6_src, &np->saddr); 401 ipv6_addr_copy(&fl.fl6_src, &np->saddr);
402 fl.oif = sk->sk_bound_dev_if; 402 fl.flowi_oif = sk->sk_bound_dev_if;
403 fl.mark = sk->sk_mark; 403 fl.flowi_mark = sk->sk_mark;
404 fl.fl_ip_dport = inet->inet_dport; 404 fl.fl_ip_dport = inet->inet_dport;
405 fl.fl_ip_sport = inet->inet_sport; 405 fl.fl_ip_sport = inet->inet_sport;
406 security_skb_classify_flow(skb, &fl); 406 security_skb_classify_flow(skb, &fl);
@@ -487,12 +487,12 @@ static int tcp_v6_send_synack(struct sock *sk, struct request_sock *req,
487 int err; 487 int err;
488 488
489 memset(&fl, 0, sizeof(fl)); 489 memset(&fl, 0, sizeof(fl));
490 fl.proto = IPPROTO_TCP; 490 fl.flowi_proto = IPPROTO_TCP;
491 ipv6_addr_copy(&fl.fl6_dst, &treq->rmt_addr); 491 ipv6_addr_copy(&fl.fl6_dst, &treq->rmt_addr);
492 ipv6_addr_copy(&fl.fl6_src, &treq->loc_addr); 492 ipv6_addr_copy(&fl.fl6_src, &treq->loc_addr);
493 fl.fl6_flowlabel = 0; 493 fl.fl6_flowlabel = 0;
494 fl.oif = treq->iif; 494 fl.flowi_oif = treq->iif;
495 fl.mark = sk->sk_mark; 495 fl.flowi_mark = sk->sk_mark;
496 fl.fl_ip_dport = inet_rsk(req)->rmt_port; 496 fl.fl_ip_dport = inet_rsk(req)->rmt_port;
497 fl.fl_ip_sport = inet_rsk(req)->loc_port; 497 fl.fl_ip_sport = inet_rsk(req)->loc_port;
498 security_req_classify_flow(req, &fl); 498 security_req_classify_flow(req, &fl);
@@ -1055,8 +1055,8 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,
1055 1055
1056 __tcp_v6_send_check(buff, &fl.fl6_src, &fl.fl6_dst); 1056 __tcp_v6_send_check(buff, &fl.fl6_src, &fl.fl6_dst);
1057 1057
1058 fl.proto = IPPROTO_TCP; 1058 fl.flowi_proto = IPPROTO_TCP;
1059 fl.oif = inet6_iif(skb); 1059 fl.flowi_oif = inet6_iif(skb);
1060 fl.fl_ip_dport = t1->dest; 1060 fl.fl_ip_dport = t1->dest;
1061 fl.fl_ip_sport = t1->source; 1061 fl.fl_ip_sport = t1->source;
1062 security_skb_classify_flow(skb, &fl); 1062 security_skb_classify_flow(skb, &fl);
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index d86d7f67a597..91f8047463ec 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -915,7 +915,7 @@ static int udp_v6_push_pending_frames(struct sock *sk)
915 915
916 /* add protocol-dependent pseudo-header */ 916 /* add protocol-dependent pseudo-header */
917 uh->check = csum_ipv6_magic(&fl->fl6_src, &fl->fl6_dst, 917 uh->check = csum_ipv6_magic(&fl->fl6_src, &fl->fl6_dst,
918 up->len, fl->proto, csum ); 918 up->len, fl->flowi_proto, csum);
919 if (uh->check == 0) 919 if (uh->check == 0)
920 uh->check = CSUM_MANGLED_0; 920 uh->check = CSUM_MANGLED_0;
921 921
@@ -1060,7 +1060,7 @@ do_udp_sendmsg:
1060 if (addr_len >= sizeof(struct sockaddr_in6) && 1060 if (addr_len >= sizeof(struct sockaddr_in6) &&
1061 sin6->sin6_scope_id && 1061 sin6->sin6_scope_id &&
1062 ipv6_addr_type(daddr)&IPV6_ADDR_LINKLOCAL) 1062 ipv6_addr_type(daddr)&IPV6_ADDR_LINKLOCAL)
1063 fl.oif = sin6->sin6_scope_id; 1063 fl.flowi_oif = sin6->sin6_scope_id;
1064 } else { 1064 } else {
1065 if (sk->sk_state != TCP_ESTABLISHED) 1065 if (sk->sk_state != TCP_ESTABLISHED)
1066 return -EDESTADDRREQ; 1066 return -EDESTADDRREQ;
@@ -1071,13 +1071,13 @@ do_udp_sendmsg:
1071 connected = 1; 1071 connected = 1;
1072 } 1072 }
1073 1073
1074 if (!fl.oif) 1074 if (!fl.flowi_oif)
1075 fl.oif = sk->sk_bound_dev_if; 1075 fl.flowi_oif = sk->sk_bound_dev_if;
1076 1076
1077 if (!fl.oif) 1077 if (!fl.flowi_oif)
1078 fl.oif = np->sticky_pktinfo.ipi6_ifindex; 1078 fl.flowi_oif = np->sticky_pktinfo.ipi6_ifindex;
1079 1079
1080 fl.mark = sk->sk_mark; 1080 fl.flowi_mark = sk->sk_mark;
1081 1081
1082 if (msg->msg_controllen) { 1082 if (msg->msg_controllen) {
1083 opt = &opt_space; 1083 opt = &opt_space;
@@ -1105,7 +1105,7 @@ do_udp_sendmsg:
1105 opt = fl6_merge_options(&opt_space, flowlabel, opt); 1105 opt = fl6_merge_options(&opt_space, flowlabel, opt);
1106 opt = ipv6_fixup_options(&opt_space, opt); 1106 opt = ipv6_fixup_options(&opt_space, opt);
1107 1107
1108 fl.proto = sk->sk_protocol; 1108 fl.flowi_proto = sk->sk_protocol;
1109 if (!ipv6_addr_any(daddr)) 1109 if (!ipv6_addr_any(daddr))
1110 ipv6_addr_copy(&fl.fl6_dst, daddr); 1110 ipv6_addr_copy(&fl.fl6_dst, daddr);
1111 else 1111 else
@@ -1118,8 +1118,8 @@ do_udp_sendmsg:
1118 if (final_p) 1118 if (final_p)
1119 connected = 0; 1119 connected = 0;
1120 1120
1121 if (!fl.oif && ipv6_addr_is_multicast(&fl.fl6_dst)) { 1121 if (!fl.flowi_oif && ipv6_addr_is_multicast(&fl.fl6_dst)) {
1122 fl.oif = np->mcast_oif; 1122 fl.flowi_oif = np->mcast_oif;
1123 connected = 0; 1123 connected = 0;
1124 } 1124 }
1125 1125
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
index 48ce496802fd..d62496c1a6f9 100644
--- a/net/ipv6/xfrm6_policy.c
+++ b/net/ipv6/xfrm6_policy.c
@@ -128,7 +128,7 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
128 u8 nexthdr = nh[IP6CB(skb)->nhoff]; 128 u8 nexthdr = nh[IP6CB(skb)->nhoff];
129 129
130 memset(fl, 0, sizeof(struct flowi)); 130 memset(fl, 0, sizeof(struct flowi));
131 fl->mark = skb->mark; 131 fl->flowi_mark = skb->mark;
132 132
133 ipv6_addr_copy(&fl->fl6_dst, reverse ? &hdr->saddr : &hdr->daddr); 133 ipv6_addr_copy(&fl->fl6_dst, reverse ? &hdr->saddr : &hdr->daddr);
134 ipv6_addr_copy(&fl->fl6_src, reverse ? &hdr->daddr : &hdr->saddr); 134 ipv6_addr_copy(&fl->fl6_src, reverse ? &hdr->daddr : &hdr->saddr);
@@ -161,7 +161,7 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
161 fl->fl_ip_sport = ports[!!reverse]; 161 fl->fl_ip_sport = ports[!!reverse];
162 fl->fl_ip_dport = ports[!reverse]; 162 fl->fl_ip_dport = ports[!reverse];
163 } 163 }
164 fl->proto = nexthdr; 164 fl->flowi_proto = nexthdr;
165 return; 165 return;
166 166
167 case IPPROTO_ICMPV6: 167 case IPPROTO_ICMPV6:
@@ -171,7 +171,7 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
171 fl->fl_icmp_type = icmp[0]; 171 fl->fl_icmp_type = icmp[0];
172 fl->fl_icmp_code = icmp[1]; 172 fl->fl_icmp_code = icmp[1];
173 } 173 }
174 fl->proto = nexthdr; 174 fl->flowi_proto = nexthdr;
175 return; 175 return;
176 176
177#if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE) 177#if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
@@ -182,7 +182,7 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
182 182
183 fl->fl_mh_type = mh->ip6mh_type; 183 fl->fl_mh_type = mh->ip6mh_type;
184 } 184 }
185 fl->proto = nexthdr; 185 fl->flowi_proto = nexthdr;
186 return; 186 return;
187#endif 187#endif
188 188
@@ -192,7 +192,7 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
192 case IPPROTO_COMP: 192 case IPPROTO_COMP:
193 default: 193 default:
194 fl->fl_ipsec_spi = 0; 194 fl->fl_ipsec_spi = 0;
195 fl->proto = nexthdr; 195 fl->flowi_proto = nexthdr;
196 return; 196 return;
197 } 197 }
198 } 198 }
diff --git a/net/ipv6/xfrm6_state.c b/net/ipv6/xfrm6_state.c
index a02598e0079a..805d0e14c331 100644
--- a/net/ipv6/xfrm6_state.c
+++ b/net/ipv6/xfrm6_state.c
@@ -33,8 +33,8 @@ __xfrm6_init_tempsel(struct xfrm_selector *sel, const struct flowi *fl)
33 sel->family = AF_INET6; 33 sel->family = AF_INET6;
34 sel->prefixlen_d = 128; 34 sel->prefixlen_d = 128;
35 sel->prefixlen_s = 128; 35 sel->prefixlen_s = 128;
36 sel->proto = fl->proto; 36 sel->proto = fl->flowi_proto;
37 sel->ifindex = fl->oif; 37 sel->ifindex = fl->flowi_oif;
38} 38}
39 39
40static void 40static void