summaryrefslogtreecommitdiffstats
path: root/usr.bin/netstat
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>1996-08-31 07:43:01 +0000
committerjulian <julian@FreeBSD.org>1996-08-31 07:43:01 +0000
commit31eae602d6dbb4e278484b412f5bdb5aa019c54d (patch)
tree9326b5b90d184e78a116e1f5d8f19a933f127d0a /usr.bin/netstat
parent8e9d0e2a1f49c034b16c88ce241a060ad4ecb1bc (diff)
downloadFreeBSD-src-31eae602d6dbb4e278484b412f5bdb5aa019c54d.zip
FreeBSD-src-31eae602d6dbb4e278484b412f5bdb5aa019c54d.tar.gz
fix printing of netranges in the i and r displays for netatalk
Diffstat (limited to 'usr.bin/netstat')
-rw-r--r--usr.bin/netstat/atalk.c43
-rw-r--r--usr.bin/netstat/if.c4
2 files changed, 41 insertions, 6 deletions
diff --git a/usr.bin/netstat/atalk.c b/usr.bin/netstat/atalk.c
index e219335..5616431 100644
--- a/usr.bin/netstat/atalk.c
+++ b/usr.bin/netstat/atalk.c
@@ -120,6 +120,24 @@ static char mybuf[50];
return mybuf;
}
+static char *
+at_pr_range(struct sockaddr_at *sat)
+{
+static char mybuf[50];
+
+ if(sat->sat_range.r_netrange.nr_firstnet
+ != sat->sat_range.r_netrange.nr_lastnet) {
+ sprintf(mybuf,"%d-%d",
+ ntohs(sat->sat_range.r_netrange.nr_firstnet),
+ ntohs(sat->sat_range.r_netrange.nr_lastnet));
+ } else {
+ sprintf(mybuf,"%d",
+ ntohs(sat->sat_range.r_netrange.nr_firstnet));
+ }
+ return mybuf;
+}
+
+
/* what == 0 for addr only == 3 */
/* 1 for net */
/* 2 for host */
@@ -134,7 +152,7 @@ atalk_print(sa,what)
int numeric = (what & 0x08);
mybuf[0] = 0;
- switch (what & 3) {
+ switch (what & 0x13) {
case 0:
mybuf[0] = 0;
break;
@@ -148,9 +166,12 @@ atalk_print(sa,what)
sprintf(mybuf,"%s.%s",
at_pr_net(sat, numeric),
at_pr_host(sat, numeric));
+ break;
+ case 0x10:
+ sprintf(mybuf,"%s", at_pr_range(sat));
}
if (what & 4) {
- sprintf(mybuf+strlen(mybuf),"%s",at_pr_port(sat));
+ sprintf(mybuf+strlen(mybuf),".%s",at_pr_port(sat));
}
return mybuf;
}
@@ -160,9 +181,23 @@ atalk_print2(struct sockaddr *sa, struct sockaddr *mask, int what)
{
int n;
static char buf[100];
+ struct sockaddr_at *sat1, *sat2;
+ struct sockaddr_at thesockaddr;
+ struct sockaddr *sa2;
+
+ sat1 = (struct sockaddr_at *)sa;
+ sat2 = (struct sockaddr_at *)mask;
+ sa2 = (struct sockaddr *)&thesockaddr;
- n = snprintf(buf, sizeof(buf), "%s", atalk_print(sa, what));
- snprintf(buf + n, sizeof(buf) - n, "/%s", atalk_print(mask, what));
+ thesockaddr.sat_addr.s_net = sat1->sat_addr.s_net & sat2->sat_addr.s_net;
+ n = snprintf(buf, sizeof(buf), "%s", atalk_print(sa2, 1 |(what & 8)));
+ if(sat2->sat_addr.s_net != 0xFFFF) {
+ thesockaddr.sat_addr.s_net = sat1->sat_addr.s_net | ~sat2->sat_addr.s_net;
+ n += snprintf(buf + n, sizeof(buf) - n,
+ "-%s", atalk_print(sa2, 1 |(what & 8)));
+ }
+ if(what & 2)
+ n += snprintf(buf + n, sizeof(buf) - n, ".%s", atalk_print(sa, what&(~1)));
return(buf);
}
diff --git a/usr.bin/netstat/if.c b/usr.bin/netstat/if.c
index bfe8432..f09e72e 100644
--- a/usr.bin/netstat/if.c
+++ b/usr.bin/netstat/if.c
@@ -188,8 +188,8 @@ intpr(interval, ifnetaddr)
break;
case AF_APPLETALK:
- printf("atalk:%-7.7s ",atalk_print(sa,9) );
- printf("%-15.15s ",atalk_print(sa,11) );
+ printf("atalk:%-12.12s ",atalk_print(sa,0x10) );
+ printf("%-9.9s ",atalk_print(sa,0x0b) );
break;
#ifdef NS
case AF_NS:
OpenPOWER on IntegriCloud