aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis V. Lunev <den@openvz.org>2008-01-23 01:07:10 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:11:06 -0500
commitf1b050bf7a88910f9f00c9c8989c1bf5a67dd140 (patch)
tree37e8dce4268cb657a75e5074a38db48264f1e42f
parent611c183ebcb5af384df3a4ddb391034a1b6ac255 (diff)
[NETNS]: Add namespace parameter to ip_route_output_flow.
Needed to propagate it down to the __ip_route_output_key. Signed_off_by: Denis V. Lunev <den@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_cm.c2
-rw-r--r--include/net/route.h6
-rw-r--r--net/dccp/ipv4.c2
-rw-r--r--net/ipv4/af_inet.c2
-rw-r--r--net/ipv4/inet_connection_sock.c2
-rw-r--r--net/ipv4/ip_output.c2
-rw-r--r--net/ipv4/raw.c2
-rw-r--r--net/ipv4/route.c7
-rw-r--r--net/ipv4/udp.c2
9 files changed, 14 insertions, 13 deletions
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c
index f8cb0fe748c3..e9a08fa3dffe 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_cm.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c
@@ -332,7 +332,7 @@ static struct rtable *find_route(struct t3cdev *dev, __be32 local_ip,
332 } 332 }
333 }; 333 };
334 334
335 if (ip_route_output_flow(&rt, &fl, NULL, 0)) 335 if (ip_route_output_flow(&init_net, &rt, &fl, NULL, 0))
336 return NULL; 336 return NULL;
337 return rt; 337 return rt;
338} 338}
diff --git a/include/net/route.h b/include/net/route.h
index 3e3b14e060f9..6b970d7d07e0 100644
--- a/include/net/route.h
+++ b/include/net/route.h
@@ -112,7 +112,7 @@ extern void ip_rt_redirect(__be32 old_gw, __be32 dst, __be32 new_gw,
112extern void rt_cache_flush(int how); 112extern void rt_cache_flush(int how);
113extern int __ip_route_output_key(struct net *, struct rtable **, const struct flowi *flp); 113extern int __ip_route_output_key(struct net *, struct rtable **, const struct flowi *flp);
114extern int ip_route_output_key(struct rtable **, struct flowi *flp); 114extern int ip_route_output_key(struct rtable **, struct flowi *flp);
115extern int ip_route_output_flow(struct rtable **rp, struct flowi *flp, struct sock *sk, int flags); 115extern int ip_route_output_flow(struct net *, struct rtable **rp, struct flowi *flp, struct sock *sk, int flags);
116extern int ip_route_input(struct sk_buff*, __be32 dst, __be32 src, u8 tos, struct net_device *devin); 116extern int ip_route_input(struct sk_buff*, __be32 dst, __be32 src, u8 tos, struct net_device *devin);
117extern unsigned short ip_rt_frag_needed(struct iphdr *iph, unsigned short new_mtu); 117extern unsigned short ip_rt_frag_needed(struct iphdr *iph, unsigned short new_mtu);
118extern void ip_rt_send_redirect(struct sk_buff *skb); 118extern void ip_rt_send_redirect(struct sk_buff *skb);
@@ -167,7 +167,7 @@ static inline int ip_route_connect(struct rtable **rp, __be32 dst,
167 *rp = NULL; 167 *rp = NULL;
168 } 168 }
169 security_sk_classify_flow(sk, &fl); 169 security_sk_classify_flow(sk, &fl);
170 return ip_route_output_flow(rp, &fl, sk, flags); 170 return ip_route_output_flow(&init_net, rp, &fl, sk, flags);
171} 171}
172 172
173static inline int ip_route_newports(struct rtable **rp, u8 protocol, 173static inline int ip_route_newports(struct rtable **rp, u8 protocol,
@@ -184,7 +184,7 @@ static inline int ip_route_newports(struct rtable **rp, u8 protocol,
184 ip_rt_put(*rp); 184 ip_rt_put(*rp);
185 *rp = NULL; 185 *rp = NULL;
186 security_sk_classify_flow(sk, &fl); 186 security_sk_classify_flow(sk, &fl);
187 return ip_route_output_flow(rp, &fl, sk, 0); 187 return ip_route_output_flow(&init_net, rp, &fl, sk, 0);
188 } 188 }
189 return 0; 189 return 0;
190} 190}
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index f450df2fc863..9e38b0d6195c 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -469,7 +469,7 @@ static struct dst_entry* dccp_v4_route_skb(struct sock *sk,
469 }; 469 };
470 470
471 security_skb_classify_flow(skb, &fl); 471 security_skb_classify_flow(skb, &fl);
472 if (ip_route_output_flow(&rt, &fl, sk, 0)) { 472 if (ip_route_output_flow(&init_net, &rt, &fl, sk, 0)) {
473 IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); 473 IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES);
474 return NULL; 474 return NULL;
475 } 475 }
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index bcf8c8a4a3ad..09ca5293d08f 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -1113,7 +1113,7 @@ int inet_sk_rebuild_header(struct sock *sk)
1113 }; 1113 };
1114 1114
1115 security_sk_classify_flow(sk, &fl); 1115 security_sk_classify_flow(sk, &fl);
1116 err = ip_route_output_flow(&rt, &fl, sk, 0); 1116 err = ip_route_output_flow(&init_net, &rt, &fl, sk, 0);
1117} 1117}
1118 if (!err) 1118 if (!err)
1119 sk_setup_caps(sk, &rt->u.dst); 1119 sk_setup_caps(sk, &rt->u.dst);
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
index 1c2a32f6bfc4..7801cceb2d1b 100644
--- a/net/ipv4/inet_connection_sock.c
+++ b/net/ipv4/inet_connection_sock.c
@@ -333,7 +333,7 @@ struct dst_entry* inet_csk_route_req(struct sock *sk,
333 .dport = ireq->rmt_port } } }; 333 .dport = ireq->rmt_port } } };
334 334
335 security_req_classify_flow(req, &fl); 335 security_req_classify_flow(req, &fl);
336 if (ip_route_output_flow(&rt, &fl, sk, 0)) { 336 if (ip_route_output_flow(&init_net, &rt, &fl, sk, 0)) {
337 IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); 337 IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES);
338 return NULL; 338 return NULL;
339 } 339 }
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index 8950d18001f1..6d78e1d6b785 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -350,7 +350,7 @@ int ip_queue_xmit(struct sk_buff *skb, int ipfragok)
350 * itself out. 350 * itself out.
351 */ 351 */
352 security_sk_classify_flow(sk, &fl); 352 security_sk_classify_flow(sk, &fl);
353 if (ip_route_output_flow(&rt, &fl, sk, 0)) 353 if (ip_route_output_flow(&init_net, &rt, &fl, sk, 0))
354 goto no_route; 354 goto no_route;
355 } 355 }
356 sk_setup_caps(sk, &rt->u.dst); 356 sk_setup_caps(sk, &rt->u.dst);
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index 91a52184351d..85c08696abbe 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -558,7 +558,7 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
558 } 558 }
559 559
560 security_sk_classify_flow(sk, &fl); 560 security_sk_classify_flow(sk, &fl);
561 err = ip_route_output_flow(&rt, &fl, sk, 1); 561 err = ip_route_output_flow(&init_net, &rt, &fl, sk, 1);
562 } 562 }
563 if (err) 563 if (err)
564 goto done; 564 goto done;
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 971ab0253a09..c75fc20b07e2 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2533,11 +2533,12 @@ static int ipv4_dst_blackhole(struct rtable **rp, struct flowi *flp, struct sock
2533 return (rt ? 0 : -ENOMEM); 2533 return (rt ? 0 : -ENOMEM);
2534} 2534}
2535 2535
2536int ip_route_output_flow(struct rtable **rp, struct flowi *flp, struct sock *sk, int flags) 2536int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp,
2537 struct sock *sk, int flags)
2537{ 2538{
2538 int err; 2539 int err;
2539 2540
2540 if ((err = __ip_route_output_key(&init_net, rp, flp)) != 0) 2541 if ((err = __ip_route_output_key(net, rp, flp)) != 0)
2541 return err; 2542 return err;
2542 2543
2543 if (flp->proto) { 2544 if (flp->proto) {
@@ -2560,7 +2561,7 @@ EXPORT_SYMBOL_GPL(ip_route_output_flow);
2560 2561
2561int ip_route_output_key(struct rtable **rp, struct flowi *flp) 2562int ip_route_output_key(struct rtable **rp, struct flowi *flp)
2562{ 2563{
2563 return ip_route_output_flow(rp, flp, NULL, 0); 2564 return ip_route_output_flow(&init_net, rp, flp, NULL, 0);
2564} 2565}
2565 2566
2566static int rt_fill_info(struct sk_buff *skb, u32 pid, u32 seq, int event, 2567static int rt_fill_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index ecd9d91b30c6..2fb8d731026b 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -660,7 +660,7 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
660 { .sport = inet->sport, 660 { .sport = inet->sport,
661 .dport = dport } } }; 661 .dport = dport } } };
662 security_sk_classify_flow(sk, &fl); 662 security_sk_classify_flow(sk, &fl);
663 err = ip_route_output_flow(&rt, &fl, sk, 1); 663 err = ip_route_output_flow(&init_net, &rt, &fl, sk, 1);
664 if (err) { 664 if (err) {
665 if (err == -ENETUNREACH) 665 if (err == -ENETUNREACH)
666 IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); 666 IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES);