Date: Sat, 15 Aug 2009 22:12:06 GMT From: Gabor Pali <pgj@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 167382 for review Message-ID: <200908152212.n7FMC6H4038243@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=167382 Change 167382 by pgj@petymeg-current on 2009/08/15 22:11:25 Re-add a libnetstat-based version of size_cols_rtentry() to set the corresponding column widths properly. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/route.c#5 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/route.c#5 (text+ko) ==== @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD: src/usr.bin/netstat/route.c,v 1.93 2008/12/15 06:10:57 qingli Exp $"); #include <sys/types.h> +#include <sys/param.h> #include <netipx/ipx.h> #include <netinet/in.h> @@ -88,6 +89,7 @@ }; static void size_cols(int ef, struct route_type_iterator *); +static void size_cols_rtentry(const struct route_type *); static const char *fmt_flags(int f); static void p_rtnode(const struct routenode_type *); @@ -207,8 +209,10 @@ #endif /*INET6*/ void -size_cols(int ef, __unused struct route_type_iterator *rtip) +size_cols(int ef, struct route_type_iterator *rtip) { + const struct route_type *rtp; + wid_dst = WID_DST_DEFAULT(ef); wid_gw = WID_GW_DEFAULT(ef); wid_flags = 6; @@ -218,10 +222,47 @@ wid_if = WID_IF_DEFAULT(ef); wid_expire = 6; -/* - if (Wflag) - size_cols_tree(rtip); -*/ + if (!Wflag) + return; + + for (rtp = netstat_rti_first(rtip); rtp != NULL; + rtp = netstat_rti_next(rtip)) { + size_cols_rtentry(rtp); + } +} + +void +size_cols_rtentry(const struct route_type *rtp) +{ + const struct routeaddr_type *addr; + int len; + char buffer[100]; + + addr = netstat_rt_get_destination(rtp); + if (addr != NULL) { + len = strlen(netstat_rat_get_name(addr, numeric_addr)); + wid_dst = MAX(wid_dst, len); + } + addr = netstat_rt_get_gateway(rtp); + if (addr != NULL) { + len = strlen(netstat_rat_get_name(addr, numeric_addr)); + wid_gw = MAX(wid_gw, len); + } + len = strlen(fmt_flags(netstat_rt_get_flags(rtp))); + wid_flags = MAX(wid_flags, len); + len = snprintf(buffer, sizeof(buffer), "%ju", netstat_rt_get_refs(rtp)); + wid_refs = MAX(wid_refs, len); + len = snprintf(buffer, sizeof(buffer), "%ju", netstat_rt_get_used(rtp)); + wid_use = MAX(wid_use, len); + len = snprintf(buffer, sizeof(buffer), "%u", netstat_rt_get_mtu(rtp)); + wid_mtu = MAX(wid_mtu, len); + len = strlen(netstat_rt_get_interface(rtp)); + wid_if = MAX(wid_if, len); + if (netstat_rt_get_flags(rtp) & NETSTAT_RT_EXPIRES) { + len = snprintf(buffer, sizeof(buffer), "%ju", + netstat_rt_get_expire(rtp)); + wid_expire = MAX(wid_expire, len); + } } static const char *
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200908152212.n7FMC6H4038243>