1db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%{ 2054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart #include <netlink-private/netlink.h> 3054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart #include <netlink-private/tc.h> 4db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf #include <netlink/netlink.h> 5db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf #include <netlink/utils.h> 6db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf #include <netlink/route/pktloc.h> 7db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf #include "pktloc_syntax.h" 8db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%} 9db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf 10db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%option 8bit 11db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%option reentrant 12db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%option warn 13db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%option noyywrap 14054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart%option noinput 15db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%option nounput 16db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%option bison-bridge 17db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%option bison-locations 18db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%option prefix="pktloc_" 19db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf 20db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf%% 21db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf 22db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf[ \t\r\n]+ 23db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf 24db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf"#".* 25db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf 26db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf[[:digit:]]+ | 27db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf0[xX][[:xdigit:]]+ { 28db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf yylval->i = strtoul(yytext, NULL, 0); 29db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf return NUMBER; 30db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf } 31db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf 32db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf"+" { return yylval->i = yytext[0]; } 33db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf 34054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart[uU]8 { yylval->i = TCF_EM_ALIGN_U8; return ALIGN; } 35054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart[uU]16 { yylval->i = TCF_EM_ALIGN_U16; return ALIGN; } 36054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart[uU]32 { yylval->i = TCF_EM_ALIGN_U32; return ALIGN; } 37054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart 38054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart[lL][iI][nN][kK] | 39054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart[eE][tT][hH] { yylval->i = TCF_LAYER_LINK; return LAYER; } 40054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart[nN][eE][tT] | 41054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart[iI][pP] { yylval->i = TCF_LAYER_NETWORK; return LAYER; } 42054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart[tT][rR][aA][nN][sS][pP][oO][rR][tT] | 43db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf[tT][cC][pP] { yylval->i = TCF_LAYER_TRANSPORT; return LAYER; } 44db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf 45054c80d775f2ae9b8f50260bdfcb821e99c0da2aPaul Stewart 46db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf[^ \t\r\n+]+ { 47db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf yylval->s = strdup(yytext); 48db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf if (yylval->s == NULL) 49db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf return ERROR; 50db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf return NAME; 51db5bd57899affbcaf42ac0b93c5c7be8f51ca390Thomas Graf } 52