Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mib: put icmpmsg statistics on struct net

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Pavel Emelyanov and committed by
David S. Miller
923c6586 b60538a0

+14 -19
+2 -3
include/net/icmp.h
··· 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;
+1
include/net/netns/mib.h
··· 10 10 DEFINE_SNMP_STAT(struct udp_mib, udp_statistics); 11 11 DEFINE_SNMP_STAT(struct udp_mib, udplite_statistics); 12 12 DEFINE_SNMP_STAT(struct icmp_mib, icmp_statistics); 13 + DEFINE_SNMP_STAT(struct icmpmsg_mib, icmpmsg_statistics); 13 14 }; 14 15 15 16 #endif
+6 -6
net/ipv4/af_inet.c
··· 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: ··· 1383 1378 1384 1379 static __net_exit void ipv4_mib_exit_net(struct net *net) 1385 1380 { 1381 + snmp_mib_free((void **)net->mib.icmpmsg_statistics); 1386 1382 snmp_mib_free((void **)net->mib.icmp_statistics); 1387 1383 snmp_mib_free((void **)net->mib.udplite_statistics); 1388 1384 snmp_mib_free((void **)net->mib.udp_statistics); ··· 1399 1393 1400 1394 static int __init init_ipv4_mibs(void) 1401 1395 { 1402 - if (snmp_mib_init((void **)icmpmsg_statistics, 1403 - sizeof(struct icmpmsg_mib)) < 0) 1404 - goto err_icmpmsg_mib; 1405 - 1406 1396 if (register_pernet_subsys(&ipv4_mib_ops)) 1407 1397 goto err_net; 1408 1398 1409 1399 return 0; 1410 1400 1411 1401 err_net: 1412 - snmp_mib_free((void **)icmpmsg_statistics); 1413 - err_icmpmsg_mib: 1414 1402 return -ENOMEM; 1415 1403 } 1416 1404
-5
net/ipv4/icmp.c
··· 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
+5 -5
net/ipv4/proc.c
··· 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 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 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 ··· 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