aboutsummaryrefslogtreecommitdiffstats
path: root/net/netfilter
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-03-12 16:22:43 -0500
committerDavid S. Miller <davem@davemloft.net>2011-03-12 18:08:54 -0500
commit4c9483b2fb5d2548c3cc1fe03cdd4484ceeb5d1c (patch)
treec29c8070012cffb38fe249cf528589a675f622b1 /net/netfilter
parent9cce96df5b76691712dba22e83ff5efe900361e1 (diff)
ipv6: Convert to use flowi6 where applicable.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/netfilter')
-rw-r--r--net/netfilter/ipvs/ip_vs_ctl.c10
-rw-r--r--net/netfilter/ipvs/ip_vs_xmit.c14
-rw-r--r--net/netfilter/xt_TEE.c12
3 files changed, 17 insertions, 19 deletions
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
index d07a32aa07b6..a60b20fa142e 100644
--- a/net/netfilter/ipvs/ip_vs_ctl.c
+++ b/net/netfilter/ipvs/ip_vs_ctl.c
@@ -75,15 +75,13 @@ static int __ip_vs_addr_is_local_v6(struct net *net,
75 const struct in6_addr *addr) 75 const struct in6_addr *addr)
76{ 76{
77 struct rt6_info *rt; 77 struct rt6_info *rt;
78 struct flowi fl = { 78 struct flowi6 fl6 = {
79 .flowi_oif = 0, 79 .daddr = *addr,
80 .fl6_dst = *addr,
81 .fl6_src = { .s6_addr32 = {0, 0, 0, 0} },
82 }; 80 };
83 81
84 rt = (struct rt6_info *)ip6_route_output(net, NULL, &fl); 82 rt = (struct rt6_info *)ip6_route_output(net, NULL, &fl6);
85 if (rt && rt->rt6i_dev && (rt->rt6i_dev->flags & IFF_LOOPBACK)) 83 if (rt && rt->rt6i_dev && (rt->rt6i_dev->flags & IFF_LOOPBACK))
86 return 1; 84 return 1;
87 85
88 return 0; 86 return 0;
89} 87}
diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
index 7dc00e313611..6132b213eddc 100644
--- a/net/netfilter/ipvs/ip_vs_xmit.c
+++ b/net/netfilter/ipvs/ip_vs_xmit.c
@@ -198,27 +198,27 @@ __ip_vs_route_output_v6(struct net *net, struct in6_addr *daddr,
198 struct in6_addr *ret_saddr, int do_xfrm) 198 struct in6_addr *ret_saddr, int do_xfrm)
199{ 199{
200 struct dst_entry *dst; 200 struct dst_entry *dst;
201 struct flowi fl = { 201 struct flowi6 fl6 = {
202 .fl6_dst = *daddr, 202 .daddr = *daddr,
203 }; 203 };
204 204
205 dst = ip6_route_output(net, NULL, &fl); 205 dst = ip6_route_output(net, NULL, &fl6);
206 if (dst->error) 206 if (dst->error)
207 goto out_err; 207 goto out_err;
208 if (!ret_saddr) 208 if (!ret_saddr)
209 return dst; 209 return dst;
210 if (ipv6_addr_any(&fl.fl6_src) && 210 if (ipv6_addr_any(&fl6.saddr) &&
211 ipv6_dev_get_saddr(net, ip6_dst_idev(dst)->dev, 211 ipv6_dev_get_saddr(net, ip6_dst_idev(dst)->dev,
212 &fl.fl6_dst, 0, &fl.fl6_src) < 0) 212 &fl6.daddr, 0, &fl6.saddr) < 0)
213 goto out_err; 213 goto out_err;
214 if (do_xfrm) { 214 if (do_xfrm) {
215 dst = xfrm_lookup(net, dst, &fl, NULL, 0); 215 dst = xfrm_lookup(net, dst, flowi6_to_flowi(&fl6), NULL, 0);
216 if (IS_ERR(dst)) { 216 if (IS_ERR(dst)) {
217 dst = NULL; 217 dst = NULL;
218 goto out_err; 218 goto out_err;
219 } 219 }
220 } 220 }
221 ipv6_addr_copy(ret_saddr, &fl.fl6_src); 221 ipv6_addr_copy(ret_saddr, &fl6.saddr);
222 return dst; 222 return dst;
223 223
224out_err: 224out_err:
diff --git a/net/netfilter/xt_TEE.c b/net/netfilter/xt_TEE.c
index d8c00f9342ae..5f054a0dbbb1 100644
--- a/net/netfilter/xt_TEE.c
+++ b/net/netfilter/xt_TEE.c
@@ -143,18 +143,18 @@ tee_tg_route6(struct sk_buff *skb, const struct xt_tee_tginfo *info)
143 const struct ipv6hdr *iph = ipv6_hdr(skb); 143 const struct ipv6hdr *iph = ipv6_hdr(skb);
144 struct net *net = pick_net(skb); 144 struct net *net = pick_net(skb);
145 struct dst_entry *dst; 145 struct dst_entry *dst;
146 struct flowi fl; 146 struct flowi6 fl6;
147 147
148 memset(&fl, 0, sizeof(fl)); 148 memset(&fl6, 0, sizeof(fl6));
149 if (info->priv) { 149 if (info->priv) {
150 if (info->priv->oif == -1) 150 if (info->priv->oif == -1)
151 return false; 151 return false;
152 fl.flowi_oif = info->priv->oif; 152 fl6.flowi6_oif = info->priv->oif;
153 } 153 }
154 fl.fl6_dst = info->gw.in6; 154 fl6.daddr = info->gw.in6;
155 fl.fl6_flowlabel = ((iph->flow_lbl[0] & 0xF) << 16) | 155 fl6.flowlabel = ((iph->flow_lbl[0] & 0xF) << 16) |
156 (iph->flow_lbl[1] << 8) | iph->flow_lbl[2]; 156 (iph->flow_lbl[1] << 8) | iph->flow_lbl[2];
157 dst = ip6_route_output(net, NULL, &fl); 157 dst = ip6_route_output(net, NULL, &fl6);
158 if (dst == NULL) 158 if (dst == NULL)
159 return false; 159 return false;
160 160