aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/af_inet.c
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2008-07-18 07:02:08 -0400
committerDavid S. Miller <davem@davemloft.net>2008-07-18 07:02:08 -0400
commit57ef42d59d1c1d79be59fc3c6380ae14234e38c3 (patch)
tree4ccc2166f6967ac1fb582715f7d7d5bb5c9205fc /net/ipv4/af_inet.c
parent9b4661bd6e5437508e0920608f3213c23212cd1b (diff)
mib: put tcp statistics on struct net
Proc temporary uses stats from init_net. BTW, TCP_XXX_STATS are beautiful (w/o do { } while (0) facing) again :) Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/af_inet.c')
-rw-r--r--net/ipv4/af_inet.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index b4b77aa07953..c1a3e986f8b4 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -1342,11 +1342,20 @@ static struct net_protocol icmp_protocol = {
1342 1342
1343static __net_init int ipv4_mib_init_net(struct net *net) 1343static __net_init int ipv4_mib_init_net(struct net *net)
1344{ 1344{
1345 if (snmp_mib_init((void **)net->mib.tcp_statistics,
1346 sizeof(struct tcp_mib)) < 0)
1347 goto err_tcp_mib;
1348
1349 tcp_mib_init(net);
1345 return 0; 1350 return 0;
1351
1352err_tcp_mib:
1353 return -ENOMEM;
1346} 1354}
1347 1355
1348static __net_exit void ipv4_mib_exit_net(struct net *net) 1356static __net_exit void ipv4_mib_exit_net(struct net *net)
1349{ 1357{
1358 snmp_mib_free((void **)net->mib.tcp_statistics);
1350} 1359}
1351 1360
1352static __net_initdata struct pernet_operations ipv4_mib_ops = { 1361static __net_initdata struct pernet_operations ipv4_mib_ops = {
@@ -1368,9 +1377,6 @@ static int __init init_ipv4_mibs(void)
1368 if (snmp_mib_init((void **)icmpmsg_statistics, 1377 if (snmp_mib_init((void **)icmpmsg_statistics,
1369 sizeof(struct icmpmsg_mib)) < 0) 1378 sizeof(struct icmpmsg_mib)) < 0)
1370 goto err_icmpmsg_mib; 1379 goto err_icmpmsg_mib;
1371 if (snmp_mib_init((void **)tcp_statistics,
1372 sizeof(struct tcp_mib)) < 0)
1373 goto err_tcp_mib;
1374 if (snmp_mib_init((void **)udp_statistics, 1380 if (snmp_mib_init((void **)udp_statistics,
1375 sizeof(struct udp_mib)) < 0) 1381 sizeof(struct udp_mib)) < 0)
1376 goto err_udp_mib; 1382 goto err_udp_mib;
@@ -1378,8 +1384,6 @@ static int __init init_ipv4_mibs(void)
1378 sizeof(struct udp_mib)) < 0) 1384 sizeof(struct udp_mib)) < 0)
1379 goto err_udplite_mib; 1385 goto err_udplite_mib;
1380 1386
1381 tcp_mib_init(&init_net);
1382
1383 if (register_pernet_subsys(&ipv4_mib_ops)) 1387 if (register_pernet_subsys(&ipv4_mib_ops))
1384 goto err_net; 1388 goto err_net;
1385 1389
@@ -1390,8 +1394,6 @@ err_net:
1390err_udplite_mib: 1394err_udplite_mib:
1391 snmp_mib_free((void **)udp_statistics); 1395 snmp_mib_free((void **)udp_statistics);
1392err_udp_mib: 1396err_udp_mib:
1393 snmp_mib_free((void **)tcp_statistics);
1394err_tcp_mib:
1395 snmp_mib_free((void **)icmpmsg_statistics); 1397 snmp_mib_free((void **)icmpmsg_statistics);
1396err_icmpmsg_mib: 1398err_icmpmsg_mib:
1397 snmp_mib_free((void **)icmp_statistics); 1399 snmp_mib_free((void **)icmp_statistics);