Commit 7c73a6faffae0bfae70639113aecf06af666e714
Committed by
David S. Miller
1 parent
5e38e27044
Exists in
master
and in
39 other branches
mib: add net to IP_INC_STATS_BH
Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 12 changed files with 41 additions and 34 deletions Side-by-side Diff
include/net/ip.h
... | ... | @@ -158,7 +158,7 @@ |
158 | 158 | extern struct ipv4_config ipv4_config; |
159 | 159 | DECLARE_SNMP_STAT(struct ipstats_mib, ip_statistics); |
160 | 160 | #define IP_INC_STATS(net, field) do { (void)net; SNMP_INC_STATS(ip_statistics, field); } while (0) |
161 | -#define IP_INC_STATS_BH(field) SNMP_INC_STATS_BH(ip_statistics, field) | |
161 | +#define IP_INC_STATS_BH(net, field) do { (void)net; SNMP_INC_STATS_BH(ip_statistics, field); } while (0) | |
162 | 162 | #define IP_ADD_STATS_BH(field, val) SNMP_ADD_STATS_BH(ip_statistics, field, val) |
163 | 163 | DECLARE_SNMP_STAT(struct linux_mib, net_statistics); |
164 | 164 | #define NET_INC_STATS(field) SNMP_INC_STATS(net_statistics, field) |
net/dccp/ipv4.c
net/ipv4/datagram.c
net/ipv4/inet_connection_sock.c
... | ... | @@ -342,12 +342,12 @@ |
342 | 342 | |
343 | 343 | security_req_classify_flow(req, &fl); |
344 | 344 | if (ip_route_output_flow(net, &rt, &fl, sk, 0)) { |
345 | - IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); | |
345 | + IP_INC_STATS_BH(net, IPSTATS_MIB_OUTNOROUTES); | |
346 | 346 | return NULL; |
347 | 347 | } |
348 | 348 | if (opt && opt->is_strictroute && rt->rt_dst != rt->rt_gateway) { |
349 | 349 | ip_rt_put(rt); |
350 | - IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); | |
350 | + IP_INC_STATS_BH(net, IPSTATS_MIB_OUTNOROUTES); | |
351 | 351 | return NULL; |
352 | 352 | } |
353 | 353 | return &rt->u.dst; |
net/ipv4/ip_forward.c
... | ... | @@ -42,7 +42,7 @@ |
42 | 42 | { |
43 | 43 | struct ip_options * opt = &(IPCB(skb)->opt); |
44 | 44 | |
45 | - IP_INC_STATS_BH(IPSTATS_MIB_OUTFORWDATAGRAMS); | |
45 | + IP_INC_STATS_BH(dev_net(skb->dst->dev), IPSTATS_MIB_OUTFORWDATAGRAMS); | |
46 | 46 | |
47 | 47 | if (unlikely(opt->optlen)) |
48 | 48 | ip_forward_options(skb); |
... | ... | @@ -123,7 +123,7 @@ |
123 | 123 | |
124 | 124 | too_many_hops: |
125 | 125 | /* Tell the sender its packet died... */ |
126 | - IP_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); | |
126 | + IP_INC_STATS_BH(dev_net(skb->dst->dev), IPSTATS_MIB_INHDRERRORS); | |
127 | 127 | icmp_send(skb, ICMP_TIME_EXCEEDED, ICMP_EXC_TTL, 0); |
128 | 128 | drop: |
129 | 129 | kfree_skb(skb); |
net/ipv4/ip_fragment.c
... | ... | @@ -199,8 +199,8 @@ |
199 | 199 | |
200 | 200 | ipq_kill(qp); |
201 | 201 | |
202 | - IP_INC_STATS_BH(IPSTATS_MIB_REASMTIMEOUT); | |
203 | - IP_INC_STATS_BH(IPSTATS_MIB_REASMFAILS); | |
202 | + IP_INC_STATS_BH(net, IPSTATS_MIB_REASMTIMEOUT); | |
203 | + IP_INC_STATS_BH(net, IPSTATS_MIB_REASMFAILS); | |
204 | 204 | |
205 | 205 | if ((qp->q.last_in & INET_FRAG_FIRST_IN) && qp->q.fragments != NULL) { |
206 | 206 | struct sk_buff *head = qp->q.fragments; |
... | ... | @@ -261,7 +261,10 @@ |
261 | 261 | rc = qp->q.fragments && (end - start) > max; |
262 | 262 | |
263 | 263 | if (rc) { |
264 | - IP_INC_STATS_BH(IPSTATS_MIB_REASMFAILS); | |
264 | + struct net *net; | |
265 | + | |
266 | + net = container_of(qp->q.net, struct net, ipv4.frags); | |
267 | + IP_INC_STATS_BH(net, IPSTATS_MIB_REASMFAILS); | |
265 | 268 | } |
266 | 269 | |
267 | 270 | return rc; |
... | ... | @@ -545,7 +548,7 @@ |
545 | 548 | iph = ip_hdr(head); |
546 | 549 | iph->frag_off = 0; |
547 | 550 | iph->tot_len = htons(len); |
548 | - IP_INC_STATS_BH(IPSTATS_MIB_REASMOKS); | |
551 | + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_REASMOKS); | |
549 | 552 | qp->q.fragments = NULL; |
550 | 553 | return 0; |
551 | 554 | |
... | ... | @@ -560,7 +563,7 @@ |
560 | 563 | "Oversized IP packet from " NIPQUAD_FMT ".\n", |
561 | 564 | NIPQUAD(qp->saddr)); |
562 | 565 | out_fail: |
563 | - IP_INC_STATS_BH(IPSTATS_MIB_REASMFAILS); | |
566 | + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_REASMFAILS); | |
564 | 567 | return err; |
565 | 568 | } |
566 | 569 | |
... | ... | @@ -571,7 +574,7 @@ |
571 | 574 | struct net *net; |
572 | 575 | |
573 | 576 | net = skb->dev ? dev_net(skb->dev) : dev_net(skb->dst->dev); |
574 | - IP_INC_STATS_BH(IPSTATS_MIB_REASMREQDS); | |
577 | + IP_INC_STATS_BH(net, IPSTATS_MIB_REASMREQDS); | |
575 | 578 | |
576 | 579 | /* Start by cleaning up the memory. */ |
577 | 580 | if (atomic_read(&net->ipv4.frags.mem) > net->ipv4.frags.high_thresh) |
... | ... | @@ -590,7 +593,7 @@ |
590 | 593 | return ret; |
591 | 594 | } |
592 | 595 | |
593 | - IP_INC_STATS_BH(IPSTATS_MIB_REASMFAILS); | |
596 | + IP_INC_STATS_BH(net, IPSTATS_MIB_REASMFAILS); | |
594 | 597 | kfree_skb(skb); |
595 | 598 | return -ENOMEM; |
596 | 599 | } |
net/ipv4/ip_input.c
... | ... | @@ -230,16 +230,16 @@ |
230 | 230 | protocol = -ret; |
231 | 231 | goto resubmit; |
232 | 232 | } |
233 | - IP_INC_STATS_BH(IPSTATS_MIB_INDELIVERS); | |
233 | + IP_INC_STATS_BH(net, IPSTATS_MIB_INDELIVERS); | |
234 | 234 | } else { |
235 | 235 | if (!raw) { |
236 | 236 | if (xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) { |
237 | - IP_INC_STATS_BH(IPSTATS_MIB_INUNKNOWNPROTOS); | |
237 | + IP_INC_STATS_BH(net, IPSTATS_MIB_INUNKNOWNPROTOS); | |
238 | 238 | icmp_send(skb, ICMP_DEST_UNREACH, |
239 | 239 | ICMP_PROT_UNREACH, 0); |
240 | 240 | } |
241 | 241 | } else |
242 | - IP_INC_STATS_BH(IPSTATS_MIB_INDELIVERS); | |
242 | + IP_INC_STATS_BH(net, IPSTATS_MIB_INDELIVERS); | |
243 | 243 | kfree_skb(skb); |
244 | 244 | } |
245 | 245 | } |
... | ... | @@ -281,7 +281,7 @@ |
281 | 281 | --ANK (980813) |
282 | 282 | */ |
283 | 283 | if (skb_cow(skb, skb_headroom(skb))) { |
284 | - IP_INC_STATS_BH(IPSTATS_MIB_INDISCARDS); | |
284 | + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INDISCARDS); | |
285 | 285 | goto drop; |
286 | 286 | } |
287 | 287 | |
... | ... | @@ -290,7 +290,7 @@ |
290 | 290 | opt->optlen = iph->ihl*4 - sizeof(struct iphdr); |
291 | 291 | |
292 | 292 | if (ip_options_compile(dev_net(dev), opt, skb)) { |
293 | - IP_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); | |
293 | + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INHDRERRORS); | |
294 | 294 | goto drop; |
295 | 295 | } |
296 | 296 | |
297 | 297 | |
... | ... | @@ -334,9 +334,11 @@ |
334 | 334 | skb->dev); |
335 | 335 | if (unlikely(err)) { |
336 | 336 | if (err == -EHOSTUNREACH) |
337 | - IP_INC_STATS_BH(IPSTATS_MIB_INADDRERRORS); | |
337 | + IP_INC_STATS_BH(dev_net(skb->dev), | |
338 | + IPSTATS_MIB_INADDRERRORS); | |
338 | 339 | else if (err == -ENETUNREACH) |
339 | - IP_INC_STATS_BH(IPSTATS_MIB_INNOROUTES); | |
340 | + IP_INC_STATS_BH(dev_net(skb->dev), | |
341 | + IPSTATS_MIB_INNOROUTES); | |
340 | 342 | goto drop; |
341 | 343 | } |
342 | 344 | } |
343 | 345 | |
... | ... | @@ -357,9 +359,9 @@ |
357 | 359 | |
358 | 360 | rt = skb->rtable; |
359 | 361 | if (rt->rt_type == RTN_MULTICAST) |
360 | - IP_INC_STATS_BH(IPSTATS_MIB_INMCASTPKTS); | |
362 | + IP_INC_STATS_BH(dev_net(rt->u.dst.dev), IPSTATS_MIB_INMCASTPKTS); | |
361 | 363 | else if (rt->rt_type == RTN_BROADCAST) |
362 | - IP_INC_STATS_BH(IPSTATS_MIB_INBCASTPKTS); | |
364 | + IP_INC_STATS_BH(dev_net(rt->u.dst.dev), IPSTATS_MIB_INBCASTPKTS); | |
363 | 365 | |
364 | 366 | return dst_input(skb); |
365 | 367 | |
366 | 368 | |
... | ... | @@ -382,10 +384,10 @@ |
382 | 384 | if (skb->pkt_type == PACKET_OTHERHOST) |
383 | 385 | goto drop; |
384 | 386 | |
385 | - IP_INC_STATS_BH(IPSTATS_MIB_INRECEIVES); | |
387 | + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INRECEIVES); | |
386 | 388 | |
387 | 389 | if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) { |
388 | - IP_INC_STATS_BH(IPSTATS_MIB_INDISCARDS); | |
390 | + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INDISCARDS); | |
389 | 391 | goto out; |
390 | 392 | } |
391 | 393 | |
... | ... | @@ -418,7 +420,7 @@ |
418 | 420 | |
419 | 421 | len = ntohs(iph->tot_len); |
420 | 422 | if (skb->len < len) { |
421 | - IP_INC_STATS_BH(IPSTATS_MIB_INTRUNCATEDPKTS); | |
423 | + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INTRUNCATEDPKTS); | |
422 | 424 | goto drop; |
423 | 425 | } else if (len < (iph->ihl*4)) |
424 | 426 | goto inhdr_error; |
... | ... | @@ -428,7 +430,7 @@ |
428 | 430 | * Note this now means skb->len holds ntohs(iph->tot_len). |
429 | 431 | */ |
430 | 432 | if (pskb_trim_rcsum(skb, len)) { |
431 | - IP_INC_STATS_BH(IPSTATS_MIB_INDISCARDS); | |
433 | + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INDISCARDS); | |
432 | 434 | goto drop; |
433 | 435 | } |
434 | 436 | |
... | ... | @@ -439,7 +441,7 @@ |
439 | 441 | ip_rcv_finish); |
440 | 442 | |
441 | 443 | inhdr_error: |
442 | - IP_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); | |
444 | + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INHDRERRORS); | |
443 | 445 | drop: |
444 | 446 | kfree_skb(skb); |
445 | 447 | out: |
net/ipv4/ipmr.c
... | ... | @@ -1178,7 +1178,7 @@ |
1178 | 1178 | { |
1179 | 1179 | struct ip_options * opt = &(IPCB(skb)->opt); |
1180 | 1180 | |
1181 | - IP_INC_STATS_BH(IPSTATS_MIB_OUTFORWDATAGRAMS); | |
1181 | + IP_INC_STATS_BH(dev_net(skb->dst->dev), IPSTATS_MIB_OUTFORWDATAGRAMS); | |
1182 | 1182 | |
1183 | 1183 | if (unlikely(opt->optlen)) |
1184 | 1184 | ip_forward_options(skb); |
... | ... | @@ -1241,7 +1241,7 @@ |
1241 | 1241 | to blackhole. |
1242 | 1242 | */ |
1243 | 1243 | |
1244 | - IP_INC_STATS_BH(IPSTATS_MIB_FRAGFAILS); | |
1244 | + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_FRAGFAILS); | |
1245 | 1245 | ip_rt_put(rt); |
1246 | 1246 | goto out_free; |
1247 | 1247 | } |
net/ipv4/route.c
... | ... | @@ -1429,7 +1429,8 @@ |
1429 | 1429 | break; |
1430 | 1430 | case ENETUNREACH: |
1431 | 1431 | code = ICMP_NET_UNREACH; |
1432 | - IP_INC_STATS_BH(IPSTATS_MIB_INNOROUTES); | |
1432 | + IP_INC_STATS_BH(dev_net(rt->u.dst.dev), | |
1433 | + IPSTATS_MIB_INNOROUTES); | |
1433 | 1434 | break; |
1434 | 1435 | case EACCES: |
1435 | 1436 | code = ICMP_PKT_FILTERED; |
net/ipv4/tcp_ipv4.c
net/ipv4/udp.c
net/sctp/output.c
... | ... | @@ -50,6 +50,7 @@ |
50 | 50 | #include <linux/init.h> |
51 | 51 | #include <net/inet_ecn.h> |
52 | 52 | #include <net/icmp.h> |
53 | +#include <net/net_namespace.h> | |
53 | 54 | |
54 | 55 | #ifndef TEST_FRAME |
55 | 56 | #include <net/tcp.h> |
... | ... | @@ -595,7 +596,7 @@ |
595 | 596 | return err; |
596 | 597 | no_route: |
597 | 598 | kfree_skb(nskb); |
598 | - IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); | |
599 | + IP_INC_STATS_BH(&init_net, IPSTATS_MIB_OUTNOROUTES); | |
599 | 600 | |
600 | 601 | /* FIXME: Returning the 'err' will effect all the associations |
601 | 602 | * associated with a socket, although only one of the paths of the |