diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-07-16 23:19:08 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-16 23:19:08 -0400 |
commit | 84a3aa000eacbaf841d745b07ef3a3280899056b (patch) | |
tree | 013d13bb51e1046f6864ae634edaf0dad30da2e7 | |
parent | 78ed11a56bd8679aa6d51eb36b448342c59a7824 (diff) |
ipv4: prepare net initialization for IP accounting
Some places, that deal with IP statistics already have where to
get a struct net from, but use it directly, without declaring
a separate variable on the stack.
So, save this net on the stack for future IP_XXX_STATS macros.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/ipv4/inet_connection_sock.c | 3 | ||||
-rw-r--r-- | net/ipv4/ip_fragment.c | 6 | ||||
-rw-r--r-- | net/ipv4/udp.c | 4 |
3 files changed, 8 insertions, 5 deletions
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c index 5bbf00051512..8338e1066654 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c | |||
@@ -338,9 +338,10 @@ struct dst_entry* inet_csk_route_req(struct sock *sk, | |||
338 | .uli_u = { .ports = | 338 | .uli_u = { .ports = |
339 | { .sport = inet_sk(sk)->sport, | 339 | { .sport = inet_sk(sk)->sport, |
340 | .dport = ireq->rmt_port } } }; | 340 | .dport = ireq->rmt_port } } }; |
341 | struct net *net = sock_net(sk); | ||
341 | 342 | ||
342 | security_req_classify_flow(req, &fl); | 343 | security_req_classify_flow(req, &fl); |
343 | if (ip_route_output_flow(sock_net(sk), &rt, &fl, sk, 0)) { | 344 | if (ip_route_output_flow(net, &rt, &fl, sk, 0)) { |
344 | IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); | 345 | IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); |
345 | return NULL; | 346 | return NULL; |
346 | } | 347 | } |
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c index fbd5804b5d83..e23be5b36e1d 100644 --- a/net/ipv4/ip_fragment.c +++ b/net/ipv4/ip_fragment.c | |||
@@ -187,8 +187,10 @@ static void ip_evictor(struct net *net) | |||
187 | static void ip_expire(unsigned long arg) | 187 | static void ip_expire(unsigned long arg) |
188 | { | 188 | { |
189 | struct ipq *qp; | 189 | struct ipq *qp; |
190 | struct net *net; | ||
190 | 191 | ||
191 | qp = container_of((struct inet_frag_queue *) arg, struct ipq, q); | 192 | qp = container_of((struct inet_frag_queue *) arg, struct ipq, q); |
193 | net = container_of(qp->q.net, struct net, ipv4.frags); | ||
192 | 194 | ||
193 | spin_lock(&qp->q.lock); | 195 | spin_lock(&qp->q.lock); |
194 | 196 | ||
@@ -202,9 +204,7 @@ static void ip_expire(unsigned long arg) | |||
202 | 204 | ||
203 | if ((qp->q.last_in & INET_FRAG_FIRST_IN) && qp->q.fragments != NULL) { | 205 | if ((qp->q.last_in & INET_FRAG_FIRST_IN) && qp->q.fragments != NULL) { |
204 | struct sk_buff *head = qp->q.fragments; | 206 | struct sk_buff *head = qp->q.fragments; |
205 | struct net *net; | ||
206 | 207 | ||
207 | net = container_of(qp->q.net, struct net, ipv4.frags); | ||
208 | /* Send an ICMP "Fragment Reassembly Timeout" message. */ | 208 | /* Send an ICMP "Fragment Reassembly Timeout" message. */ |
209 | if ((head->dev = dev_get_by_index(net, qp->iif)) != NULL) { | 209 | if ((head->dev = dev_get_by_index(net, qp->iif)) != NULL) { |
210 | icmp_send(head, ICMP_TIME_EXCEEDED, ICMP_EXC_FRAGTIME, 0); | 210 | icmp_send(head, ICMP_TIME_EXCEEDED, ICMP_EXC_FRAGTIME, 0); |
@@ -570,9 +570,9 @@ int ip_defrag(struct sk_buff *skb, u32 user) | |||
570 | struct ipq *qp; | 570 | struct ipq *qp; |
571 | struct net *net; | 571 | struct net *net; |
572 | 572 | ||
573 | net = skb->dev ? dev_net(skb->dev) : dev_net(skb->dst->dev); | ||
573 | IP_INC_STATS_BH(IPSTATS_MIB_REASMREQDS); | 574 | IP_INC_STATS_BH(IPSTATS_MIB_REASMREQDS); |
574 | 575 | ||
575 | net = skb->dev ? dev_net(skb->dev) : dev_net(skb->dst->dev); | ||
576 | /* Start by cleaning up the memory. */ | 576 | /* Start by cleaning up the memory. */ |
577 | if (atomic_read(&net->ipv4.frags.mem) > net->ipv4.frags.high_thresh) | 577 | if (atomic_read(&net->ipv4.frags.mem) > net->ipv4.frags.high_thresh) |
578 | ip_evictor(net); | 578 | ip_evictor(net); |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index fdd4faa1f120..048ef57edc1d 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -656,8 +656,10 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
656 | .uli_u = { .ports = | 656 | .uli_u = { .ports = |
657 | { .sport = inet->sport, | 657 | { .sport = inet->sport, |
658 | .dport = dport } } }; | 658 | .dport = dport } } }; |
659 | struct net *net = sock_net(sk); | ||
660 | |||
659 | security_sk_classify_flow(sk, &fl); | 661 | security_sk_classify_flow(sk, &fl); |
660 | err = ip_route_output_flow(sock_net(sk), &rt, &fl, sk, 1); | 662 | err = ip_route_output_flow(net, &rt, &fl, sk, 1); |
661 | if (err) { | 663 | if (err) { |
662 | if (err == -ENETUNREACH) | 664 | if (err == -ENETUNREACH) |
663 | IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); | 665 | IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); |