|
version 1.1.1.2, 2012/10/09 09:22:28
|
version 1.1.1.3, 2013/07/21 23:54:39
|
|
Line 84 static const char *default_motd =
|
Line 84 static const char *default_motd =
|
| "\r\n\ |
"\r\n\ |
| Hello, this is " QUAGGA_PROGNAME " (version " QUAGGA_VERSION ").\r\n\ |
Hello, this is " QUAGGA_PROGNAME " (version " QUAGGA_VERSION ").\r\n\ |
| " QUAGGA_COPYRIGHT "\r\n\ |
" QUAGGA_COPYRIGHT "\r\n\ |
| \r\n"; | " GIT_INFO "\r\n"; |
| |
|
| |
|
| static const struct facility_map { |
static const struct facility_map { |
|
Line 868 cmd_ipv6_match (const char *str)
|
Line 868 cmd_ipv6_match (const char *str)
|
| if (ret == 1) |
if (ret == 1) |
| return exact_match; |
return exact_match; |
| |
|
| while (*str != '\0') | return no_match; |
| { | |
| 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; | |
| } |
} |
| |
|
| static enum match_type |
static enum match_type |
|
Line 1033 cmd_ipv6_prefix_match (const char *str)
|
Line 954 cmd_ipv6_prefix_match (const char *str)
|
| if (*(str + 1) == ':') |
if (*(str + 1) == ':') |
| state = STATE_COLON; |
state = STATE_COLON; |
| else if (*(str + 1) == '.') |
else if (*(str + 1) == '.') |
| state = STATE_DOT; | { |
| | if (colons || double_colon) |
| | state = STATE_DOT; |
| | else |
| | return no_match; |
| | } |
| else if (*(str + 1) == '/') |
else if (*(str + 1) == '/') |
| state = STATE_SLASH; |
state = STATE_SLASH; |
| } |
} |
|
Line 2483 DEFUN (show_version,
|
Line 2409 DEFUN (show_version,
|
| { |
{ |
| vty_out (vty, "Quagga %s (%s).%s", QUAGGA_VERSION, host.name?host.name:"", |
vty_out (vty, "Quagga %s (%s).%s", QUAGGA_VERSION, host.name?host.name:"", |
| VTY_NEWLINE); |
VTY_NEWLINE); |
| vty_out (vty, "%s%s", QUAGGA_COPYRIGHT, VTY_NEWLINE); | vty_out (vty, "%s%s%s", QUAGGA_COPYRIGHT, GIT_INFO, VTY_NEWLINE); |
| |
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |