xref: /aosp_15_r20/external/libnl/lib/route/pktloc_grammar.l (revision 4dc78e53d49367fa8e61b07018507c90983a077d)
1 %top{
2  #include "nl-default.h"
3 }
4 %{
5  #include <linux/tc_ematch/tc_em_cmp.h>
6 
7  #include <netlink/netlink.h>
8  #include <netlink/utils.h>
9  #include <netlink/route/pktloc.h>
10 
11  #include "pktloc_syntax.h"
12 
13  int pktloc_get_column(yyscan_t);
14  void pktloc_set_column(int, yyscan_t);
15 %}
16 
17 %option 8bit
18 %option reentrant
19 %option warn
20 %option noyywrap
21 %option noinput
22 %option nounput
23 %option bison-bridge
24 %option bison-locations
25 %option prefix="pktloc_"
26 
27 %%
28 
29 [ \t\r\n]+
30 
31 "#".*
32 
33 [[:digit:]]+		|
34 0[xX][[:xdigit:]]+	{
35 				yylval->i = strtoul(yytext, NULL, 0);
36 				return NUMBER;
37 			}
38 
39 "+"			{ return yylval->i = yytext[0]; }
40 
41 [uU]8			{ yylval->i = TCF_EM_ALIGN_U8; return ALIGN; }
42 [uU]16			{ yylval->i = TCF_EM_ALIGN_U16; return ALIGN; }
43 [uU]32			{ yylval->i = TCF_EM_ALIGN_U32; return ALIGN; }
44 
45 [lL][iI][nN][kK]	|
46 [eE][tT][hH]		{ yylval->i = TCF_LAYER_LINK; return LAYER; }
47 [nN][eE][tT]		|
48 [iI][pP]		{ yylval->i = TCF_LAYER_NETWORK; return LAYER; }
49 [tT][rR][aA][nN][sS][pP][oO][rR][tT] |
50 [tT][cC][pP]		{ yylval->i = TCF_LAYER_TRANSPORT; return LAYER; }
51 
52 
53 [^ \t\r\n+]+		{
54 				yylval->s = strdup(yytext);
55 				if (yylval->s == NULL)
56 					return ERROR;
57 				return NAME;
58 			}
59