From dce267832a0468ed5e596f0b0733b926af7ead3a Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 3 Aug 1999 19:36:06 +0000 Subject: 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. --- conf/cf-lex.l | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'conf/cf-lex.l') diff --git a/conf/cf-lex.l b/conf/cf-lex.l index 94c2b2a..21727a9 100644 --- a/conf/cf-lex.l +++ b/conf/cf-lex.l @@ -65,9 +65,25 @@ WHITE [ \t] %% {DIGIT}+\.{DIGIT}+\.{DIGIT}+\.{DIGIT}+ { +#ifdef IPV6 + if (ipv4_pton_u32(yytext, &cf_lval.i32)) + return RTRID; + cf_error("Invalid IPv4 address %s", yytext); +#else if (ip_pton(yytext, &cf_lval.a)) return IPA; - cf_error("Invalid IP address"); + cf_error("Invalid IP address %s", yytext); +#endif +} + +({XIGIT}*::|({XIGIT}*:){3,})({XIGIT}*|{DIGIT}+\.{DIGIT}+\.{DIGIT}+\.{DIGIT}+) { +#ifdef IPV6 + if (ip_pton(yytext, &cf_lval.a)) + return IPA; + cf_error("Invalid IP address %s", yytext); +#else + cf_error("This is an IPv4 router, therefore IPv6 addresses are not supported"); +#endif } 0x{DIGIT}+ { -- cgit v1.2.3