From 7c9c6aebe8daabece9e78d47727dcdcb757c0a63 Mon Sep 17 00:00:00 2001 From: Roman Hoog Antink Date: Wed, 9 May 2012 06:35:34 +0000 Subject: lib: drop heuristic IPv6 address recognition * command.c: (cmd_ipv6_match) Drop IPv6 address recognition heuristics and solely rely on inet_pton, because strings like "abcd" were mistaken for IPv6 addresses. This affects e.g. the command "neighbour WORD peer-group", which won't work with words consisting of up to 4 characters between 'a' and 'f' and digits. From: Roman Hoog Antink [full delete instead of #if 0] Signed-off-by: David Lamparter --- lib/command.c | 81 +---------------------------------------------------------- 1 file changed, 1 insertion(+), 80 deletions(-) (limited to 'lib') diff --git a/lib/command.c b/lib/command.c index e62a7a7e..4d95e924 100644 --- a/lib/command.c +++ b/lib/command.c @@ -868,86 +868,7 @@ cmd_ipv6_match (const char *str) if (ret == 1) return exact_match; - while (*str != '\0') - { - switch (state) - { - case STATE_START: - if (*str == ':') - { - if (*(str + 1) != ':' && *(str + 1) != '\0') - return no_match; - colons--; - state = STATE_COLON; - } - else - { - sp = str; - state = STATE_ADDR; - } - - continue; - case STATE_COLON: - colons++; - if (*(str + 1) == ':') - state = STATE_DOUBLE; - else - { - sp = str + 1; - state = STATE_ADDR; - } - break; - case STATE_DOUBLE: - if (double_colon) - return no_match; - - if (*(str + 1) == ':') - return no_match; - else - { - if (*(str + 1) != '\0') - colons++; - sp = str + 1; - state = STATE_ADDR; - } - - double_colon++; - nums++; - break; - case STATE_ADDR: - if (*(str + 1) == ':' || *(str + 1) == '\0') - { - if (str - sp > 3) - return no_match; - - nums++; - state = STATE_COLON; - } - if (*(str + 1) == '.') - state = STATE_DOT; - break; - case STATE_DOT: - state = STATE_ADDR; - break; - default: - break; - } - - if (nums > 8) - return no_match; - - if (colons > 7) - return no_match; - - str++; - } - -#if 0 - if (nums < 11) - return partly_match; -#endif /* 0 */ - - return exact_match; + return no_match; } static enum match_type -- cgit v1.2.1