PERFORCE change 167382 for review
Gabor Pali
pgj at FreeBSD.org
Sat Aug 15 22:12:07 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=167382
Change 167382 by pgj at 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 *
More information about the p4-projects
mailing list