-/* if_imphost.c 4.5 82/02/21 */
+/* if_imphost.c 4.6 82/03/09 */
#include "imp.h"
#if NIMP > 0
register int hash = HOSTHASH(addr);
COUNT(HOSTLOOKUP);
+ addr.s_lh = 0;
for (m = hosts; m; m = m->m_next) {
hp = &mtod(m, struct hmbuf *)->hm_hosts[hash];
if (hp->h_refcnt == 0)
continue;
- if (hp->h_addr.s_addr == addr.s_addr)
+ if (hp->h_addr.s_addr == addr.s_addr)
return (hp);
}
return (0);
register int hash = HOSTHASH(addr);
COUNT(HOSTENTER);
+ addr.s_lh = 0;
mprev = &hosts;
while (m = *mprev) {
hp = &mtod(m, struct hmbuf *)->hm_hosts[hash];
hp = hm->hm_hosts;
lp = hp + HPMBUF;
while (hm->hm_count != 0 && hp < lp) {
- if (hp->h_addr.s_net == net)
+ if (hp->h_addr.s_net == net) {
+ hp->h_refcnt = 0;
hostrelease(mtod(m, struct hmbuf *), hp);
+ }
hp++;
}
}
-/* if_imphost.h 4.4 82/02/21 */
+/* if_imphost.h 4.5 82/03/09 */
/*
* Host structure used with IMP's.
*/
#define HOST_ENQUE(hp, m) { \
register struct mbuf *n; \
- hp->h_qcnt++; \
- if ((n = hp->h_q) == 0) \
- hp->h_q = m->m_act = m; \
+ (hp)->h_qcnt++; \
+ if ((n = (hp)->h_q) == 0) \
+ (hp)->h_q = (m)->m_act = (m); \
else { \
- m->m_act = n->m_act; \
- hp->h_q = n->m_act = m; \
+ (m)->m_act = n->m_act; \
+ (hp)->h_q = n->m_act = (m); \
} \
}
#define HOST_DEQUE(hp, m) { \
- if (m = hp->h_q) { \
- if (m->m_act == m) \
- hp->h_q = 0; \
+ if ((m) = (hp)->h_q) { \
+ if ((m)->m_act == (m)) \
+ (hp)->h_q = 0; \
else { \
- m = m->m_act; \
- hp->h_q->m_act = m->m_act; \
+ (m) = (m)->m_act; \
+ (hp)->h_q->m_act = (m)->m_act; \
} \
- hp->h_qcnt--; \
+ (hp)->h_qcnt--; \
+ (m)->m_act = 0; \
} \
}