diff --git a/usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c b/usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c index 475e915b2e7..5df85fd8bdf 100644 --- a/usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c +++ b/usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c @@ -5915,7 +5915,10 @@ pr_prefix6(const struct in6_addr *addr, uint_t prefixlen, char *dst, char *cp; if (IN6_IS_ADDR_UNSPECIFIED(addr) && prefixlen == 0) { - (void) strncpy(dst, "default", dstlen); + if (Nflag) + (void) strlcpy(dst, "::/0", dstlen); + else + (void) strlcpy(dst, "default", dstlen); dst[dstlen - 1] = 0; return (dst); } @@ -6048,7 +6051,14 @@ pr_net(uint_t addr, uint_t mask, char *dst, uint_t dstlen) /* -2 == Noncontiguous mask... */ if (addr == INADDR_ANY && mask == INADDR_ANY) { - (void) strlcpy(dst, "default", dstlen); + if (Nflag) { + (void) strlcpy(dst, "0.0.0.0", dstlen); + if (CIDRflag) + (void) strlcat(dst, "/0", dstlen); + } + else { + (void) strlcpy(dst, "default", dstlen); + } return (dst); } @@ -6131,13 +6141,21 @@ pr_netaddr(uint_t addr, uint_t mask, char *dst, uint_t dstlen) int prefixlen = -1; /* -1 == Don't print prefix! */ /* -2 == Noncontiguous mask... */ - addr = ntohl(addr); - mask = ntohl(mask); if (addr == INADDR_ANY && mask == INADDR_ANY) { - (void) strlcpy(dst, "default", dstlen); + if (Nflag) { + (void) strlcpy(dst, "0.0.0.0", dstlen); + if (CIDRflag) + (void) strlcat(dst, "/0", dstlen); + } + else { + (void) strlcpy(dst, "default", dstlen); + } return (dst); } + addr = ntohl(addr); + mask = ntohl(mask); + if (CIDRflag) prefixlen = v4_cidr_len(mask);