|
@@ -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) {
|