[packages] quagga: Drop heuristics for IPv6 address recognition

git-svn-id: svn://svn.openwrt.org/openwrt/packages@32698 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
acinonyx 2012-07-13 16:35:41 +00:00
parent 3689198b21
commit 4fb0f4b557

View File

@ -0,0 +1,92 @@
Index: quagga-0.99.21/lib/command.c
===================================================================
--- quagga-0.99.21.orig/lib/command.c
+++ quagga-0.99.21/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