summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r--sys/netinet/tcp_input.c79
1 files changed, 42 insertions, 37 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 33b8926e9e1..8d99ae6f22f 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcp_input.c,v 1.242 2011/04/04 22:25:24 blambert Exp $ */
+/* $OpenBSD: tcp_input.c,v 1.243 2011/04/04 23:04:18 blambert Exp $ */
/* $NetBSD: tcp_input.c,v 1.23 1996/02/13 23:43:44 christos Exp $ */
/*
@@ -190,6 +190,9 @@ do { \
TCP_SET_DELACK(tp); \
} while (0)
+void syn_cache_put(struct syn_cache *);
+void syn_cache_rm(struct syn_cache *);
+
/*
* Insert segment ti into reassembly queue of tcp with
* control block tp. Return TH_FIN if reassembly now includes
@@ -3353,27 +3356,29 @@ do { \
} while (/*CONSTCOND*/0)
#endif /* INET6 */
-#define SYN_CACHE_RM(sc) \
-do { \
- (sc)->sc_flags |= SCF_DEAD; \
- TAILQ_REMOVE(&tcp_syn_cache[(sc)->sc_bucketidx].sch_bucket, \
- (sc), sc_bucketq); \
- (sc)->sc_tp = NULL; \
- LIST_REMOVE((sc), sc_tpq); \
- tcp_syn_cache[(sc)->sc_bucketidx].sch_length--; \
- timeout_del(&(sc)->sc_timer); \
- syn_cache_count--; \
-} while (/*CONSTCOND*/0)
+void
+syn_cache_rm(struct syn_cache *sc)
+{
+ sc->sc_flags |= SCF_DEAD;
+ TAILQ_REMOVE(&tcp_syn_cache[sc->sc_bucketidx].sch_bucket,
+ sc, sc_bucketq);
+ sc->sc_tp = NULL;
+ LIST_REMOVE(sc, sc_tpq);
+ tcp_syn_cache[sc->sc_bucketidx].sch_length--;
+ timeout_del(&sc->sc_timer);
+ syn_cache_count--;
+}
-#define SYN_CACHE_PUT(sc) \
-do { \
- if ((sc)->sc_ipopts) \
- (void) m_free((sc)->sc_ipopts); \
- if ((sc)->sc_route4.ro_rt != NULL) \
- RTFREE((sc)->sc_route4.ro_rt); \
- timeout_set(&(sc)->sc_timer, syn_cache_reaper, (sc)); \
- timeout_add(&(sc)->sc_timer, 0); \
-} while (/*CONSTCOND*/0)
+void
+syn_cache_put(struct syn_cache *sc)
+{
+ if (sc->sc_ipopts)
+ (void) m_free(sc->sc_ipopts);
+ if (sc->sc_route4.ro_rt != NULL)
+ RTFREE(sc->sc_route4.ro_rt);
+ timeout_set(&sc->sc_timer, syn_cache_reaper, sc);
+ timeout_add(&sc->sc_timer, 0);
+}
struct pool syn_cache_pool;
@@ -3447,8 +3452,8 @@ syn_cache_insert(struct syn_cache *sc, struct tcpcb *tp)
if (sc2 == NULL)
panic("syn_cache_insert: bucketoverflow: impossible");
#endif
- SYN_CACHE_RM(sc2);
- SYN_CACHE_PUT(sc2);
+ syn_cache_rm(sc2);
+ syn_cache_put(sc2);
} else if (syn_cache_count >= tcp_syn_cache_limit) {
struct syn_cache_head *scp2, *sce;
@@ -3481,8 +3486,8 @@ syn_cache_insert(struct syn_cache *sc, struct tcpcb *tp)
#endif
}
sc2 = TAILQ_FIRST(&scp2->sch_bucket);
- SYN_CACHE_RM(sc2);
- SYN_CACHE_PUT(sc2);
+ syn_cache_rm(sc2);
+ syn_cache_put(sc2);
}
/*
@@ -3547,8 +3552,8 @@ syn_cache_timer(void *arg)
dropit:
tcpstat.tcps_sc_timed_out++;
- SYN_CACHE_RM(sc);
- SYN_CACHE_PUT(sc);
+ syn_cache_rm(sc);
+ syn_cache_put(sc);
splx(s);
}
@@ -3584,8 +3589,8 @@ syn_cache_cleanup(struct tcpcb *tp)
if (sc->sc_tp != tp)
panic("invalid sc_tp in syn_cache_cleanup");
#endif
- SYN_CACHE_RM(sc);
- SYN_CACHE_PUT(sc);
+ syn_cache_rm(sc);
+ syn_cache_put(sc);
}
/* just for safety */
LIST_INIT(&tp->t_sc);
@@ -3680,7 +3685,7 @@ syn_cache_get(struct sockaddr *src, struct sockaddr *dst, struct tcphdr *th,
}
/* Remove this cache entry */
- SYN_CACHE_RM(sc);
+ syn_cache_rm(sc);
splx(s);
/*
@@ -3879,7 +3884,7 @@ syn_cache_get(struct sockaddr *src, struct sockaddr *dst, struct tcphdr *th,
tp->last_ack_sent = tp->rcv_nxt;
tcpstat.tcps_sc_completed++;
- SYN_CACHE_PUT(sc);
+ syn_cache_put(sc);
return (so);
resetandabort:
@@ -3889,7 +3894,7 @@ resetandabort:
abort:
if (so != NULL)
(void) soabort(so);
- SYN_CACHE_PUT(sc);
+ syn_cache_put(sc);
tcpstat.tcps_sc_aborted++;
return ((struct socket *)(-1));
}
@@ -3917,10 +3922,10 @@ syn_cache_reset(struct sockaddr *src, struct sockaddr *dst, struct tcphdr *th,
splx(s);
return;
}
- SYN_CACHE_RM(sc);
+ syn_cache_rm(sc);
splx(s);
tcpstat.tcps_sc_reset++;
- SYN_CACHE_PUT(sc);
+ syn_cache_put(sc);
}
void
@@ -3956,10 +3961,10 @@ syn_cache_unreach(struct sockaddr *src, struct sockaddr *dst, struct tcphdr *th,
return;
}
- SYN_CACHE_RM(sc);
+ syn_cache_rm(sc);
splx(s);
tcpstat.tcps_sc_unreach++;
- SYN_CACHE_PUT(sc);
+ syn_cache_put(sc);
}
/*
@@ -4148,7 +4153,7 @@ syn_cache_add(struct sockaddr *src, struct sockaddr *dst, struct tcphdr *th,
tcpstat.tcps_sndacks++;
tcpstat.tcps_sndtotal++;
} else {
- SYN_CACHE_PUT(sc);
+ syn_cache_put(sc);
tcpstat.tcps_sc_dropped++;
}
return (1);