From owner-p4-projects@FreeBSD.ORG Fri Jul 31 22:11:55 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7EB781065673; Fri, 31 Jul 2009 22:11:55 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3F9E5106564A for ; Fri, 31 Jul 2009 22:11:55 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 2DEEB8FC08 for ; Fri, 31 Jul 2009 22:11:55 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6VMBtjF090925 for ; Fri, 31 Jul 2009 22:11:55 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6VMBsfY090923 for perforce@freebsd.org; Fri, 31 Jul 2009 22:11:54 GMT (envelope-from pgj@FreeBSD.org) Date: Fri, 31 Jul 2009 22:11:54 GMT Message-Id: <200907312211.n6VMBsfY090923@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166881 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 Jul 2009 22:11:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=166881 Change 166881 by pgj@petymeg-current on 2009/07/31 22:10:55 IPv4 forwarding statistics are now handled via libnetstat(3) in netstat(1). Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/extern.h#34 edit .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#42 edit .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/route.c#3 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/extern.h#34 (text+ko) ==== @@ -120,7 +120,7 @@ void pr_rthdr(int); void pr_family(int); -void rt_stats(u_long, u_long); +void rt_stats(const struct stat_type *); char *ipx_pnet(struct sockaddr *); char *ipx_phost(struct sockaddr *); char *ns_phost(struct sockaddr *); ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#42 (text+ko) ==== @@ -77,27 +77,23 @@ static struct nlist nl[] = { -#define N_RTSTAT 0 - { .n_name = "_rtstat" }, -#define N_RTREE 1 +#define N_RTREE 0 { .n_name = "_rt_tables"}, -#define N_MFCHASHTBL 2 +#define N_MFCHASHTBL 1 { .n_name = "_mfchashtbl" }, -#define N_VIFTABLE 3 +#define N_VIFTABLE 2 { .n_name = "_viftable" }, -#define N_IPX 4 +#define N_IPX 3 { .n_name = "_ipxpcb_list"}, -#define N_DDPCB 5 +#define N_DDPCB 4 { .n_name = "_ddpcb"}, -#define N_NGSOCKS 6 +#define N_NGSOCKS 5 { .n_name = "_ngsocklist"}, -#define N_MF6CTABLE 7 +#define N_MF6CTABLE 6 { .n_name = "_mf6ctable" }, -#define N_MIF6TABLE 8 +#define N_MIF6TABLE 7 { .n_name = "_mif6table" }, -#define N_RTTRASH 9 - { .n_name = "_rttrash" }, -#define N_MFCTABLESIZE 10 +#define N_MFCTABLESIZE 8 { .n_name = "_mfctablesize" }, { .n_name = NULL }, }; @@ -458,11 +454,15 @@ exit(0); } if (rflag) { - kread(0, NULL, 0); - if (sflag) - rt_stats(nl[N_RTSTAT].n_value, nl[N_RTTRASH].n_value); - else + if (sflag) { + if (!live) + kread(0, NULL, 0); + statpr(rt_stats, stat_route, "routing"); + } + else { + kread(0, NULL, 0); routepr(nl[N_RTREE].n_value); + } exit(0); } if (gflag) { ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/route.c#3 (text+ko) ==== @@ -985,36 +985,20 @@ * Print routing statistics */ void -rt_stats(u_long rtsaddr, u_long rttaddr) +rt_stats(const struct stat_type *sttp) { - struct rtstat rtstat; - int rttrash; + const struct route_stat *s; - if (rtsaddr == 0) { - printf("rtstat: symbol not in namelist\n"); - return; - } - if (rttaddr == 0) { - printf("rttrash: symbol not in namelist\n"); - return; - } - kread(rtsaddr, (char *)&rtstat, sizeof (rtstat)); - kread(rttaddr, (char *)&rttrash, sizeof (rttrash)); - printf("routing:\n"); - -#define p(f, m) if (rtstat.f || sflag <= 1) \ - printf(m, rtstat.f, plural(rtstat.f)) - - p(rts_badredirect, "\t%u bad routing redirect%s\n"); - p(rts_dynamic, "\t%u dynamically created route%s\n"); - p(rts_newgateway, "\t%u new gateway%s due to redirects\n"); - p(rts_unreach, "\t%u destination%s found unreachable\n"); - p(rts_wildcard, "\t%u use%s of a wildcard route\n"); + s = netstat_get_routestats(sttp); +#define p(f, m) if (netstat_routes_get_##f(s) || sflag <= 1) \ + printf(m, netstat_routes_get_##f(s), plural(netstat_routes_get_##f(s))) + p(badredirect, "\t%ju bad routing redirect%s\n"); + p(dynamic, "\t%ju dynamically created route%s\n"); + p(newgateway, "\t%ju new gateway%s due to redirects\n"); + p(unreach, "\t%ju destination%s found unreachable\n"); + p(wildcard, "\t%ju use%s of a wildcard route\n"); + p(trash, "\t%ju route%s not in table but not freed\n"); #undef p - - if (rttrash || sflag <= 1) - printf("\t%u route%s not in table but not freed\n", - rttrash, plural(rttrash)); } char *