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