Message ID | 1472800358-31881-1-git-send-email-liuhangbin@gmail.com |
---|---|
State | Superseded, archived |
Delegated to: | stephen hemminger |
Headers | show |
On Fri, Sep 02, 2016 at 03:12:38PM +0800, Hangbin Liu wrote: > SCTP module was not load by default. But this should be OK since we will not > load table if fdopen() failed. > > Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> > --- > misc/nstat.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/misc/nstat.c b/misc/nstat.c > index 6143719..8035be4 100644 > --- a/misc/nstat.c > +++ b/misc/nstat.c > @@ -76,6 +76,11 @@ static int net_snmp6_open(void) > return generic_proc_open("PROC_NET_SNMP6", "net/snmp6"); > } > > +static int net_sctp_snmp_open(void) > +{ > + return generic_proc_open("PROC_NET_SCTP_SNMP", "net/sctp/snmp"); > +} > + > struct nstat_ent { > struct nstat_ent *next; > char *id; > @@ -247,6 +252,16 @@ static void load_ugly_table(FILE *fp) > } > } > > +static void load_sctp_snmp(void) > +{ > + FILE *fp = fdopen(net_sctp_snmp_open(), "r"); > + > + if (fp) { > + load_good_table(fp); > + fclose(fp); > + } > +} > + > static void load_snmp(void) > { > FILE *fp = fdopen(net_snmp_open(), "r"); > @@ -450,6 +465,7 @@ static void server_loop(int fd) > load_netstat(); > load_snmp6(); > load_snmp(); > + load_sctp_snmp(); > > for (;;) { > int status; > @@ -706,6 +722,7 @@ int main(int argc, char *argv[]) > load_netstat(); > load_snmp6(); > load_snmp(); > + load_sctp_snmp(); > if (info_source[0] == 0) > strcpy(info_source, "kernel"); > } Did you forget to add the load call to update_db(), or am I missing something? Apart from that, looks nice and clean. Cheers, Phil
On Fri, 2 Sep 2016 15:12:38 +0800 Hangbin Liu <liuhangbin@gmail.com> wrote: > SCTP module was not load by default. But this should be OK since we will not > load table if fdopen() failed. > > Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> This seems like a bad idea for the normal distro user. If they run nstat command the SCTP kernel module would get loaded even if never used. Makes more sense not to display SCTP statistics if it isn't loaded.
On Fri, 2 Sep 2016 12:46:49 -0700 Stephen Hemminger <stephen@networkplumber.org> wrote: > On Fri, 2 Sep 2016 15:12:38 +0800 > Hangbin Liu <liuhangbin@gmail.com> wrote: > > > SCTP module was not load by default. But this should be OK since we will not > > load table if fdopen() failed. > > > > Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> > > This seems like a bad idea for the normal distro user. > If they run nstat command the SCTP kernel module would get loaded even > if never used. > > Makes more sense not to display SCTP statistics if it isn't loaded. > Never mind, opening the proc file won't load SCTP kernel module.
2016-09-02 18:09 GMT+08:00 Phil Sutter <phil@nwl.cc>: > Did you forget to add the load call to update_db(), or am I missing > something? Opps, forgot to add it there. I will send patchv2 for this issue. Thanks Hangbin > Apart from that, looks nice and clean. > > Cheers, Phil
diff --git a/misc/nstat.c b/misc/nstat.c index 6143719..8035be4 100644 --- a/misc/nstat.c +++ b/misc/nstat.c @@ -76,6 +76,11 @@ static int net_snmp6_open(void) return generic_proc_open("PROC_NET_SNMP6", "net/snmp6"); } +static int net_sctp_snmp_open(void) +{ + return generic_proc_open("PROC_NET_SCTP_SNMP", "net/sctp/snmp"); +} + struct nstat_ent { struct nstat_ent *next; char *id; @@ -247,6 +252,16 @@ static void load_ugly_table(FILE *fp) } } +static void load_sctp_snmp(void) +{ + FILE *fp = fdopen(net_sctp_snmp_open(), "r"); + + if (fp) { + load_good_table(fp); + fclose(fp); + } +} + static void load_snmp(void) { FILE *fp = fdopen(net_snmp_open(), "r"); @@ -450,6 +465,7 @@ static void server_loop(int fd) load_netstat(); load_snmp6(); load_snmp(); + load_sctp_snmp(); for (;;) { int status; @@ -706,6 +722,7 @@ int main(int argc, char *argv[]) load_netstat(); load_snmp6(); load_snmp(); + load_sctp_snmp(); if (info_source[0] == 0) strcpy(info_source, "kernel"); }
SCTP module was not load by default. But this should be OK since we will not load table if fdopen() failed. Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> --- misc/nstat.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)