diff options
author | rwatson <rwatson@FreeBSD.org> | 2004-08-06 03:45:45 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2004-08-06 03:45:45 +0000 |
commit | 11a2e8ce3c40516b1b505be3d5cdbf720ba8069f (patch) | |
tree | 38d3ac3c4e0dee27c2bff0875fc15138701f62ba /sys/netinet/tcp_timewait.c | |
parent | 6680706c2bf89170fdfb9bd5bc9332aa7319a17a (diff) | |
download | FreeBSD-src-11a2e8ce3c40516b1b505be3d5cdbf720ba8069f.zip FreeBSD-src-11a2e8ce3c40516b1b505be3d5cdbf720ba8069f.tar.gz |
Pass pcbinfo structures to in6_pcbnotify() rather than pcbhead
structures, allowing in6_pcbnotify() to lock the pcbinfo and each
inpcb that it notifies of ICMPv6 events. This prevents inpcb
assertions from firing when IPv6 generates and delievers event
notifications for inpcbs.
Reported by: kuriyama
Tested by: kuriyama
Diffstat (limited to 'sys/netinet/tcp_timewait.c')
-rw-r--r-- | sys/netinet/tcp_timewait.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c index 1e23552..cab3e6b 100644 --- a/sys/netinet/tcp_timewait.c +++ b/sys/netinet/tcp_timewait.c @@ -1236,7 +1236,7 @@ tcp6_ctlinput(cmd, sa, d) bzero(&th, sizeof(th)); m_copydata(m, off, sizeof(*thp), (caddr_t)&th); - in6_pcbnotify(&tcb, sa, th.th_dport, + in6_pcbnotify(&tcbinfo, sa, th.th_dport, (struct sockaddr *)ip6cp->ip6c_src, th.th_sport, cmd, NULL, notify); @@ -1247,7 +1247,7 @@ tcp6_ctlinput(cmd, sa, d) inc.inc_isipv6 = 1; syncache_unreach(&inc, &th); } else - in6_pcbnotify(&tcb, sa, 0, (const struct sockaddr *)sa6_src, + in6_pcbnotify(&tcbinfo, sa, 0, (const struct sockaddr *)sa6_src, 0, cmd, NULL, notify); } #endif /* INET6 */ |