]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/command_lex.l
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / lib / command_lex.l
index f361db78e940d3ea0657b5dd1c4a103543109f48..dc89191c13464c536d64099860a33cfdec70d5d7 100644 (file)
@@ -1,25 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  * Command format string lexer for CLI backend.
  *
  * --
  * Copyright (C) 2015 Cumulus Networks, Inc.
- *
- * This file is part of GNU Zebra.
- *
- * GNU Zebra is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
- *
- * GNU Zebra is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Zebra; see the file COPYING.  If not, write to the Free
- * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
  */
 
 %top{
@@ -35,7 +19,7 @@
 #pragma GCC diagnostic ignored "-Wsign-compare"
 #pragma GCC diagnostic ignored "-Wmissing-prototypes"
 
-#include "command_parse.h"
+#include "lib/command_parse.h"
 
 #define YY_USER_ACTION yylloc->last_column += yyleng;
 #define LOC_STEP do { if (yylloc) { \
@@ -54,6 +38,7 @@ VARIABLE        [A-Z][-_A-Z:0-9]+
 WORD            (\-|\+)?[a-zA-Z0-9\*][-+_a-zA-Z0-9\*]*
 NUMBER          (\-|\+)?[0-9]{1,20}
 RANGE           \({NUMBER}[ ]?\-[ ]?{NUMBER}\)
+ASNUM           ASNUM
 
 /* yytext shall be a pointer */
 %pointer
@@ -73,6 +58,7 @@ RANGE           \({NUMBER}[ ]?\-[ ]?{NUMBER}\)
 %}
 
 [ \t]+          LOC_STEP /* ignore whitespace */;
+{ASNUM}         {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return ASNUM;}
 {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;}
@@ -82,10 +68,11 @@ RANGE           \({NUMBER}[ ]?\-[ ]?{NUMBER}\)
 {VARIABLE}      {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return VARIABLE;}
 {WORD}          {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return WORD;}
 {RANGE}         {yylval->string = XSTRDUP(MTYPE_LEX, yytext); return RANGE;}
+!\[             {yylval->string = NULL; return EXCL_BRACKET;}
 .               {return yytext[0];}
 %%
 
-YY_BUFFER_STATE buffer;
+static YY_BUFFER_STATE buffer;
 
 void set_lexer_string (yyscan_t *scn, const char *string)
 {