summaryrefslogtreecommitdiffstats
path: root/nest
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>1999-08-03 21:36:06 +0200
committerMartin Mares <mj@ucw.cz>1999-08-03 21:36:06 +0200
commitdce267832a0468ed5e596f0b0733b926af7ead3a (patch)
tree76de529a85a81b12bd04ed150db208b76b0b17b1 /nest
parent707ef833783ef731c56baae1c0dc7b7a9e7321ff (diff)
downloadbird-dce267832a0468ed5e596f0b0733b926af7ead3a.tar
bird-dce267832a0468ed5e596f0b0733b926af7ead3a.zip
Basic support for IPv6. The system-dependent part doesn't work yet,
but the core routines are there and seem to be working. o lib/ipv6.[ch] written o Lexical analyser recognizes IPv6 addresses and when in IPv6 mode, treats pure IPv4 addresses as router IDs. o Router ID must be configured manually on IPv6 systems. o Added SCOPE_ORGANIZATION for org-scoped IPv6 multicasts. o Fixed few places where ipa_(hton|ntoh) was called as a function returning converted address.
Diffstat (limited to 'nest')
-rw-r--r--nest/config.Y13
-rw-r--r--nest/iface.c4
2 files changed, 13 insertions, 4 deletions
diff --git a/nest/config.Y b/nest/config.Y
index 0c65321..dfef4e2 100644
--- a/nest/config.Y
+++ b/nest/config.Y
@@ -20,7 +20,7 @@ CF_KEYWORDS(ROUTER, ID, PROTOCOL, PREFERENCE, DISABLED, DEBUG, ALL, OFF, DIRECT)
CF_KEYWORDS(INTERFACE, IMPORT, EXPORT, FILTER, NONE, TABLE)
CF_KEYWORDS(PASSWORD, FROM, PASSIVE, TO, ID)
-%type <i> idval
+%type <i32> idval
%type <f> imexport
%type <r> rtable
%type <p> password_list password_begin
@@ -37,8 +37,15 @@ rtrid: ROUTER ID idval ';' {
;
idval:
- NUM
- | IPA { $$ = ipa_to_u32($1); }
+ NUM { $$ = $1; }
+ | RTRID
+ | IPA {
+#ifndef IPV6
+ $$ = ipa_to_u32($1);
+#else
+ cf_error("Router IDs must be entered as hexadecimal numbers in IPv6 version");
+#endif
+ }
;
/* Creation of routing tables */
diff --git a/nest/iface.c b/nest/iface.c
index 3a5d9c6..debec45 100644
--- a/nest/iface.c
+++ b/nest/iface.c
@@ -549,8 +549,9 @@ ifa_delete(struct ifa *a)
}
static void
-auto_router_id(void) /* FIXME: What if we run IPv6??? */
+auto_router_id(void)
{
+#ifndef IPV6
struct iface *i, *j;
j = NULL;
@@ -564,6 +565,7 @@ auto_router_id(void) /* FIXME: What if we run IPv6??? */
die("Cannot determine router ID (no suitable network interface found), please configure it manually");
debug("Guessed router ID %I (%s)\n", j->addr->ip, j->name);
config->router_id = ipa_to_u32(j->addr->ip);
+#endif
}
void