[PATCH] XDMCP: For IPv6 add IPv6 link local addresses to the end of the list

Egbert Eich eich at freedesktop.org
Sat Feb 8 12:40:39 PST 2014


On Sun, Feb 09, 2014 at 01:51:58AM +0600, Alexander E. Patrakov wrote:
> 
> Not tested, but looks OK. Although, if I were you, I'd replace "no way of
> telling to the other end" with "no way of guessing for the other end" in the
> commit message. But I don't insist.
> 
> Even if the protocol had the field for that, there is simply no information
> available on any other host to fill it correctly.
> 

Thanks for looking into this!

Ok, I've made the commit message a bit more precise also taking into account
your suggestion (see attachment).
Would you add your "Reviewed-By: "?

Cheers,
	Egbert.
-------------- next part --------------
>From d1c228d21f5d6ff99fd025d08e85658f1c2c05f0 Mon Sep 17 00:00:00 2001
From: Reinhard Max <max at suse.de>
Date: Sat, 8 Feb 2014 19:32:08 +0100
Subject: [PATCH] XDMCP: Ignore IPv6 link local addresses

Ignore IPv6 link local addresses (fe80::/10), because
the other end would need a scope identifier to determine
the interface, which it has no way to guess.

Signed-off-by: Egbert Eich <eich at freedesktop.org>
---
 os/access.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/os/access.c b/os/access.c
index e8c0781..1a2df34 100644
--- a/os/access.c
+++ b/os/access.c
@@ -600,7 +600,8 @@ DefineSelf(int fd)
                 continue;
 #if defined(IPv6) && defined(AF_INET6)
             else if (family == FamilyInternet6 &&
-                     IN6_IS_ADDR_LOOPBACK((struct in6_addr *) addr))
+                     (IN6_IS_ADDR_LOOPBACK((struct in6_addr *) addr) ||
+                      IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)addr)))
                 continue;
 #endif
 
@@ -733,7 +734,8 @@ DefineSelf(int fd)
                 continue;
 #if defined(IPv6) && defined(AF_INET6)
             else if (family == FamilyInternet6 &&
-                     IN6_IS_ADDR_LOOPBACK((struct in6_addr *) addr))
+                     (IN6_IS_ADDR_LOOPBACK((struct in6_addr *) addr) ||
+                      IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)addr)))
                 continue;
 #endif
             XdmcpRegisterConnection(family, (char *) addr, len);
-- 
1.8.1.4



More information about the xorg-devel mailing list