svn commit: r256564 - user/ae/inet6/sys/netinet
Andrey V. Elsukov
ae at FreeBSD.org
Tue Oct 15 23:19:29 UTC 2013
Author: ae
Date: Tue Oct 15 23:19:28 2013
New Revision: 256564
URL: http://svnweb.freebsd.org/changeset/base/256564
Log:
Initialize zoneid if src or dst address is from link-local scope.
Modified:
user/ae/inet6/sys/netinet/tcp_input.c
user/ae/inet6/sys/netinet/tcp_subr.c
Modified: user/ae/inet6/sys/netinet/tcp_input.c
==============================================================================
--- user/ae/inet6/sys/netinet/tcp_input.c Tue Oct 15 21:28:51 2013 (r256563)
+++ user/ae/inet6/sys/netinet/tcp_input.c Tue Oct 15 23:19:28 2013 (r256564)
@@ -98,6 +98,7 @@ __FBSDID("$FreeBSD$");
#include <netinet6/in6_pcb.h>
#include <netinet6/ip6_var.h>
#include <netinet6/nd6.h>
+#include <netinet6/scope6_var.h>
#include <netinet/tcp_fsm.h>
#include <netinet/tcp_seq.h>
#include <netinet/tcp_timer.h>
@@ -1060,6 +1061,11 @@ relocked:
inc.inc_flags |= INC_ISIPV6;
inc.inc6_faddr = ip6->ip6_src;
inc.inc6_laddr = ip6->ip6_dst;
+ if (IN6_IS_ADDR_LINKLOCAL(&ip6->ip6_src) ||
+ IN6_IS_ADDR_LINKLOCAL(&ip6->ip6_dst))
+ inc.inc6_zoneid = in6_getscopezone(
+ m->m_pkthdr.rcvif,
+ IPV6_ADDR_SCOPE_LINKLOCAL);
} else
#endif
{
Modified: user/ae/inet6/sys/netinet/tcp_subr.c
==============================================================================
--- user/ae/inet6/sys/netinet/tcp_subr.c Tue Oct 15 21:28:51 2013 (r256563)
+++ user/ae/inet6/sys/netinet/tcp_subr.c Tue Oct 15 23:19:28 2013 (r256564)
@@ -1569,6 +1569,10 @@ tcp6_ctlinput(int cmd, struct sockaddr *
inc.inc6_faddr = ((struct sockaddr_in6 *)sa)->sin6_addr;
inc.inc6_laddr = ip6cp->ip6c_src->sin6_addr;
inc.inc_flags |= INC_ISIPV6;
+ if (IN6_IS_ADDR_LINKLOCAL(&inc.inc6_laddr) ||
+ IN6_IS_ADDR_LINKLOCAL(&inc.inc6_faddr))
+ inc.inc6_zoneid = in6_getscopezone(m->m_pkthdr.rcvif,
+ IPV6_ADDR_SCOPE_LINKLOCAL);
INP_INFO_WLOCK(&V_tcbinfo);
syncache_unreach(&inc, &th);
INP_INFO_WUNLOCK(&V_tcbinfo);
More information about the svn-src-user
mailing list