diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-07-18 07:04:02 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-18 07:04:02 -0400 |
commit | b60538a0d737609213e4b758881913498d3ff0b4 (patch) | |
tree | 380b75c744b9eb13b56fe386b58ddc2106686372 | |
parent | 386019d3514b3ed9de8d0b05b67e638a7048375b (diff) |
mib: put icmp statistics on struct net
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/icmp.h | 5 | ||||
-rw-r--r-- | include/net/netns/mib.h | 1 | ||||
-rw-r--r-- | net/ipv4/af_inet.c | 11 | ||||
-rw-r--r-- | net/ipv4/icmp.c | 2 | ||||
-rw-r--r-- | net/ipv4/proc.c | 8 |
5 files changed, 13 insertions, 14 deletions
diff --git a/include/net/icmp.h b/include/net/icmp.h index 03b9972b8754..e14f2c03f42e 100644 --- a/include/net/icmp.h +++ b/include/net/icmp.h | |||
@@ -29,10 +29,9 @@ struct icmp_err { | |||
29 | }; | 29 | }; |
30 | 30 | ||
31 | extern struct icmp_err icmp_err_convert[]; | 31 | extern struct icmp_err icmp_err_convert[]; |
32 | DECLARE_SNMP_STAT(struct icmp_mib, icmp_statistics); | ||
33 | DECLARE_SNMP_STAT(struct icmpmsg_mib, icmpmsg_statistics); | 32 | DECLARE_SNMP_STAT(struct icmpmsg_mib, icmpmsg_statistics); |
34 | #define ICMP_INC_STATS(net, field) SNMP_INC_STATS(icmp_statistics, field) | 33 | #define ICMP_INC_STATS(net, field) SNMP_INC_STATS((net)->mib.icmp_statistics, field) |
35 | #define ICMP_INC_STATS_BH(net, field) SNMP_INC_STATS_BH(icmp_statistics, field) | 34 | #define ICMP_INC_STATS_BH(net, field) SNMP_INC_STATS_BH((net)->mib.icmp_statistics, field) |
36 | #define ICMPMSGOUT_INC_STATS(net, field) SNMP_INC_STATS(icmpmsg_statistics, field+256) | 35 | #define ICMPMSGOUT_INC_STATS(net, field) SNMP_INC_STATS(icmpmsg_statistics, field+256) |
37 | #define ICMPMSGIN_INC_STATS_BH(net, field) SNMP_INC_STATS_BH(icmpmsg_statistics, field) | 36 | #define ICMPMSGIN_INC_STATS_BH(net, field) SNMP_INC_STATS_BH(icmpmsg_statistics, field) |
38 | 37 | ||
diff --git a/include/net/netns/mib.h b/include/net/netns/mib.h index 23e699fdb5cc..03f5abdf58e5 100644 --- a/include/net/netns/mib.h +++ b/include/net/netns/mib.h | |||
@@ -9,6 +9,7 @@ struct netns_mib { | |||
9 | DEFINE_SNMP_STAT(struct linux_mib, net_statistics); | 9 | DEFINE_SNMP_STAT(struct linux_mib, net_statistics); |
10 | DEFINE_SNMP_STAT(struct udp_mib, udp_statistics); | 10 | DEFINE_SNMP_STAT(struct udp_mib, udp_statistics); |
11 | DEFINE_SNMP_STAT(struct udp_mib, udplite_statistics); | 11 | DEFINE_SNMP_STAT(struct udp_mib, udplite_statistics); |
12 | DEFINE_SNMP_STAT(struct icmp_mib, icmp_statistics); | ||
12 | }; | 13 | }; |
13 | 14 | ||
14 | #endif | 15 | #endif |
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index bf1f200c6575..5c72bb3adadd 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c | |||
@@ -1355,10 +1355,15 @@ static __net_init int ipv4_mib_init_net(struct net *net) | |||
1355 | if (snmp_mib_init((void **)net->mib.udplite_statistics, | 1355 | if (snmp_mib_init((void **)net->mib.udplite_statistics, |
1356 | sizeof(struct udp_mib)) < 0) | 1356 | sizeof(struct udp_mib)) < 0) |
1357 | goto err_udplite_mib; | 1357 | goto err_udplite_mib; |
1358 | if (snmp_mib_init((void **)net->mib.icmp_statistics, | ||
1359 | sizeof(struct icmp_mib)) < 0) | ||
1360 | goto err_icmp_mib; | ||
1358 | 1361 | ||
1359 | tcp_mib_init(net); | 1362 | tcp_mib_init(net); |
1360 | return 0; | 1363 | return 0; |
1361 | 1364 | ||
1365 | err_icmp_mib: | ||
1366 | snmp_mib_free((void **)net->mib.udplite_statistics); | ||
1362 | err_udplite_mib: | 1367 | err_udplite_mib: |
1363 | snmp_mib_free((void **)net->mib.udp_statistics); | 1368 | snmp_mib_free((void **)net->mib.udp_statistics); |
1364 | err_udp_mib: | 1369 | err_udp_mib: |
@@ -1373,6 +1378,7 @@ err_tcp_mib: | |||
1373 | 1378 | ||
1374 | static __net_exit void ipv4_mib_exit_net(struct net *net) | 1379 | static __net_exit void ipv4_mib_exit_net(struct net *net) |
1375 | { | 1380 | { |
1381 | snmp_mib_free((void **)net->mib.icmp_statistics); | ||
1376 | snmp_mib_free((void **)net->mib.udplite_statistics); | 1382 | snmp_mib_free((void **)net->mib.udplite_statistics); |
1377 | snmp_mib_free((void **)net->mib.udp_statistics); | 1383 | snmp_mib_free((void **)net->mib.udp_statistics); |
1378 | snmp_mib_free((void **)net->mib.net_statistics); | 1384 | snmp_mib_free((void **)net->mib.net_statistics); |
@@ -1387,9 +1393,6 @@ static __net_initdata struct pernet_operations ipv4_mib_ops = { | |||
1387 | 1393 | ||
1388 | static int __init init_ipv4_mibs(void) | 1394 | static int __init init_ipv4_mibs(void) |
1389 | { | 1395 | { |
1390 | if (snmp_mib_init((void **)icmp_statistics, | ||
1391 | sizeof(struct icmp_mib)) < 0) | ||
1392 | goto err_icmp_mib; | ||
1393 | if (snmp_mib_init((void **)icmpmsg_statistics, | 1396 | if (snmp_mib_init((void **)icmpmsg_statistics, |
1394 | sizeof(struct icmpmsg_mib)) < 0) | 1397 | sizeof(struct icmpmsg_mib)) < 0) |
1395 | goto err_icmpmsg_mib; | 1398 | goto err_icmpmsg_mib; |
@@ -1402,8 +1405,6 @@ static int __init init_ipv4_mibs(void) | |||
1402 | err_net: | 1405 | err_net: |
1403 | snmp_mib_free((void **)icmpmsg_statistics); | 1406 | snmp_mib_free((void **)icmpmsg_statistics); |
1404 | err_icmpmsg_mib: | 1407 | err_icmpmsg_mib: |
1405 | snmp_mib_free((void **)icmp_statistics); | ||
1406 | err_icmp_mib: | ||
1407 | return -ENOMEM; | 1408 | return -ENOMEM; |
1408 | } | 1409 | } |
1409 | 1410 | ||
diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index ea60ad41008c..33f958902d9b 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c | |||
@@ -114,7 +114,6 @@ struct icmp_bxm { | |||
114 | /* | 114 | /* |
115 | * Statistics | 115 | * Statistics |
116 | */ | 116 | */ |
117 | DEFINE_SNMP_STAT(struct icmp_mib, icmp_statistics) __read_mostly; | ||
118 | DEFINE_SNMP_STAT(struct icmpmsg_mib, icmpmsg_statistics) __read_mostly; | 117 | DEFINE_SNMP_STAT(struct icmpmsg_mib, icmpmsg_statistics) __read_mostly; |
119 | 118 | ||
120 | /* An array of errno for error messages from dest unreach. */ | 119 | /* An array of errno for error messages from dest unreach. */ |
@@ -1213,5 +1212,4 @@ int __init icmp_init(void) | |||
1213 | 1212 | ||
1214 | EXPORT_SYMBOL(icmp_err_convert); | 1213 | EXPORT_SYMBOL(icmp_err_convert); |
1215 | EXPORT_SYMBOL(icmp_send); | 1214 | EXPORT_SYMBOL(icmp_send); |
1216 | EXPORT_SYMBOL(icmp_statistics); | ||
1217 | EXPORT_SYMBOL(xrlim_allow); | 1215 | EXPORT_SYMBOL(xrlim_allow); |
diff --git a/net/ipv4/proc.c b/net/ipv4/proc.c index 765418334b3c..6b43cce05587 100644 --- a/net/ipv4/proc.c +++ b/net/ipv4/proc.c | |||
@@ -311,15 +311,15 @@ static void icmp_put(struct seq_file *seq) | |||
311 | for (i=0; icmpmibmap[i].name != NULL; i++) | 311 | for (i=0; icmpmibmap[i].name != NULL; i++) |
312 | seq_printf(seq, " Out%s", icmpmibmap[i].name); | 312 | seq_printf(seq, " Out%s", icmpmibmap[i].name); |
313 | seq_printf(seq, "\nIcmp: %lu %lu", | 313 | seq_printf(seq, "\nIcmp: %lu %lu", |
314 | snmp_fold_field((void **) icmp_statistics, ICMP_MIB_INMSGS), | 314 | snmp_fold_field((void **) init_net.mib.icmp_statistics, ICMP_MIB_INMSGS), |
315 | snmp_fold_field((void **) icmp_statistics, ICMP_MIB_INERRORS)); | 315 | snmp_fold_field((void **) init_net.mib.icmp_statistics, ICMP_MIB_INERRORS)); |
316 | for (i=0; icmpmibmap[i].name != NULL; i++) | 316 | for (i=0; icmpmibmap[i].name != NULL; i++) |
317 | seq_printf(seq, " %lu", | 317 | seq_printf(seq, " %lu", |
318 | snmp_fold_field((void **) icmpmsg_statistics, | 318 | snmp_fold_field((void **) icmpmsg_statistics, |
319 | icmpmibmap[i].index)); | 319 | icmpmibmap[i].index)); |
320 | seq_printf(seq, " %lu %lu", | 320 | seq_printf(seq, " %lu %lu", |
321 | snmp_fold_field((void **) icmp_statistics, ICMP_MIB_OUTMSGS), | 321 | snmp_fold_field((void **) init_net.mib.icmp_statistics, ICMP_MIB_OUTMSGS), |
322 | snmp_fold_field((void **) icmp_statistics, ICMP_MIB_OUTERRORS)); | 322 | snmp_fold_field((void **) init_net.mib.icmp_statistics, ICMP_MIB_OUTERRORS)); |
323 | for (i=0; icmpmibmap[i].name != NULL; i++) | 323 | for (i=0; icmpmibmap[i].name != NULL; i++) |
324 | seq_printf(seq, " %lu", | 324 | seq_printf(seq, " %lu", |
325 | snmp_fold_field((void **) icmpmsg_statistics, | 325 | snmp_fold_field((void **) icmpmsg_statistics, |