summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usr.bin/netstat/inet.c20
-rw-r--r--usr.bin/netstat/main.c32
-rw-r--r--usr.bin/netstat/netstat.15
-rw-r--r--usr.bin/netstat/netstat.h43
4 files changed, 68 insertions, 32 deletions
diff --git a/usr.bin/netstat/inet.c b/usr.bin/netstat/inet.c
index b2e3c3e..185506c 100644
--- a/usr.bin/netstat/inet.c
+++ b/usr.bin/netstat/inet.c
@@ -220,7 +220,7 @@ protopr(proto, name, af)
printf("%-14.14s %-22.22s\n",
"Listen", "Local Address");
else
- printf(Aflag ?
+ printf((Aflag && !Wflag) ?
"%-5.5s %-6.6s %-6.6s %-18.18s %-18.18s %s\n" :
"%-5.5s %-6.6s %-6.6s %-22.22s %-22.22s %s\n",
"Proto", "Recv-Q", "Send-Q",
@@ -244,7 +244,7 @@ protopr(proto, name, af)
} else
continue;
else {
- const u_char *vchar;
+ const char *vchar;
#ifdef INET6
if ((inp->inp_vflag & INP_IPV6) != 0)
@@ -695,16 +695,22 @@ inetprint(in, port, proto,numeric)
char line[80], *cp;
int width;
- sprintf(line, "%.*s.", (Aflag && !numeric) ? 12 : 16, inetname(in));
+ if (Wflag)
+ sprintf(line, "%s.", inetname(in));
+ else
+ sprintf(line, "%.*s.", (Aflag && !numeric) ? 12 : 16, inetname(in));
cp = index(line, '\0');
if (!numeric && port)
sp = getservbyport((int)port, proto);
if (sp || port == 0)
- sprintf(cp, "%.15s", sp ? sp->s_name : "*");
+ sprintf(cp, "%.15s ", sp ? sp->s_name : "*");
+ else
+ sprintf(cp, "%d ", ntohs((u_short)port));
+ width = (Aflag && !Wflag) ? 18 : 22;
+ if (Wflag)
+ printf("%-*s ", width, line);
else
- sprintf(cp, "%d", ntohs((u_short)port));
- width = Aflag ? 18 : 22;
- printf("%-*.*s ", width, width, line);
+ printf("%-*.*s ", width, width, line);
}
/*
diff --git a/usr.bin/netstat/main.c b/usr.bin/netstat/main.c
index 5c23f3c..7a11793 100644
--- a/usr.bin/netstat/main.c
+++ b/usr.bin/netstat/main.c
@@ -290,7 +290,30 @@ static struct protox *name2protox __P((char *));
static struct protox *knownname __P((char *));
static kvm_t *kvmd;
-char *nlistf = NULL, *memf = NULL;
+static char *nlistf = NULL, *memf = NULL;
+
+int Aflag; /* show addresses of protocol control block */
+int aflag; /* show all sockets (including servers) */
+int bflag; /* show i/f total bytes in/out */
+int dflag; /* show i/f dropped packets */
+int gflag; /* show group (multicast) routing or stats */
+int iflag; /* show interfaces */
+int lflag; /* show routing table with use and ref */
+int Lflag; /* show size of listen queues */
+int mflag; /* show memory stats */
+int nflag; /* show addresses numerically */
+int pflag; /* show given protocol */
+int rflag; /* show routing tables (or routing stats) */
+int sflag; /* show protocol statistics */
+int tflag; /* show i/f watchdog timers */
+int Wflag; /* wide display */
+
+int interval; /* repeat interval for i/f stats */
+
+char *interface; /* desired i/f for stats, or NULL for all i/fs */
+int unit; /* unit number for above */
+
+int af; /* address family */
int
main(argc, argv)
@@ -302,7 +325,7 @@ main(argc, argv)
af = AF_UNSPEC;
- while ((ch = getopt(argc, argv, "Aabdf:ghI:lLiM:mN:np:rstuw:")) != -1)
+ while ((ch = getopt(argc, argv, "Aabdf:ghI:lLiM:mN:np:rstuWw:")) != -1)
switch(ch) {
case 'A':
Aflag = 1;
@@ -402,6 +425,9 @@ main(argc, argv)
case 'u':
af = AF_UNIX;
break;
+ case 'W':
+ Wflag = 1;
+ break;
case 'w':
interval = atoi(optarg);
iflag = 1;
@@ -696,7 +722,7 @@ static void
usage()
{
(void)fprintf(stderr, "%s\n%s\n%s\n%s\n",
-"usage: netstat [-AaLln] [-f address_family] [-M core] [-N system]",
+"usage: netstat [-AaLlnW] [-f address_family] [-M core] [-N system]",
" netstat [-abdghilmnrs] [-f address_family] [-M core] [-N system]",
" netstat [-bdn] [-I interface] [-M core] [-N system] [-w wait]",
" netstat [-M core] [-N system] [-p protocol]");
diff --git a/usr.bin/netstat/netstat.1 b/usr.bin/netstat/netstat.1
index 2568227..f81c055 100644
--- a/usr.bin/netstat/netstat.1
+++ b/usr.bin/netstat/netstat.1
@@ -40,7 +40,7 @@
.Nd show network status
.Sh SYNOPSIS
.Nm
-.Op Fl AaLln
+.Op Fl AaLlnW
.Op Fl f Ar address_family
.Op Fl M Ar core
.Op Fl N Ar system
@@ -256,6 +256,9 @@ When
is also present,
.Nm
assumes more columns are there.
+.It Fl W
+In certain displays, avoid truncating addresses even if this causes
+some fields to overflow.
.It Fl w Ar wait
Show network interface statistics at intervals of
.Ar wait
diff --git a/usr.bin/netstat/netstat.h b/usr.bin/netstat/netstat.h
index 6886549..ef297d5 100644
--- a/usr.bin/netstat/netstat.h
+++ b/usr.bin/netstat/netstat.h
@@ -36,27 +36,28 @@
#include <sys/cdefs.h>
-int Aflag; /* show addresses of protocol control block */
-int aflag; /* show all sockets (including servers) */
-int bflag; /* show i/f total bytes in/out */
-int dflag; /* show i/f dropped packets */
-int gflag; /* show group (multicast) routing or stats */
-int iflag; /* show interfaces */
-int lflag; /* show routing table with use and ref */
-int Lflag; /* show size of listen queues */
-int mflag; /* show memory stats */
-int nflag; /* show addresses numerically */
-int pflag; /* show given protocol */
-int rflag; /* show routing tables (or routing stats) */
-int sflag; /* show protocol statistics */
-int tflag; /* show i/f watchdog timers */
-
-int interval; /* repeat interval for i/f stats */
-
-char *interface; /* desired i/f for stats, or NULL for all i/fs */
-int unit; /* unit number for above */
-
-int af; /* address family */
+extern int Aflag; /* show addresses of protocol control block */
+extern int aflag; /* show all sockets (including servers) */
+extern int bflag; /* show i/f total bytes in/out */
+extern int dflag; /* show i/f dropped packets */
+extern int gflag; /* show group (multicast) routing or stats */
+extern int iflag; /* show interfaces */
+extern int lflag; /* show routing table with use and ref */
+extern int Lflag; /* show size of listen queues */
+extern int mflag; /* show memory stats */
+extern int nflag; /* show addresses numerically */
+extern int pflag; /* show given protocol */
+extern int rflag; /* show routing tables (or routing stats) */
+extern int sflag; /* show protocol statistics */
+extern int tflag; /* show i/f watchdog timers */
+extern int Wflag; /* wide display */
+
+extern int interval; /* repeat interval for i/f stats */
+
+extern char *interface; /* desired i/f for stats, or NULL for all i/fs */
+extern int unit; /* unit number for above */
+
+extern int af; /* address family */
int kread __P((u_long addr, char *buf, int size));
char *plural __P((int));
OpenPOWER on IntegriCloud