[Midnightbsd-cvs] src [7524] trunk/sys/netinet6/scope6.c: Check if an extracted zoneid is equal to the non-zero sin6_scope_id only when
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Thu Apr 14 07:27:51 EDT 2016
Revision: 7524
http://svnweb.midnightbsd.org/src/?rev=7524
Author: laffer1
Date: 2016-04-14 07:27:50 -0400 (Thu, 14 Apr 2016)
Log Message:
-----------
Check if an extracted zoneid is equal to the non-zero sin6_scope_id only when
it is link-local or MC interface-local.
Obtained from: FreeBSD, svn rev 243235
Revision Links:
--------------
http://svnweb.midnightbsd.org/src/?rev=243235
Modified Paths:
--------------
trunk/sys/netinet6/scope6.c
Modified: trunk/sys/netinet6/scope6.c
===================================================================
--- trunk/sys/netinet6/scope6.c 2016-04-13 00:35:36 UTC (rev 7523)
+++ trunk/sys/netinet6/scope6.c 2016-04-14 11:27:50 UTC (rev 7524)
@@ -374,12 +374,6 @@
char ip6buf[INET6_ADDRSTRLEN];
u_int32_t zoneid;
- if (sin6->sin6_scope_id != 0) {
- log(LOG_NOTICE,
- "sa6_recoverscope: assumption failure (non 0 ID): %s%%%d\n",
- ip6_sprintf(ip6buf, &sin6->sin6_addr), sin6->sin6_scope_id);
- /* XXX: proceed anyway... */
- }
if (IN6_IS_SCOPE_LINKLOCAL(&sin6->sin6_addr) ||
IN6_IS_ADDR_MC_INTFACELOCAL(&sin6->sin6_addr)) {
/*
@@ -392,6 +386,14 @@
return (ENXIO);
if (!ifnet_byindex(zoneid))
return (ENXIO);
+ if (sin6->sin6_scope_id != 0 &&
+ zoneid != sin6->sin6_scope_id) {
+ log(LOG_NOTICE,
+ "%s: embedded scope mismatch: %s%%%d. "
+ "sin6_scope_id was overridden.", __func__,
+ ip6_sprintf(ip6buf, &sin6->sin6_addr),
+ sin6->sin6_scope_id);
+ }
sin6->sin6_addr.s6_addr16[1] = 0;
sin6->sin6_scope_id = zoneid;
}
More information about the Midnightbsd-cvs
mailing list