]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/command_lex.l
lib: add CLI token for 48-bit mac addresses
[mirror_frr.git] / lib / command_lex.l
index 2a241abbec679966a6ae6b4652bd0a69073b0f68..59d0d840a88a8325cd1b66aa6bb794d99b291544 100644 (file)
@@ -23,6 +23,9 @@
  */
 
 %{
+/* ignore harmless bug in old versions of flex */
+#pragma GCC diagnostic ignored "-Wsign-compare"
+
 #include "command_parse.h"
 
 #define YY_USER_ACTION yylloc->last_column += yyleng;
@@ -37,6 +40,8 @@ IPV4            A\.B\.C\.D
 IPV4_PREFIX     A\.B\.C\.D\/M
 IPV6            X:X::X:X
 IPV6_PREFIX     X:X::X:X\/M
+MAC             M:A:C
+MAC_PREFIX      M:A:C\/M
 VARIABLE        [A-Z][-_a-zA-Z:0-9]+
 NUMBER          (\-|\+)?[0-9]{1,20}
 RANGE           \({NUMBER}[ ]?\-[ ]?{NUMBER}\)
@@ -46,8 +51,8 @@ RANGE           \({NUMBER}[ ]?\-[ ]?{NUMBER}\)
 %option noyywrap
 %option nounput
 %option noinput
-%option outfile="command_lex.c"
-%option header-file="command_lex.h"
+%option outfile="lib/command_lex.c"
+%option header-file="lib/command_lex.h"
 %option prefix="cmd_yy"
 %option reentrant
 %option bison-bridge
@@ -59,13 +64,15 @@ RANGE           \({NUMBER}[ ]?\-[ ]?{NUMBER}\)
 %}
 
 [ \t]+          LOC_STEP /* ignore whitespace */;
-{WORD}          {yylval->string = XSTRDUP(MTYPE_TMP, yytext); return WORD;}
-{IPV4}          {yylval->string = XSTRDUP(MTYPE_TMP, yytext); return IPV4;}
-{IPV4_PREFIX}   {yylval->string = XSTRDUP(MTYPE_TMP, yytext); return IPV4_PREFIX;}
-{IPV6}          {yylval->string = XSTRDUP(MTYPE_TMP, yytext); return IPV6;}
-{IPV6_PREFIX}   {yylval->string = XSTRDUP(MTYPE_TMP, yytext); return IPV6_PREFIX;}
-{VARIABLE}      {yylval->string = XSTRDUP(MTYPE_TMP, yytext); return VARIABLE;}
-{RANGE}         {yylval->string = XSTRDUP(MTYPE_TMP, yytext); return RANGE;}
+{WORD}          {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return WORD;}
+{IPV4}          {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return IPV4;}
+{IPV4_PREFIX}   {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return IPV4_PREFIX;}
+{IPV6}          {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return IPV6;}
+{IPV6_PREFIX}   {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return IPV6_PREFIX;}
+{MAC}           {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return MAC;}
+{MAC_PREFIX}    {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return MAC_PREFIX;}
+{VARIABLE}      {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return VARIABLE;}
+{RANGE}         {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return RANGE;}
 .               {return yytext[0];}
 %%