summaryrefslogtreecommitdiff
path: root/sys/netinet/tcp_input.c
diff options
context:
space:
mode:
authorDavid Greenman <dg@FreeBSD.org>1995-04-09 01:29:31 +0000
committerDavid Greenman <dg@FreeBSD.org>1995-04-09 01:29:31 +0000
commit15bd2b438554c81b7d0c7716532be39cfdeefe9f (patch)
treee79f945463f3979c08d227856c89070dadbf446b /sys/netinet/tcp_input.c
parent17792ebcb774d4f038a36b3944f5bf0583a46881 (diff)
Notes
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r--sys/netinet/tcp_input.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index d9f287df24147..0ec0643773a2b 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* From: @(#)tcp_input.c 8.5 (Berkeley) 4/10/94
- * $Id: tcp_input.c,v 1.17 1995/03/27 07:12:24 davidg Exp $
+ * $Id: tcp_input.c,v 1.18 1995/04/05 10:32:14 olah Exp $
*/
#ifndef TUBA_INCLUDE
@@ -43,6 +43,7 @@
#include <sys/socket.h>
#include <sys/socketvar.h>
#include <sys/errno.h>
+#include <sys/queue.h>
#include <net/if.h>
#include <net/route.h>
@@ -64,12 +65,12 @@ struct tcpiphdr tcp_saveti;
#endif
int tcprexmtthresh = 3;
-struct inpcb *tcp_last_inpcb = &tcb;
tcp_seq tcp_iss;
tcp_cc tcp_ccgen;
-struct inpcb tcb;
struct tcpstat tcpstat;
u_long tcp_now;
+struct inpcbhead tcb;
+struct inpcbinfo tcbinfo;
#endif /* TUBA_INCLUDE */
@@ -333,17 +334,7 @@ tcp_input(m, iphlen)
* Locate pcb for segment.
*/
findpcb:
- inp = tcp_last_inpcb;
- if (inp->inp_lport != ti->ti_dport ||
- inp->inp_fport != ti->ti_sport ||
- inp->inp_faddr.s_addr != ti->ti_src.s_addr ||
- inp->inp_laddr.s_addr != ti->ti_dst.s_addr) {
- inp = in_pcblookup(&tcb, ti->ti_src, ti->ti_sport,
- ti->ti_dst, ti->ti_dport, INPLOOKUP_WILDCARD);
- if (inp)
- tcp_last_inpcb = inp;
- ++tcpstat.tcps_pcbcachemiss;
- }
+ inp = in_pcblookuphash(&tcbinfo, ti->ti_src, ti->ti_sport, ti->ti_dst, ti->ti_dport);
/*
* If the state is CLOSED (i.e., TCB does not exist) then
@@ -393,6 +384,7 @@ findpcb:
inp = (struct inpcb *)so->so_pcb;
inp->inp_laddr = ti->ti_dst;
inp->inp_lport = ti->ti_dport;
+ in_pcbrehash(inp);
#if BSD>=43
inp->inp_options = ip_srcroute();
#endif