xserver/os: safer IPv6 "kame hack" fix, only override sin6_scope_id if zero
This helps on KAME-based systems which want to get rid of this hack. The assumption is that if sin6_scope_id is set, then the interface index is no longer embedded in the address. Signed-off-by: Jeremie Courreges-Anglas <jca@wxcvbn.org>
This commit is contained in:
parent
aeed57d722
commit
ab8f8c9841
|
@ -581,7 +581,7 @@ static void
|
|||
in6_fillscopeid(struct sockaddr_in6 *sin6)
|
||||
{
|
||||
#if defined(__KAME__)
|
||||
if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) {
|
||||
if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr) && sin6->sin6_scope_id == 0) {
|
||||
sin6->sin6_scope_id =
|
||||
ntohs(*(u_int16_t *) &sin6->sin6_addr.s6_addr[2]);
|
||||
sin6->sin6_addr.s6_addr[2] = sin6->sin6_addr.s6_addr[3] = 0;
|
||||
|
|
Loading…
Reference in New Issue