Deleted Added
full compact
39c39
< "$FreeBSD: head/usr.bin/netstat/route.c 97650 2002-05-31 04:36:55Z silby $";
---
> "$FreeBSD: head/usr.bin/netstat/route.c 97878 2002-06-05 18:29:26Z kbyanc $";
128a129,131
> static void size_cols (int ef, struct radix_node *rn);
> static void size_cols_tree (struct radix_node *rn);
> static void size_cols_rtentry (struct rtentry *rt);
133a137,138
> static const char *fmt_sockaddr (struct sockaddr *sa, struct sockaddr *mask,
> int flags);
134a140
> static const char *fmt_flags(int f);
168a175
> size_cols(i, head.rnh_treetop);
227,229c234,236
< #define WID_DST(af) 18 /* width of destination column */
< #define WID_GW(af) 18 /* width of gateway column */
< #define WID_IF(af) 6 /* width of netif column */
---
> #define WID_DST_DEFAULT(af) 18 /* width of destination column */
> #define WID_GW_DEFAULT(af) 18 /* width of gateway column */
> #define WID_IF_DEFAULT(af) 6 /* width of netif column */
231,235c238,242
< #define WID_DST(af) \
< ((af) == AF_INET6 ? (Wflag ? 39 : (numeric_addr ? 33: 18)) : 18)
< #define WID_GW(af) \
< ((af) == AF_INET6 ? (Wflag ? 31 : (numeric_addr ? 29 : 18)) : 18)
< #define WID_IF(af) ((af) == AF_INET6 ? 8 : 6)
---
> #define WID_DST_DEFAULT(af) \
> ((af) == AF_INET6 ? (numeric_addr ? 33: 18) : 18)
> #define WID_GW_DEFAULT(af) \
> ((af) == AF_INET6 ? (numeric_addr ? 29 : 18) : 18)
> #define WID_IF_DEFAULT(af) ((af) == AF_INET6 ? 8 : 6)
237a245,361
> static int wid_dst;
> static int wid_gw;
> static int wid_flags;
> static int wid_refs;
> static int wid_use;
> static int wid_mtu;
> static int wid_if;
> static int wid_expire;
>
> static void
> size_cols(int ef, struct radix_node *rn)
> {
> wid_dst = WID_DST_DEFAULT(ef);
> wid_gw = WID_GW_DEFAULT(ef);
> wid_flags = 6;
> wid_refs = 6;
> wid_use = 8;
> wid_mtu = 6;
> wid_if = WID_IF_DEFAULT(ef);
> wid_expire = 6;
>
> if (Wflag)
> size_cols_tree(rn);
> }
>
> static void
> size_cols_tree(struct radix_node *rn)
> {
> again:
> kget(rn, rnode);
> if (rnode.rn_bit < 0) {
> if ((rnode.rn_flags & RNF_ROOT) == 0) {
> kget(rn, rtentry);
> size_cols_rtentry(&rtentry);
> }
> if ((rn = rnode.rn_dupedkey))
> goto again;
> } else {
> rn = rnode.rn_right;
> size_cols_tree(rnode.rn_left);
> size_cols_tree(rn);
> }
> }
>
> static void
> size_cols_rtentry(struct rtentry *rt)
> {
> static struct ifnet ifnet, *lastif;
> struct rtentry parent;
> static char buffer[100];
> const char *bp;
> struct sockaddr *sa;
> sa_u addr, mask;
> int len;
>
> /*
> * Don't print protocol-cloned routes unless -a.
> */
> if (rt->rt_flags & RTF_WASCLONED && !aflag) {
> kget(rt->rt_parent, parent);
> if (parent.rt_flags & RTF_PRCLONING)
> return;
> }
>
> bzero(&addr, sizeof(addr));
> if ((sa = kgetsa(rt_key(rt))))
> bcopy(sa, &addr, sa->sa_len);
> bzero(&mask, sizeof(mask));
> if (rt_mask(rt) && (sa = kgetsa(rt_mask(rt))))
> bcopy(sa, &mask, sa->sa_len);
> bp = fmt_sockaddr(&addr.u_sa, &mask.u_sa, rt->rt_flags);
> len = strlen(bp);
> wid_dst = MAX(len, wid_dst);
>
> bp = fmt_sockaddr(kgetsa(rt->rt_gateway), NULL, RTF_HOST);
> len = strlen(bp);
> wid_gw = MAX(len, wid_gw);
>
> bp = fmt_flags(rt->rt_flags);
> len = strlen(bp);
> wid_flags = MAX(len, wid_flags);
>
> if (addr.u_sa.sa_family == AF_INET || Wflag) {
> len = snprintf(buffer, sizeof(buffer), "%ld", rt->rt_refcnt);
> wid_refs = MAX(len, wid_refs);
> len = snprintf(buffer, sizeof(buffer), "%lu", rt->rt_use);
> wid_use = MAX(len, wid_use);
> if (Wflag && rt->rt_rmx.rmx_mtu != 0) {
> len = snprintf(buffer, sizeof(buffer),
> "%lu", rt->rt_rmx.rmx_mtu);
> wid_mtu = MAX(len, wid_mtu);
> }
> }
> if (rt->rt_ifp) {
> if (rt->rt_ifp != lastif) {
> len = snprintf(buffer, sizeof(buffer), "%d",
> ifnet.if_unit);
> kget(rt->rt_ifp, ifnet);
> kread((u_long)ifnet.if_name, buffer, sizeof(buffer));
> lastif = rt->rt_ifp;
> len += strlen(buffer);
> wid_if = MAX(len, wid_if);
> }
> if (rt->rt_rmx.rmx_expire) {
> time_t expire_time;
>
> if ((expire_time =
> rt->rt_rmx.rmx_expire - time(NULL)) > 0) {
> len = snprintf(buffer, sizeof(buffer), "%d",
> (int)expire_time);
> wid_expire = MAX(len, wid_expire);
> }
> }
> }
> }
>
>
247,264c371,399
< if (af == AF_INET || Wflag)
< if (Wflag)
< printf("%-*.*s %-*.*s %-6.6s %6.6s %8.8s %6.6s %*.*s %6s\n",
< WID_DST(af), WID_DST(af), "Destination",
< WID_GW(af), WID_GW(af), "Gateway",
< "Flags", "Refs", "Use", "Mtu",
< WID_IF(af), WID_IF(af), "Netif", "Expire");
< else
< printf("%-*.*s %-*.*s %-6.6s %6.6s %8.8s %*.*s %6s\n",
< WID_DST(af), WID_DST(af), "Destination",
< WID_GW(af), WID_GW(af), "Gateway",
< "Flags", "Refs", "Use",
< WID_IF(af), WID_IF(af), "Netif", "Expire");
< else
< printf("%-*.*s %-*.*s %-6.6s %8.8s %6s\n",
< WID_DST(af), WID_DST(af), "Destination",
< WID_GW(af), WID_GW(af), "Gateway",
< "Flags", "Netif", "Expire");
---
> if (af == AF_INET || Wflag) {
> if (Wflag) {
> printf("%-*.*s %-*.*s %-*.*s %*.*s %*.*s %*.*s %*.*s %*s\n",
> wid_dst, wid_dst, "Destination",
> wid_gw, wid_gw, "Gateway",
> wid_flags, wid_flags, "Flags",
> wid_refs, wid_refs, "Refs",
> wid_use, wid_use, "Use",
> wid_mtu, wid_mtu, "Mtu",
> wid_if, wid_if, "Netif",
> wid_expire, "Expire");
> } else {
> printf("%-*.*s %-*.*s %-*.*s %*.*s %*.*s %*.*s %*s\n",
> wid_dst, wid_dst, "Destination",
> wid_gw, wid_gw, "Gateway",
> wid_flags, wid_flags, "Flags",
> wid_refs, wid_refs, "Refs",
> wid_use, wid_use, "Use",
> wid_if, wid_if, "Netif",
> wid_expire, "Expire");
> }
> } else {
> printf("%-*.*s %-*.*s %-*.*s %*.*s %*s\n",
> wid_dst, wid_dst, "Destination",
> wid_gw, wid_gw, "Gateway",
> wid_flags, wid_flags, "Flags",
> wid_if, wid_if, "Netif",
> wid_expire, "Expire");
> }
425,426c560
< char workbuf[128], *cplim;
< register char *cp = workbuf;
---
> const char *cp;
427a562,580
> cp = fmt_sockaddr(sa, mask, flags);
>
> if (width < 0 )
> printf("%s ", cp);
> else {
> if (numeric_addr)
> printf("%-*s ", width, cp);
> else
> printf("%-*.*s ", width, width, cp);
> }
> }
>
> static const char *
> fmt_sockaddr(struct sockaddr *sa, struct sockaddr *mask, int flags)
> {
> static char workbuf[128];
> char *cplim;
> char *cp = workbuf;
>
545,552c698,699
< if (width < 0 )
< printf("%s ", cp);
< else {
< if (numeric_addr)
< printf("%-*s ", width, cp);
< else
< printf("%-*.*s ", width, width, cp);
< }
---
>
> return (cp);
558,559c705,706
< char name[33], *flags;
< register struct bits *p = bits;
---
> printf(format, fmt_flags(f));
> }
560a708,714
> static const char *
> fmt_flags(int f)
> {
> static char name[33];
> char *flags;
> struct bits *p = bits;
>
565c719
< printf(format, name);
---
> return (name);
573,574c727,728
< static char name[16];
< static char prettyname[9];
---
> static char buffer[128];
> static char prettyname[128];
593,597c747,750
< p_sockaddr(&addr.u_sa, &mask.u_sa, rt->rt_flags,
< WID_DST(addr.u_sa.sa_family));
< p_sockaddr(kgetsa(rt->rt_gateway), NULL, RTF_HOST,
< WID_GW(addr.u_sa.sa_family));
< p_flags(rt->rt_flags, "%-6.6s ");
---
> p_sockaddr(&addr.u_sa, &mask.u_sa, rt->rt_flags, wid_dst);
> p_sockaddr(kgetsa(rt->rt_gateway), NULL, RTF_HOST, wid_gw);
> snprintf(buffer, sizeof(buffer), "%%-%d.%ds ", wid_flags, wid_flags);
> p_flags(rt->rt_flags, buffer);
599c752,753
< printf("%6ld %8lu ", rt->rt_refcnt, rt->rt_use);
---
> printf("%*ld %*lu ", wid_refs, rt->rt_refcnt,
> wid_use, rt->rt_use);
602c756
< printf("%6lu ", rt->rt_rmx.rmx_mtu);
---
> printf("%*lu ", wid_mtu, rt->rt_rmx.rmx_mtu);
604c758
< printf("%6s ", "");
---
> printf("%*s ", wid_mtu, "");
610c764
< kread((u_long)ifnet.if_name, name, 16);
---
> kread((u_long)ifnet.if_name, buffer, sizeof(buffer));
612,613c766,767
< snprintf(prettyname, sizeof prettyname,
< "%s%d", name, ifnet.if_unit);
---
> snprintf(prettyname, sizeof(prettyname),
> "%s%d", buffer, ifnet.if_unit);
615,616c769
< printf("%*.*s", WID_IF(addr.u_sa.sa_family),
< WID_IF(addr.u_sa.sa_family), prettyname);
---
> printf("%*.*s", wid_if, wid_if, prettyname);
622c775
< printf(" %6d", (int)expire_time);
---
> printf(" %*d", wid_expire, (int)expire_time);