From: Ondrej Zajicek Date: Sat, 24 Sep 2011 09:06:42 +0000 (+0200) Subject: Use undefined scope for undefined IPv6 addresses. X-Git-Tag: v1.3.4~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf6d91dc4edf3d08f0de41f71503159b1713fc9a;p=thirdparty%2Fbird.git Use undefined scope for undefined IPv6 addresses. --- diff --git a/lib/ip.c b/lib/ip.c index 791a6013a..aa61553ea 100644 --- a/lib/ip.c +++ b/lib/ip.c @@ -27,9 +27,9 @@ char * ip_scope_text(unsigned scope) { - static char *scope_table[] = { "host", "link", "site", "org", "univ" }; + static char *scope_table[] = { "host", "link", "site", "org", "univ", "undef" }; - if (scope > SCOPE_UNIVERSE) + if (scope > SCOPE_UNDEFINED) return "?"; else return scope_table[scope]; diff --git a/lib/ip.h b/lib/ip.h index e9923e2fd..5d74d21ec 100644 --- a/lib/ip.h +++ b/lib/ip.h @@ -37,6 +37,7 @@ #define SCOPE_SITE 2 #define SCOPE_ORGANIZATION 3 #define SCOPE_UNIVERSE 4 +#define SCOPE_UNDEFINED 5 char *ip_scope_text(unsigned); diff --git a/lib/ipv6.c b/lib/ipv6.c index 7c28c48a0..623f63280 100644 --- a/lib/ipv6.c +++ b/lib/ipv6.c @@ -85,6 +85,7 @@ ipv6_classify(ip_addr *a) case 5: return IADDR_MULTICAST | SCOPE_SITE; case 8: return IADDR_MULTICAST | SCOPE_ORGANIZATION; case 14: return IADDR_MULTICAST | SCOPE_UNIVERSE; + default: return IADDR_MULTICAST | SCOPE_UNDEFINED; } } if (!x && !a->addr[1] && !a->addr[2]) @@ -102,7 +103,7 @@ ipv6_classify(ip_addr *a) if (y >= 0x01000000 && y < 0xe0000000) return IADDR_HOST | SCOPE_UNIVERSE; } - return IADDR_INVALID; + return IADDR_HOST | SCOPE_UNDEFINED; } void diff --git a/nest/config.Y b/nest/config.Y index fa726efb5..dd4a9e00b 100644 --- a/nest/config.Y +++ b/nest/config.Y @@ -49,7 +49,7 @@ CF_KEYWORDS(RELOAD, IN, OUT, MRTDUMP, MESSAGES, RESTRICT, MEMORY, IGP_METRIC) CF_ENUM(T_ENUM_RTS, RTS_, DUMMY, STATIC, INHERIT, DEVICE, STATIC_DEVICE, REDIRECT, RIP, OSPF, OSPF_IA, OSPF_EXT1, OSPF_EXT2, BGP, PIPE) -CF_ENUM(T_ENUM_SCOPE, SCOPE_, HOST, LINK, SITE, ORGANIZATION, UNIVERSE) +CF_ENUM(T_ENUM_SCOPE, SCOPE_, HOST, LINK, SITE, ORGANIZATION, UNIVERSE, UNDEFINED) CF_ENUM(T_ENUM_RTC, RTC_, UNICAST, BROADCAST, MULTICAST, ANYCAST) CF_ENUM(T_ENUM_RTD, RTD_, ROUTER, DEVICE, BLACKHOLE, UNREACHABLE, PROHIBIT, MULTIPATH)