summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2001-03-16 20:00:53 +0000
committerphk <phk@FreeBSD.org>2001-03-16 20:00:53 +0000
commitfa534e660d6323afb758326f29b9baec791d2ff4 (patch)
tree9bf74bdcaea95292ea2e78f1b8ec454f685ce11c /sys
parenta4a639f96855a7d5ba4a15245d911bfacb505c0c (diff)
downloadFreeBSD-src-fa534e660d6323afb758326f29b9baec791d2ff4.zip
FreeBSD-src-fa534e660d6323afb758326f29b9baec791d2ff4.tar.gz
<sys/queue.h> makeover.
Diffstat (limited to 'sys')
-rw-r--r--sys/netinet/in.c9
-rw-r--r--sys/netinet/ip_input.c67
-rw-r--r--sys/netinet/ip_var.h2
-rw-r--r--sys/netinet/raw_ip.c6
-rw-r--r--sys/netinet/tcp_subr.c10
-rw-r--r--sys/netinet/tcp_timewait.c10
6 files changed, 48 insertions, 56 deletions
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index 27fbefb..256e006 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -87,8 +87,7 @@ in_localaddr(in)
register struct in_ifaddr *ia;
if (subnetsarelocal) {
- for (ia = TAILQ_FIRST(&in_ifaddrhead); ia;
- ia = TAILQ_NEXT(ia, ia_link))
+ TAILQ_FOREACH(ia, &in_ifaddrhead, ia_link)
if ((i & ia->ia_netmask) == ia->ia_net)
return (1);
} else {
@@ -235,8 +234,7 @@ in_control(so, cmd, data, ifp, p)
* the first one on the interface.
*/
if (ifp)
- for (iap = TAILQ_FIRST(&in_ifaddrhead); iap;
- iap = TAILQ_NEXT(iap, ia_link))
+ TAILQ_FOREACH(iap, &in_ifaddrhead, ia_link)
if (iap->ia_ifp == ifp) {
if (((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr.s_addr ==
iap->ia_addr.sin_addr.s_addr) {
@@ -752,8 +750,7 @@ in_broadcast(in, ifp)
* with a broadcast address.
*/
#define ia ((struct in_ifaddr *)ifa)
- for (ifa = TAILQ_FIRST(&ifp->if_addrhead); ifa;
- ifa = TAILQ_NEXT(ifa, ifa_link))
+ TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link)
if (ifa->ifa_addr->sa_family == AF_INET &&
(in.s_addr == ia->ia_broadaddr.sin_addr.s_addr ||
in.s_addr == ia->ia_netbroadcast.s_addr ||
diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c
index 78753dd..774d7da 100644
--- a/sys/netinet/ip_input.c
+++ b/sys/netinet/ip_input.c
@@ -166,7 +166,7 @@ SYSCTL_STRUCT(_net_inet_ip, IPCTL_STATS, stats, CTLFLAG_RD,
#define IPREASS_HASH(x,y) \
(((((x) & 0xF) | ((((x) >> 8) & 0xF) << 4)) ^ (y)) & IPREASS_HMASK)
-static struct ipq ipq[IPREASS_NHASH];
+static TAILQ_HEAD(ipqhead, ipq) ipq[IPREASS_NHASH];
static int nipq = 0; /* total # of reass queues */
static int maxnipq;
const int ipintrq_present = 1;
@@ -213,12 +213,11 @@ struct sockaddr_in *ip_fw_fwd_addr;
static void save_rte __P((u_char *, struct in_addr));
static int ip_dooptions __P((struct mbuf *));
static void ip_forward __P((struct mbuf *, int));
-static void ip_freef __P((struct ipq *));
+static void ip_freef __P((struct ipqhead *, struct ipq *));
#ifdef IPDIVERT
-static struct mbuf *ip_reass __P((struct mbuf *,
- struct ipq *, struct ipq *, u_int32_t *, u_int16_t *));
+static struct mbuf *ip_reass __P((struct mbuf *, struct ipqhead *, struct ipq *, u_int32_t *, u_int16_t *));
#else
-static struct mbuf *ip_reass __P((struct mbuf *, struct ipq *, struct ipq *));
+static struct mbuf *ip_reass __P((struct mbuf *, struct ipqhead *, struct ipq *));
#endif
static struct in_ifaddr *ip_rtaddr __P((struct in_addr));
static void ipintr __P((void));
@@ -246,7 +245,7 @@ ip_init()
ip_protox[pr->pr_protocol] = pr - inetsw;
for (i = 0; i < IPREASS_NHASH; i++)
- ipq[i].next = ipq[i].prev = &ipq[i];
+ TAILQ_INIT(&ipq[i]);
maxnipq = nmbclusters/4;
@@ -669,7 +668,7 @@ ours:
* Look for queue of fragments
* of this datagram.
*/
- for (fp = ipq[sum].next; fp != &ipq[sum]; fp = fp->next)
+ TAILQ_FOREACH(fp, &ipq[sum], ipq_list)
if (ip->ip_id == fp->ipq_id &&
ip->ip_src.s_addr == fp->ipq_src.s_addr &&
ip->ip_dst.s_addr == fp->ipq_dst.s_addr &&
@@ -684,15 +683,17 @@ ours:
* drop something from the tail of the current queue
* before proceeding further
*/
- if (ipq[sum].prev == &ipq[sum]) { /* gak */
+ struct ipq *q = TAILQ_LAST(&ipq[sum], ipqhead);
+ if (q == NULL) { /* gak */
for (i = 0; i < IPREASS_NHASH; i++) {
- if (ipq[i].prev != &ipq[i]) {
- ip_freef(ipq[i].prev);
+ struct ipq *r = TAILQ_LAST(&ipq[i], ipqhead);
+ if (r) {
+ ip_freef(&ipq[i], r);
break;
}
}
} else
- ip_freef(ipq[sum].prev);
+ ip_freef(&ipq[sum], q);
}
found:
/*
@@ -720,9 +721,9 @@ found:
m->m_pkthdr.header = ip;
#ifdef IPDIVERT
m = ip_reass(m,
- fp, &ipq[sum], &divert_info, &divert_cookie);
+ &ipq[sum], fp, &divert_info, &divert_cookie);
#else
- m = ip_reass(m, fp, &ipq[sum]);
+ m = ip_reass(m, &ipq[sum], fp);
#endif
if (m == 0) {
#ifdef IPFIREWALL_FORWARD
@@ -832,13 +833,13 @@ ipintr(void)
static struct mbuf *
#ifdef IPDIVERT
-ip_reass(m, fp, where, divinfo, divcookie)
+ip_reass(m, head, fp, divinfo, divcookie)
#else
-ip_reass(m, fp, where)
+ip_reass(m, head, fp)
#endif
- register struct mbuf *m;
- register struct ipq *fp;
- struct ipq *where;
+ struct mbuf *m;
+ struct ipqhead *head;
+ struct ipq *fp;
#ifdef IPDIVERT
u_int32_t *divinfo;
u_int16_t *divcookie;
@@ -864,7 +865,7 @@ ip_reass(m, fp, where)
if ((t = m_get(M_DONTWAIT, MT_FTABLE)) == NULL)
goto dropfrag;
fp = mtod(t, struct ipq *);
- insque(fp, where);
+ TAILQ_INSERT_HEAD(head, fp, ipq_list);
nipq++;
fp->ipq_ttl = IPFRAGTTL;
fp->ipq_p = ip->ip_p;
@@ -968,7 +969,7 @@ inserted:
ip = GETIP(q);
if (next + (IP_VHL_HL(ip->ip_vhl) << 2) > IP_MAXPACKET) {
ipstat.ips_toolong++;
- ip_freef(fp);
+ ip_freef(head, fp);
return (0);
}
@@ -1006,7 +1007,7 @@ inserted:
ip->ip_len = next;
ip->ip_src = fp->ipq_src;
ip->ip_dst = fp->ipq_dst;
- remque(fp);
+ TAILQ_REMOVE(head, fp, ipq_list);
nipq--;
(void) m_free(dtom(fp));
m->m_len += (IP_VHL_HL(ip->ip_vhl) << 2);
@@ -1037,7 +1038,8 @@ dropfrag:
* associated datagrams.
*/
static void
-ip_freef(fp)
+ip_freef(fhp, fp)
+ struct ipqhead *fhp;
struct ipq *fp;
{
register struct mbuf *q;
@@ -1047,7 +1049,7 @@ ip_freef(fp)
fp->ipq_frags = q->m_nextpkt;
m_freem(q);
}
- remque(fp);
+ TAILQ_REMOVE(fhp, fp, ipq_list);
(void) m_free(dtom(fp));
nipq--;
}
@@ -1065,15 +1067,14 @@ ip_slowtimo()
int i;
for (i = 0; i < IPREASS_NHASH; i++) {
- fp = ipq[i].next;
- if (fp == 0)
- continue;
- while (fp != &ipq[i]) {
- --fp->ipq_ttl;
- fp = fp->next;
- if (fp->prev->ipq_ttl == 0) {
+ for(fp = TAILQ_FIRST(&ipq[i]); fp;) {
+ struct ipq *fpp;
+
+ fpp = fp;
+ fp = TAILQ_NEXT(fp, ipq_list);
+ if(--fpp->ipq_ttl == 0) {
ipstat.ips_fragtimeout++;
- ip_freef(fp->prev);
+ ip_freef(&ipq[i], fpp);
}
}
}
@@ -1090,9 +1091,9 @@ ip_drain()
int i;
for (i = 0; i < IPREASS_NHASH; i++) {
- while (ipq[i].next != &ipq[i]) {
+ while(!TAILQ_EMPTY(&ipq[i])) {
ipstat.ips_fragdropped++;
- ip_freef(ipq[i].next);
+ ip_freef(&ipq[i], TAILQ_FIRST(&ipq[i]));
}
}
in_rtqdrain();
diff --git a/sys/netinet/ip_var.h b/sys/netinet/ip_var.h
index 4ddec93..e821f0a 100644
--- a/sys/netinet/ip_var.h
+++ b/sys/netinet/ip_var.h
@@ -55,7 +55,7 @@ struct ipovly {
* be reclaimed if memory becomes tight.
*/
struct ipq {
- struct ipq *next,*prev; /* to other reass headers */
+ TAILQ_ENTRY(ipq) ipq_list; /* to other reass headers */
u_char ipq_ttl; /* time for reass q to live */
u_char ipq_p; /* protocol of this fragment */
u_short ipq_id; /* sequence id for reassembly */
diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c
index 8d5c6d1..1fa0ee8 100644
--- a/sys/netinet/raw_ip.c
+++ b/sys/netinet/raw_ip.c
@@ -385,8 +385,7 @@ rip_ctlinput(cmd, sa, vip)
switch (cmd) {
case PRC_IFDOWN:
- for (ia = TAILQ_FIRST(&in_ifaddrhead); ia;
- ia = TAILQ_NEXT(ia, ia_link)) {
+ TAILQ_FOREACH(ia, &in_ifaddrhead, ia_link) {
if (ia->ia_ifa.ifa_addr == sa
&& (ia->ia_flags & IFA_ROUTE)) {
/*
@@ -406,8 +405,7 @@ rip_ctlinput(cmd, sa, vip)
break;
case PRC_IFUP:
- for (ia = TAILQ_FIRST(&in_ifaddrhead); ia;
- ia = TAILQ_NEXT(ia, ia_link)) {
+ TAILQ_FOREACH(ia, &in_ifaddrhead, ia_link) {
if (ia->ia_ifa.ifa_addr == sa)
break;
}
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
index b70d2b5..8f339e4 100644
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -733,18 +733,16 @@ tcp_drain()
* where we're really low on mbufs, this is potentially
* usefull.
*/
- for (inpb = LIST_FIRST(tcbinfo.listhead); inpb;
- inpb = LIST_NEXT(inpb, inp_list)) {
- if ((tcpb = intotcpcb(inpb))) {
- while ((te = LIST_FIRST(&tcpb->t_segq))
- != NULL) {
+ LIST_FOREACH(inpb, tcbinfo.listhead, inp_list) {
+ if ((tcpb = intotcpcb(inpb))) {
+ while ((te = LIST_FIRST(&tcpb->t_segq))
+ != NULL) {
LIST_REMOVE(te, tqe_q);
m_freem(te->tqe_m);
FREE(te, M_TSEGQ);
}
}
}
-
}
}
diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c
index b70d2b5..8f339e4 100644
--- a/sys/netinet/tcp_timewait.c
+++ b/sys/netinet/tcp_timewait.c
@@ -733,18 +733,16 @@ tcp_drain()
* where we're really low on mbufs, this is potentially
* usefull.
*/
- for (inpb = LIST_FIRST(tcbinfo.listhead); inpb;
- inpb = LIST_NEXT(inpb, inp_list)) {
- if ((tcpb = intotcpcb(inpb))) {
- while ((te = LIST_FIRST(&tcpb->t_segq))
- != NULL) {
+ LIST_FOREACH(inpb, tcbinfo.listhead, inp_list) {
+ if ((tcpb = intotcpcb(inpb))) {
+ while ((te = LIST_FIRST(&tcpb->t_segq))
+ != NULL) {
LIST_REMOVE(te, tqe_q);
m_freem(te->tqe_m);
FREE(te, M_TSEGQ);
}
}
}
-
}
}
OpenPOWER on IntegriCloud