From f1fbb01bf59e00851b70810b1e0c0dd5410e34a8 Mon Sep 17 00:00:00 2001 From: Keith Sklower Date: Sun, 16 Jun 1985 05:24:37 -0800 Subject: [PATCH] print xns interfaces and route reasonably SCCS-vsn: usr.bin/netstat/route.c 5.2 SCCS-vsn: usr.bin/netstat/if.c 5.2 --- usr/src/usr.bin/netstat/if.c | 12 +++++- usr/src/usr.bin/netstat/route.c | 69 +++++++++++++++++++++++++++++++-- 2 files changed, 77 insertions(+), 4 deletions(-) diff --git a/usr/src/usr.bin/netstat/if.c b/usr/src/usr.bin/netstat/if.c index 7905f09ad6..fada88161a 100644 --- a/usr/src/usr.bin/netstat/if.c +++ b/usr/src/usr.bin/netstat/if.c @@ -5,7 +5,7 @@ */ #ifndef lint -static char sccsid[] = "@(#)if.c 5.1 (Berkeley) %G%"; +static char sccsid[] = "@(#)if.c 5.2 (Berkeley) %G%"; #endif not lint #include @@ -14,6 +14,7 @@ static char sccsid[] = "@(#)if.c 5.1 (Berkeley) %G%"; #include #include #include +#include #include @@ -110,6 +111,15 @@ intpr(interval, ifnetaddr) #endif printf("%-12.12s ", routename(sin->sin_addr)); break; + case AF_NS: + { + struct sockaddr_ns *sns = + (struct sockaddr_ns *)&ifaddr.in.ia_addr; + printf("ns:%-8d ", + ntohl(ns_netof(sns->sns_addr))); + printf("%-12s ",ns_phost(sns)); + } + break; default: printf("af%2d: ", ifaddr.ifa.ifa_addr.sa_family); for (cp = (char *)&ifaddr.ifa.ifa_addr + diff --git a/usr/src/usr.bin/netstat/route.c b/usr/src/usr.bin/netstat/route.c index f947e90225..9584f2c082 100644 --- a/usr/src/usr.bin/netstat/route.c +++ b/usr/src/usr.bin/netstat/route.c @@ -5,8 +5,8 @@ */ #ifndef lint -static char sccsid[] = "@(#)route.c 5.1 (Berkeley) %G%"; -#endif not lint +static char sccsid[] = "@(#)route.c 5.2 85/06/15"; +#endif #include #include @@ -16,11 +16,13 @@ static char sccsid[] = "@(#)route.c 5.1 (Berkeley) %G%"; #include #include +#include + #include extern int kmem; extern int nflag; -extern char *routename(), *netname(); +extern char *routename(), *netname(), *ns_print(); /* * Definitions for showing gateway flags. @@ -79,10 +81,14 @@ again: m = routehash[i]; while (m) { struct sockaddr_in *sin; + struct sockaddr_ns *sns; + long *l = (long *)&rt->rt_dst; klseek(kmem, m, 0); read(kmem, &mb, sizeof (mb)); rt = mtod(&mb, struct rtentry *); + switch(rt->rt_dst.sa_family) { + case AF_INET: sin = (struct sockaddr_in *)&rt->rt_dst; printf("%-15.15s ", (sin->sin_addr.s_addr == 0) ? "default" : @@ -90,6 +96,18 @@ again: routename(sin->sin_addr) : netname(sin->sin_addr, 0)); sin = (struct sockaddr_in *)&rt->rt_gateway; printf("%-15.15s ", routename(sin->sin_addr)); + break; + case AF_NS: + printf("%-15s ", + ns_print((struct sockaddr_ns *)&rt->rt_dst)); + printf("%-15s ", + ns_print((struct sockaddr_ns *)&rt->rt_gateway)); + break; + default: + printf("%8.8x %8.8x %8.8x %8.8x",*l, l[1], l[2], l[3]); + l = (long *)&rt->rt_gateway; + printf("%8.8x %8.8x %8.8x %8.8x",*l, l[1], l[2], l[3]); + } for (flags = name, p = bits; p->b_mask; p++) if (p->b_mask & rt->rt_flags) *flags++ = p->b_val; @@ -220,3 +238,48 @@ rt_stats(off) printf("\t%d use%s of a wildcard route\n", rtstat.rts_wildcard, plural(rtstat.rts_wildcard)); } +short ns_bh[] = {-1,-1,-1}; + +char * +ns_print(sns) +struct sockaddr_ns *sns; +{ + register struct ns_addr *dna = &sns->sns_addr; + long net = ntohl(ns_netof(*dna)); + static char mybuf[50]; + register char *p = mybuf; + short port = dna->x_port; + + sprintf(p,"%ld:", net); + + while(*p)p++; /* find end of string */ + + if (strncmp(ns_bh,dna->x_host.c_host,6)==0) + sprintf(p,"any"); + else + sprintf(p,"%x.%x.%x.%x.%x.%x", + dna->x_host.c_host[0], dna->x_host.c_host[1], + dna->x_host.c_host[2], dna->x_host.c_host[3], + dna->x_host.c_host[4], dna->x_host.c_host[5]); + if (port) { + while(*p)p++; /* find end of string */ + printf(":%d",port); + } + return(mybuf); +} +char * +ns_phost(sns) +struct sockaddr_ns *sns; +{ + register struct ns_addr *dna = &sns->sns_addr; + long net = ntohl(ns_netof(*dna)); + static char mybuf[50]; + register char *p = mybuf; + if (strncmp(ns_bh,dna->x_host.c_host,6)==0) + sprintf(p,"any"); + else + sprintf(p,"%x,%x,%x", + dna->x_host.s_host[0], dna->x_host.s_host[1], + dna->x_host.s_host[2]); + return(mybuf); +} -- 2.20.1