diff options
author | Martin Mares <mj@ucw.cz> | 1999-08-03 21:36:06 +0200 |
---|---|---|
committer | Martin Mares <mj@ucw.cz> | 1999-08-03 21:36:06 +0200 |
commit | dce267832a0468ed5e596f0b0733b926af7ead3a (patch) | |
tree | 76de529a85a81b12bd04ed150db208b76b0b17b1 /nest | |
parent | 707ef833783ef731c56baae1c0dc7b7a9e7321ff (diff) | |
download | bird-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.Y | 13 | ||||
-rw-r--r-- | nest/iface.c | 4 |
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 |