Commit 923c6586b0dc0a00df07a1608185437145a0c68b
Committed by
David S. Miller
1 parent
b60538a0d7
Exists in
master
and in
39 other branches
mib: put icmpmsg statistics on struct net
Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 5 changed files with 14 additions and 19 deletions Side-by-side Diff
include/net/icmp.h
... | ... | @@ -29,11 +29,10 @@ |
29 | 29 | }; |
30 | 30 | |
31 | 31 | extern struct icmp_err icmp_err_convert[]; |
32 | -DECLARE_SNMP_STAT(struct icmpmsg_mib, icmpmsg_statistics); | |
33 | 32 | #define ICMP_INC_STATS(net, field) SNMP_INC_STATS((net)->mib.icmp_statistics, field) |
34 | 33 | #define ICMP_INC_STATS_BH(net, field) SNMP_INC_STATS_BH((net)->mib.icmp_statistics, field) |
35 | -#define ICMPMSGOUT_INC_STATS(net, field) SNMP_INC_STATS(icmpmsg_statistics, field+256) | |
36 | -#define ICMPMSGIN_INC_STATS_BH(net, field) SNMP_INC_STATS_BH(icmpmsg_statistics, field) | |
34 | +#define ICMPMSGOUT_INC_STATS(net, field) SNMP_INC_STATS((net)->mib.icmpmsg_statistics, field+256) | |
35 | +#define ICMPMSGIN_INC_STATS_BH(net, field) SNMP_INC_STATS_BH((net)->mib.icmpmsg_statistics, field) | |
37 | 36 | |
38 | 37 | struct dst_entry; |
39 | 38 | struct net_proto_family; |
include/net/netns/mib.h
net/ipv4/af_inet.c
... | ... | @@ -1358,10 +1358,15 @@ |
1358 | 1358 | if (snmp_mib_init((void **)net->mib.icmp_statistics, |
1359 | 1359 | sizeof(struct icmp_mib)) < 0) |
1360 | 1360 | goto err_icmp_mib; |
1361 | + if (snmp_mib_init((void **)net->mib.icmpmsg_statistics, | |
1362 | + sizeof(struct icmpmsg_mib)) < 0) | |
1363 | + goto err_icmpmsg_mib; | |
1361 | 1364 | |
1362 | 1365 | tcp_mib_init(net); |
1363 | 1366 | return 0; |
1364 | 1367 | |
1368 | +err_icmpmsg_mib: | |
1369 | + snmp_mib_free((void **)net->mib.icmp_statistics); | |
1365 | 1370 | err_icmp_mib: |
1366 | 1371 | snmp_mib_free((void **)net->mib.udplite_statistics); |
1367 | 1372 | err_udplite_mib: |
... | ... | @@ -1378,6 +1383,7 @@ |
1378 | 1383 | |
1379 | 1384 | static __net_exit void ipv4_mib_exit_net(struct net *net) |
1380 | 1385 | { |
1386 | + snmp_mib_free((void **)net->mib.icmpmsg_statistics); | |
1381 | 1387 | snmp_mib_free((void **)net->mib.icmp_statistics); |
1382 | 1388 | snmp_mib_free((void **)net->mib.udplite_statistics); |
1383 | 1389 | snmp_mib_free((void **)net->mib.udp_statistics); |
1384 | 1390 | |
... | ... | @@ -1393,18 +1399,12 @@ |
1393 | 1399 | |
1394 | 1400 | static int __init init_ipv4_mibs(void) |
1395 | 1401 | { |
1396 | - if (snmp_mib_init((void **)icmpmsg_statistics, | |
1397 | - sizeof(struct icmpmsg_mib)) < 0) | |
1398 | - goto err_icmpmsg_mib; | |
1399 | - | |
1400 | 1402 | if (register_pernet_subsys(&ipv4_mib_ops)) |
1401 | 1403 | goto err_net; |
1402 | 1404 | |
1403 | 1405 | return 0; |
1404 | 1406 | |
1405 | 1407 | err_net: |
1406 | - snmp_mib_free((void **)icmpmsg_statistics); | |
1407 | -err_icmpmsg_mib: | |
1408 | 1408 | return -ENOMEM; |
1409 | 1409 | } |
1410 | 1410 |
net/ipv4/icmp.c
... | ... | @@ -111,11 +111,6 @@ |
111 | 111 | unsigned char optbuf[40]; |
112 | 112 | }; |
113 | 113 | |
114 | -/* | |
115 | - * Statistics | |
116 | - */ | |
117 | -DEFINE_SNMP_STAT(struct icmpmsg_mib, icmpmsg_statistics) __read_mostly; | |
118 | - | |
119 | 114 | /* An array of errno for error messages from dest unreach. */ |
120 | 115 | /* RFC 1122: 3.2.2.1 States that NET_UNREACH, HOST_UNREACH and SR_FAILED MUST be considered 'transient errs'. */ |
121 | 116 |
net/ipv4/proc.c
... | ... | @@ -270,7 +270,7 @@ |
270 | 270 | count = 0; |
271 | 271 | for (i = 0; i < ICMPMSG_MIB_MAX; i++) { |
272 | 272 | |
273 | - if (snmp_fold_field((void **) icmpmsg_statistics, i)) | |
273 | + if (snmp_fold_field((void **) init_net.mib.icmpmsg_statistics, i)) | |
274 | 274 | out[count++] = i; |
275 | 275 | if (count < PERLINE) |
276 | 276 | continue; |
... | ... | @@ -282,7 +282,7 @@ |
282 | 282 | seq_printf(seq, "\nIcmpMsg: "); |
283 | 283 | for (j = 0; j < PERLINE; ++j) |
284 | 284 | seq_printf(seq, " %lu", |
285 | - snmp_fold_field((void **) icmpmsg_statistics, | |
285 | + snmp_fold_field((void **) init_net.mib.icmpmsg_statistics, | |
286 | 286 | out[j])); |
287 | 287 | seq_putc(seq, '\n'); |
288 | 288 | } |
... | ... | @@ -294,7 +294,7 @@ |
294 | 294 | seq_printf(seq, "\nIcmpMsg:"); |
295 | 295 | for (j = 0; j < count; ++j) |
296 | 296 | seq_printf(seq, " %lu", snmp_fold_field((void **) |
297 | - icmpmsg_statistics, out[j])); | |
297 | + init_net.mib.icmpmsg_statistics, out[j])); | |
298 | 298 | } |
299 | 299 | |
300 | 300 | #undef PERLINE |
301 | 301 | |
... | ... | @@ -315,14 +315,14 @@ |
315 | 315 | snmp_fold_field((void **) init_net.mib.icmp_statistics, ICMP_MIB_INERRORS)); |
316 | 316 | for (i=0; icmpmibmap[i].name != NULL; i++) |
317 | 317 | seq_printf(seq, " %lu", |
318 | - snmp_fold_field((void **) icmpmsg_statistics, | |
318 | + snmp_fold_field((void **) init_net.mib.icmpmsg_statistics, | |
319 | 319 | icmpmibmap[i].index)); |
320 | 320 | seq_printf(seq, " %lu %lu", |
321 | 321 | snmp_fold_field((void **) init_net.mib.icmp_statistics, ICMP_MIB_OUTMSGS), |
322 | 322 | snmp_fold_field((void **) init_net.mib.icmp_statistics, ICMP_MIB_OUTERRORS)); |
323 | 323 | for (i=0; icmpmibmap[i].name != NULL; i++) |
324 | 324 | seq_printf(seq, " %lu", |
325 | - snmp_fold_field((void **) icmpmsg_statistics, | |
325 | + snmp_fold_field((void **) init_net.mib.icmpmsg_statistics, | |
326 | 326 | icmpmibmap[i].index | 0x100)); |
327 | 327 | } |
328 | 328 |