diff options
Diffstat (limited to 'epan/dfilter')
-rw-r--r-- | epan/dfilter/scanner.l | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/epan/dfilter/scanner.l b/epan/dfilter/scanner.l index c8838a7219..cd63e08e7e 100644 --- a/epan/dfilter/scanner.l +++ b/epan/dfilter/scanner.l @@ -378,8 +378,12 @@ v6-cidr-prefix \/[[:digit:]]{1,3} return set_lval_str(TOKEN_UNPARSED, yytext); } -[[:xdigit:]]+:[[:xdigit:]:]* { +:?[[:xdigit:]]+:[[:xdigit:]:]* { /* Bytes. */ + if (yytext[0] == ':') { + /* Skip leading colon. */ + return set_lval_str(TOKEN_LITERAL, yytext + 1); + } return set_lval_str(TOKEN_UNPARSED, yytext); } @@ -392,8 +396,10 @@ v6-cidr-prefix \/[[:digit:]]{1,3} /* Identifier or literal or unparsed. */ if (yytext[0] == '.') return set_lval_str(TOKEN_IDENTIFIER, yytext); - if (yytext[0] == ':') - return set_lval_str(TOKEN_LITERAL, yytext); + if (yytext[0] == ':') { + /* Skip leading colon. */ + return set_lval_str(TOKEN_LITERAL, yytext + 1); + } return set_lval_str(TOKEN_UNPARSED, yytext); } |