-/* $OpenBSD: tcp_input.c,v 1.319 2016/06/09 23:09:51 bluhm Exp $ */
+/* $OpenBSD: tcp_input.c,v 1.320 2016/06/27 12:25:27 bluhm Exp $ */
/* $NetBSD: tcp_input.c,v 1.23 1996/02/13 23:43:44 christos Exp $ */
/*
{
struct syn_cache *sc;
struct syn_cache_head *scp;
- struct inpcb *inp = NULL;
+ struct inpcb *inp, *oldinp;
struct tcpcb *tp = NULL;
struct mbuf *am;
int s;
if (so == NULL)
goto resetandabort;
- inp = sotoinpcb(oso);
+ oldinp = sotoinpcb(oso);
+ inp = sotoinpcb(so);
#ifdef IPSEC
/*
* from the old pcb. Ditto for any other
* IPsec-related information.
*/
- {
- struct inpcb *newinp = sotoinpcb(so);
- memcpy(newinp->inp_seclevel, inp->inp_seclevel,
- sizeof(inp->inp_seclevel));
- }
+ memcpy(inp->inp_seclevel, oldinp->inp_seclevel,
+ sizeof(oldinp->inp_seclevel));
#endif /* IPSEC */
#ifdef INET6
/*
* inp still has the OLD in_pcb stuff, set the
* v6-related flags on the new guy, too.
*/
- {
- int flags = inp->inp_flags;
- struct inpcb *oldinpcb = inp;
-
- inp = sotoinpcb(so);
- inp->inp_flags |= (flags & INP_IPV6);
- if ((inp->inp_flags & INP_IPV6) != 0) {
- inp->inp_ipv6.ip6_hlim =
- oldinpcb->inp_ipv6.ip6_hlim;
- }
+ inp->inp_flags |= (oldinp->inp_flags & INP_IPV6);
+ if (inp->inp_flags & INP_IPV6) {
+ inp->inp_ipv6.ip6_hlim = oldinp->inp_ipv6.ip6_hlim;
}
-#else /* INET6 */
- inp = sotoinpcb(so);
#endif /* INET6 */
#if NPF > 0