From 54f6369da37c4babbf681354beb6c4b006f7cd8f Mon Sep 17 00:00:00 2001 From: Ruslan Ermilov Date: Fri, 8 Jun 2001 15:44:17 +0000 Subject: [PATCH] Always print at least 2 bytes for IN_CLASSB_NET networks. Always print at least 3 bytes for IN_CLASSC_NET networks. The standard 193.0.0 class C network for example, will now be displayed as "193.0.0" as opposed to the confusing 193. PR: bin/21546 MFC after: 1 week --- usr.bin/netstat/route.c | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/usr.bin/netstat/route.c b/usr.bin/netstat/route.c index 75cc3252ebd..db7f190648e 100644 --- a/usr.bin/netstat/route.c +++ b/usr.bin/netstat/route.c @@ -726,9 +726,9 @@ netname(in, mask) register u_long i; i = ntohl(in); + dmask = forgemask(i); omask = mask; if (!nflag && i) { - dmask = forgemask(i); net = i & dmask; if (!(np = getnetbyaddr(i, AF_INET)) && net != i) np = getnetbyaddr(net, AF_INET); @@ -739,15 +739,34 @@ netname(in, mask) } if (cp) strncpy(line, cp, sizeof(line) - 1); - else if ((i & 0xffffff) == 0) - sprintf(line, "%lu", C(i >> 24)); - else if ((i & 0xffff) == 0) - sprintf(line, "%lu.%lu", C(i >> 24) , C(i >> 16)); - else if ((i & 0xff) == 0) - sprintf(line, "%lu.%lu.%lu", C(i >> 24), C(i >> 16), C(i >> 8)); - else - sprintf(line, "%lu.%lu.%lu.%lu", C(i >> 24), - C(i >> 16), C(i >> 8), C(i)); + else { + switch (dmask) { + case IN_CLASSA_NET: + if ((i & IN_CLASSA_HOST) == 0) { + sprintf(line, "%lu", C(i >> 24)); + break; + } + /* FALLTHROUGH */ + case IN_CLASSB_NET: + if ((i & IN_CLASSB_HOST) == 0) { + sprintf(line, "%lu.%lu", + C(i >> 24), C(i >> 16)); + break; + } + /* FALLTHROUGH */ + case IN_CLASSC_NET: + if ((i & IN_CLASSC_HOST) == 0) { + sprintf(line, "%lu.%lu.%lu", + C(i >> 24), C(i >> 16), C(i >> 8)); + break; + } + /* FALLTHROUGH */ + default: + sprintf(line, "%lu.%lu.%lu.%lu", + C(i >> 24), C(i >> 16), C(i >> 8), C(i)); + break; + } + } domask(line+strlen(line), i, omask); return (line); }