7fc24a1512
git-svn-id: svn://svn.openwrt.org/openwrt/packages@32703 3c298f89-4303-0410-b956-a3cf2f4a3e73
91 lines
1.5 KiB
Diff
91 lines
1.5 KiB
Diff
--- 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
|