X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=net%2Fipv6%2Faddrconf_core.c;h=3f82e9542edab8840b7b715cda58e6a719950459;hb=9a5467fd600669cda488771dac3e951034fe2b08;hp=faaefb692298152109d1c61b4bff176a6d42c29f;hpb=5992fd1995a5e69710011fc7d7945c62bf5b551b;p=linux-2.6 diff --git a/net/ipv6/addrconf_core.c b/net/ipv6/addrconf_core.c index faaefb6922..3f82e9542e 100644 --- a/net/ipv6/addrconf_core.c +++ b/net/ipv6/addrconf_core.c @@ -50,6 +50,9 @@ int __ipv6_addr_type(const struct in6_addr *addr) if ((st & htonl(0xFFC00000)) == htonl(0xFEC00000)) return (IPV6_ADDR_SITELOCAL | IPV6_ADDR_UNICAST | IPV6_ADDR_SCOPE_TYPE(IPV6_ADDR_SCOPE_SITELOCAL)); /* addr-select 3.1 */ + if ((st & htonl(0xFE000000)) == htonl(0xFC000000)) + return (IPV6_ADDR_UNICAST | + IPV6_ADDR_SCOPE_TYPE(IPV6_ADDR_SCOPE_GLOBAL)); /* RFC 4193 */ if ((addr->s6_addr32[0] | addr->s6_addr32[1]) == 0) { if (addr->s6_addr32[2] == 0) {