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