/* * BPF asm code lexer * * This program is free software; you can distribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * * Syntax kept close to: * * Steven McCanne and Van Jacobson. 1993. The BSD packet filter: a new * architecture for user-level packet capture. In Proceedings of the * USENIX Winter 1993 Conference Proceedings on USENIX Winter 1993 * Conference Proceedings (USENIX'93). USENIX Association, Berkeley, * CA, USA, 2-2. * * Copyright 2013 Daniel Borkmann * Licensed under the GNU General Public License, version 2.0 (GPLv2) */ %{ #include #include #include #include #include #include "bpf_exp.yacc.h" extern void yyerror(const char *str); %} %option align %option ecs %option nounput %option noreject %option noinput %option noyywrap %option 8bit %option caseless %option yylineno %% "ldb" { return OP_LDB; } "ldh" { return OP_LDH; } "ld" { return OP_LD; } "ldi" { return OP_LDI; } "ldx" { return OP_LDX; } "ldxi" { return OP_LDXI; } "ldxb" { return OP_LDXB; } "st" { return OP_ST; } "stx" { return OP_STX; } "jmp" { return OP_JMP; } "ja" { return OP_JMP; } "jeq" { return OP_JEQ; } "jneq" { return OP_JNEQ; } "jne" { return OP_JNEQ; } "jlt" { return OP_JLT; } "jle" { return OP_JLE; } "jgt" { return OP_JGT; } "jge" { return OP_JGE; } "jset" { return OP_JSET; } "add" { return OP_ADD; } "sub" { return OP_SUB; } "mul" { return OP_MUL; } "div" { return OP_DIV; } "mod" { return OP_MOD; } "neg" { return OP_NEG; } "and" { return OP_AND; } "xor" { return OP_XOR; } "or" { return OP_OR; } "lsh" { return OP_LSH; } "rsh" { return OP_RSH; } "ret" { return OP_RET; } "tax" { return OP_TAX; } "txa" { return OP_TXA; } "#"?("len") { return K_PKT_LEN; } "#"?("proto") { yylval.number = SKF_AD_PROTOCOL; return extension; } "#"?("type") { yylval.number = SKF_AD_PKTTYPE; return extension; } "#"?("poff") { yylval.number = SKF_AD_PAY_OFFSET; return extension; } "#"?("ifidx") { yylval.number = SKF_AD_IFINDEX; return extension; } "#"?("nla") { yylval.number = SKF_AD_NLATTR; return extension; } "#"?("nlan") { yylval.number = SKF_AD_NLATTR_NEST; return extension; } "#"?("mark") { yylval.number = SKF_AD_MARK; return extension; } "#"?("queue") { yylval.number = SKF_AD_QUEUE; return extension; } "#"?("hatype") { yylval.number = SKF_AD_HATYPE; return extension; } "#"?("rxhash") { yylval.number = SKF_AD_RXHASH; return extension; } "#"?("cpu") { yylval.number = SKF_AD_CPU; return extension; } "#"?("vlan_tci") { yylval.number = SKF_AD_VLAN_TAG; return extension; } "#"?("vlan_pr") { yylval.number = SKF_AD_VLAN_TAG_PRESENT; return extension; } "#"?("vlan_avail") { yylval.number = SKF_AD_VLAN_TAG_PRESENT; return extension; } "#"?("vlan_tpid") { yylval.number = SKF_AD_VLAN_TPID; return extension; } "#"?("rand") { yylval.number = SKF_AD_RANDOM; return extension; } ":" { return ':'; } "," { return ','; } "#" { return '#'; } "%" { return '%'; } "[" { return '['; } "]" { return ']'; } "(" { return '('; } ")" { return ')'; } "x" { return 'x'; } "a" { return 'a'; } "+" { return '+'; } "M" { return 'M'; } "*" { return '*'; } "&" { return '&'; } ([0][x][a-fA-F0-9]+) { yylval.number = strtoul(yytext, NULL, 16); return number; } ([0][b][0-1]+) { yylval.number = strtol(yytext + 2, NULL, 2); return number; } (([0])|([-+]?[1-9][0-9]*)) { yylval.number = strtol(yytext, NULL, 10); return number; } ([0][0-9]+) { yylval.number = strtol(yytext + 1, NULL, 8); return number; } [a-zA-Z_][a-zA-Z0-9_]+ { yylval.label = strdup(yytext); return label; } "/*"([^\*]|\*[^/])*"*/" { /* NOP */ } ";"[^\n]* { /* NOP */ } ^#.* { /* NOP */ } [ \t]+ { /* NOP */ } [ \n]+ { /* NOP */ } . { printf("unknown character \'%s\'", yytext); yyerror("lex unknown character"); } %% oscript>
authorLinus Torvalds <torvalds@linux-foundation.org>2016-12-12 21:58:13 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2016-12-12 21:58:13 -0800
commite7aa8c2eb11ba69b1b69099c3c7bd6be3087b0ba (patch)
treef63906f41699c8e38af9d12b063e2ceab0286ef2 /Documentation/ABI/removed/sysfs-class-rfkill
parente34bac726d27056081d0250c0e173e4b155aa340 (diff)
parent868c97a846a73e937d835b09b8c885a69df50ec8 (diff)
Merge tag 'docs-4.10' of git://git.lwn.net/linuxHEADmaster
Pull documentation update from Jonathan Corbet: "These are the documentation changes for 4.10. It's another busy cycle for the docs tree, as the sphinx conversion continues. Highlights include: - Further work on PDF output, which remains a bit of a pain but should be more solid now. - Five more DocBook template files converted to Sphinx. Only 27 to go... Lots of plain-text files have also been converted and integrated. - Images in binary formats have been replaced with more source-friendly versions. - Various bits of organizational work, including the renaming of various files discussed at the kernel summit. - New documentation for the device_link mechanism. ... and, of course, lots of typo fixes and small updates" * tag 'docs-4.10' of git://git.lwn.net/linux: (193 commits) dma-buf: Extract dma-buf.rst Update Documentation/00-INDEX docs: 00-INDEX: document directories/files with no docs docs: 00-INDEX: remove non-existing entries docs: 00-INDEX: add missing entries for documentation files/dirs docs: 00-INDEX: consolidate process/ and admin-guide/ description scripts: add a script to check if Documentation/00-INDEX is sane Docs: change sh -> awk in REPORTING-BUGS Documentation/core-api/device_link: Add initial documentation core-api: remove an unexpected unident ppc/idle: Add documentation for powersave=off Doc: Correct typo, "Introdution" => "Introduction" Documentation/atomic_ops.txt: convert to ReST markup Documentation/local_ops.txt: convert to ReST markup Documentation/assoc_array.txt: convert to ReST markup docs-rst: parse-headers.pl: cleanup the documentation docs-rst: fix media cleandocs target docs-rst: media/Makefile: reorganize the rules docs-rst: media: build SVG from graphviz files docs-rst: replace bayer.png by a SVG image ...
Diffstat (limited to 'Documentation/ABI/removed/sysfs-class-rfkill')