aboutsummaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2000-12-30 21:17:03 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2000-12-30 21:17:03 +0000
commit539d2b38e23941a399eaeb63fd51ec3801c89939 (patch)
tree18e43745e885ad79542f49ac186ca5ee5b13ea81 /usr.bin
parent32ff2662d1b3fb19665d77d35c81fb637436fe3f (diff)
downloadsrc-539d2b38e23941a399eaeb63fd51ec3801c89939.tar.gz
src-539d2b38e23941a399eaeb63fd51ec3801c89939.zip
Use macro API to <sys/queue.h>
Submitted by: "Jason" <jsmethers@pdq.net> Reviewed by: phk
Notes
Notes: svn path=/head/; revision=70523
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/systat/netstat.c47
1 files changed, 16 insertions, 31 deletions
diff --git a/usr.bin/systat/netstat.c b/usr.bin/systat/netstat.c
index 305c1339f1fe..11158d7166e8 100644
--- a/usr.bin/systat/netstat.c
+++ b/usr.bin/systat/netstat.c
@@ -92,7 +92,7 @@ opennetstat()
}
struct netinfo {
- struct netinfo *ni_forw, *ni_prev;
+ TAILQ_ENTRY(netinfo) chain;
short ni_line; /* line on screen */
short ni_seen; /* 0 when not present in list */
short ni_flags;
@@ -108,9 +108,7 @@ struct netinfo {
long ni_sndcc; /* snd buffer character count */
};
-static struct {
- struct netinfo *ni_forw, *ni_prev;
-} netcb;
+TAILQ_HEAD(netinfohead, netinfo) netcb = TAILQ_HEAD_INITIALIZER(netcb);
static int aflag = 0;
static int nflag = 0;
@@ -126,12 +124,10 @@ closenetstat(w)
endhostent();
endnetent();
- p = (struct netinfo *)netcb.ni_forw;
- while (p != (struct netinfo *)&netcb) {
+ TAILQ_FOREACH(p, *netcb, chain) {
if (p->ni_line != -1)
lastrow--;
p->ni_line = -1;
- p = p->ni_forw;
}
if (w != NULL) {
wclear(w);
@@ -159,7 +155,6 @@ initnetstat()
error("No symbols in namelist");
return(0);
}
- netcb.ni_forw = netcb.ni_prev = (struct netinfo *)&netcb;
protos = TCP|UDP;
return(1);
}
@@ -178,7 +173,7 @@ fetchnetstat()
if (namelist[X_TCB].n_value == 0)
return;
- for (p = netcb.ni_forw; p != (struct netinfo *)&netcb; p = p->ni_forw)
+ TAILQ_FOREACH(p, &netcb, chain)
p->ni_seen = 0;
if (protos&TCP) {
off = NPTR(X_TCB);
@@ -194,7 +189,7 @@ fetchnetstat()
}
again:
KREAD(off, &head, sizeof (struct inpcbhead));
- for (next = head.lh_first; next != NULL; next = inpcb.inp_list.le_next) {
+ LIST_FOREACH(next, &head, inp_list) {
KREAD(next, &inpcb, sizeof (inpcb));
if (!aflag && inet_lnaof(inpcb.inp_laddr) == INADDR_ANY)
continue;
@@ -232,7 +227,7 @@ enter(inp, so, state, proto)
* will appear as ``not seen'' in the kernel
* data structures.
*/
- for (p = netcb.ni_forw; p != (struct netinfo *)&netcb; p = p->ni_forw) {
+ TAILQ_FOREACH(p, &netcb, chain) {
if (!streq(proto, p->ni_proto))
continue;
if (p->ni_lport != inp->inp_lport ||
@@ -242,15 +237,12 @@ enter(inp, so, state, proto)
p->ni_fport == inp->inp_fport)
break;
}
- if (p == (struct netinfo *)&netcb) {
+ if (p == NULL) {
if ((p = malloc(sizeof(*p))) == NULL) {
error("Out of memory");
return;
}
- p->ni_prev = (struct netinfo *)&netcb;
- p->ni_forw = netcb.ni_forw;
- netcb.ni_forw->ni_prev = p;
- netcb.ni_forw = p;
+ TAILQ_INSERT_HEAD(&netcb, p, chain);
p->ni_line = -1;
p->ni_laddr = inp->inp_laddr;
p->ni_lport = inp->inp_lport;
@@ -298,31 +290,26 @@ shownetstat()
* away and adjust the position of connections
* below to reflect the deleted line.
*/
- p = netcb.ni_forw;
- while (p != (struct netinfo *)&netcb) {
- if (p->ni_line == -1 || p->ni_seen) {
- p = p->ni_forw;
+ TAILQ_FOREACH(p, &netcb, chain) {
+ if (p->ni_line == -1 || p->ni_seen)
continue;
- }
wmove(wnd, p->ni_line, 0); wdeleteln(wnd);
- q = netcb.ni_forw;
- for (; q != (struct netinfo *)&netcb; q = q->ni_forw)
+ TAILQ_FOREACH(q, &netcb, chain)
if (q != p && q->ni_line > p->ni_line) {
q->ni_line--;
/* this shouldn't be necessary */
q->ni_flags |= NIF_LACHG|NIF_FACHG;
}
lastrow--;
- q = p->ni_forw;
- p->ni_prev->ni_forw = p->ni_forw;
- p->ni_forw->ni_prev = p->ni_prev;
+ q = TAILQ_PREV(p);
+ TAILQ_REMOVE(&netcb, p, chain);
free(p);
p = q;
}
/*
* Update existing connections and add new ones.
*/
- for (p = netcb.ni_forw; p != (struct netinfo *)&netcb; p = p->ni_forw) {
+ TAILQ_FOREACH(p, &netcb, chain) {
if (p->ni_line == -1) {
/*
* Add a new entry if possible.
@@ -437,20 +424,18 @@ int
cmdnetstat(cmd, args)
char *cmd, *args;
{
- register struct netinfo *p;
-
if (prefix(cmd, "all")) {
aflag = !aflag;
goto fixup;
}
if (prefix(cmd, "numbers") || prefix(cmd, "names")) {
+ struct netinfo *p;
int new;
new = prefix(cmd, "numbers");
if (new == nflag)
return (1);
- p = netcb.ni_forw;
- for (; p != (struct netinfo *)&netcb; p = p->ni_forw) {
+ TAILQ_FOREACH(p, &netcb, chain) {
if (p->ni_line == -1)
continue;
p->ni_flags |= NIF_LACHG|NIF_FACHG;