From: Ondrej Zajicek Date: Thu, 12 Aug 2010 08:22:40 +0000 (+0200) Subject: Supports unique local unicast addresses. X-Git-Tag: v1.3.0~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dcc71a7fb7e507acc2e0b417e6c9d1940448908e;p=thirdparty%2Fbird.git Supports unique local unicast addresses. --- diff --git a/lib/ipv6.c b/lib/ipv6.c index 88c54eb6e..7c28c48a0 100644 --- a/lib/ipv6.c +++ b/lib/ipv6.c @@ -67,13 +67,15 @@ ipv6_classify(ip_addr *a) { u32 x = a->addr[0]; - if ((x & 0xe0000000) == 0x20000000) /* Aggregatable Global Unicast Address */ + if ((x & 0xe0000000) == 0x20000000) /* 2000::/3 Aggregatable Global Unicast Address */ return IADDR_HOST | SCOPE_UNIVERSE; - if ((x & 0xffc00000) == 0xfe800000) /* Link-Local Address */ + if ((x & 0xffc00000) == 0xfe800000) /* fe80::/10 Link-Local Address */ return IADDR_HOST | SCOPE_LINK; - if ((x & 0xffc00000) == 0xfec00000) /* Site-Local Address */ + if ((x & 0xffc00000) == 0xfec00000) /* fec0::/10 Site-Local Address */ return IADDR_HOST | SCOPE_SITE; - if ((x & 0xff000000) == 0xff000000) /* Multicast Address */ + if ((x & 0xfe000000) == 0xfc000000) /* fc00::/7 Unique Local Unicast Address (RFC 4193) */ + return IADDR_HOST | SCOPE_SITE; + if ((x & 0xff000000) == 0xff000000) /* ff00::/8 Multicast Address */ { unsigned int scope = (x >> 16) & 0x0f; switch (scope)