On Thu, 03 May 2007 03:15:46 -0700 (PDT) David Miller <[EMAIL PROTECTED]> wrote:
> From: Mitsuru Chinen <[EMAIL PROTECTED]> > Date: Wed, 2 May 2007 10:05:13 +0900 > > > [IPV4] SNMP: Display new statistics at /proc/net/netstat > > > > This displays the statistics specified in the updated IP-MIB RFC > > (RFC4293) in /proc/net/netstat. The reason why these are not added > > to /proc/net/snmp is that some existing utilities are developed under > > the assumption that ipstat items in /proc/net/snmp is unchanged. > > > > Signed-off-by: Mitsuru Chinen <[EMAIL PROTECTED]> > > Magic constant "17" is not the best, somebody will break this > next time this table it touched. > > Why not use another sentinel, or something like that, to mark > the entry groups? Excuse me, but I can't catch why this magic constant is not good. When we don't increase the number of entries in /proc/net/snmp, I think the start number of new entries which is displayed in /proc/net/netstat would be fixed value. I came up with an idea in order to reduce the patch size. But it still has a magic constant which points to the start of new entries. If such a magic constant is not acceptable, I will create another patch based on this. It will skip the exiting entry by for() loop: | @@ -348,11 +348,13 @@ static int netstat_seq_show(struct seq_f | snmp4_net_list[i].entry)); | | seq_puts(seq, "\nIpExt:"); | - for (i = IPSTATS_RFC4293_START; snmp4_ipstats_list[i].name != NULL; i++) | + for (i = 0; snmp4_ipstats_list[i].name != NULL; i++); | + for (i++; snmp4_ipstats_list[i].name != NULL; i++) | seq_printf(seq, " %s", snmp4_ipstats_list[i].name); I think it will cost a bit. Is it acceptable? [IPV4] SNMP: Display new statistics at /proc/net/netstat This displays the statistics specified in the updated IP-MIB RFC (RFC4293) in /proc/net/netstat. The reason why these are not displayed in /proc/net/snmp is some existing utilities are developed under the assumption that ipstat items in /proc/net/snmp is unchanged. Signed-off-by: Mitsuru Chinen <[EMAIL PROTECTED]> --- net/ipv4/proc.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) bbc05691d2dbd8bce7d6b5ae1c0ba0074ecef5e4 diff --git a/net/ipv4/proc.c b/net/ipv4/proc.c index 37ab580..11dfa96 100644 --- a/net/ipv4/proc.c +++ b/net/ipv4/proc.c @@ -88,6 +88,7 @@ static const struct file_operations sock }; /* snmp items */ +#define IPSTATS_RFC4293_START 18 static const struct snmp_mib snmp4_ipstats_list[] = { SNMP_MIB_ITEM("InReceives", IPSTATS_MIB_INRECEIVES), SNMP_MIB_ITEM("InHdrErrors", IPSTATS_MIB_INHDRERRORS), @@ -106,6 +107,14 @@ static const struct snmp_mib snmp4_ipsta SNMP_MIB_ITEM("FragOKs", IPSTATS_MIB_FRAGOKS), SNMP_MIB_ITEM("FragFails", IPSTATS_MIB_FRAGFAILS), SNMP_MIB_ITEM("FragCreates", IPSTATS_MIB_FRAGCREATES), + SNMP_MIB_SENTINEL, + /* Following RFC4293 items are displayed in /proc/net/netstat */ + SNMP_MIB_ITEM("InNoRoutes", IPSTATS_MIB_INNOROUTES), + SNMP_MIB_ITEM("InTruncatedPkts", IPSTATS_MIB_INTRUNCATEDPKTS), + SNMP_MIB_ITEM("InMcastPkts", IPSTATS_MIB_INMCASTPKTS), + SNMP_MIB_ITEM("OutMcastPkts", IPSTATS_MIB_OUTMCASTPKTS), + SNMP_MIB_ITEM("InBcastPkts", IPSTATS_MIB_INBCASTPKTS), + SNMP_MIB_ITEM("OutBcastPkts", IPSTATS_MIB_OUTBCASTPKTS), SNMP_MIB_SENTINEL }; @@ -338,6 +347,16 @@ static int netstat_seq_show(struct seq_f snmp_fold_field((void **)net_statistics, snmp4_net_list[i].entry)); + seq_puts(seq, "\nIpExt:"); + for (i = IPSTATS_RFC4293_START; snmp4_ipstats_list[i].name != NULL; i++) + seq_printf(seq, " %s", snmp4_ipstats_list[i].name); + + seq_puts(seq, "\nIpExt:"); + for (i = IPSTATS_RFC4293_START; snmp4_ipstats_list[i].name != NULL; i++) + seq_printf(seq, " %lu", + snmp_fold_field((void **)ip_statistics, + snmp4_ipstats_list[i].entry)); + seq_putc(seq, '\n'); return 0; } -- 1.3.3 - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html