]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Use undefined scope for undefined IPv6 addresses.
authorOndrej Zajicek <santiago@crfreenet.org>
Sat, 24 Sep 2011 09:06:42 +0000 (11:06 +0200)
committerOndrej Zajicek <santiago@crfreenet.org>
Sat, 24 Sep 2011 09:06:42 +0000 (11:06 +0200)
lib/ip.c
lib/ip.h
lib/ipv6.c
nest/config.Y

index 791a6013a0a90ac9686f2285827ade8d61bdf589..aa61553eada0a80f9e25142a98b8edc6c27da2fd 100644 (file)
--- 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];
index e9923e2fda68aeafe21e749ff3ea62ffc5add5e5..5d74d21ec36d9c94bbfc93d5308c763c2a06ab41 100644 (file)
--- 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);
 
index 7c28c48a0549be2eeeb6e232b2ea8326646e2acc..623f63280afa3338bc8c62594a051b04f91463f7 100644 (file)
@@ -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
index fa726efb56d453a4b0e7affc79c9a7f39f5628c6..dd4a9e00b9e638d0e461c88a6ce60d2785850e71 100644 (file)
@@ -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)