From 111f3735d30a80f0ecd46c08e7e82a67e5c0e973 Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Wed, 28 Nov 2012 14:17:00 +0100 Subject: [PATCH] bpfc: fix hla lexer Signed-off-by: Daniel Borkmann --- TODO | 5 ----- src/bpf_hla_lexer.l | 26 +++++++++----------------- src/bpf_hla_parser.y | 13 +++---------- 3 files changed, 12 insertions(+), 32 deletions(-) diff --git a/TODO b/TODO index 89c9e546..e03ce74d 100644 --- a/TODO +++ b/TODO @@ -71,13 +71,8 @@ submit your contributions, items marked with '!' are of high importance): pcap files. Write the index file out for each pcap capture. @TODO: Daniel Borkmann, Francesco Fusco -41! Add vlan support for bpfc (http://www.spinics.net/lists/netdev/msg213464.html). - 42) Flowtop: add interesting things from socket diag (e.g. socket states, ...)? -44! mac80211: waiting for netlink ack failed with libnl3! Fix compilation on - Ubuntu 10.04 and higher. - 45! fix sll struct / hdr->s_ll.sll_ifindex in TPACKETv2 (provides wrong information in dissector output) diff --git a/src/bpf_hla_lexer.l b/src/bpf_hla_lexer.l index 197c9e19..812faf25 100644 --- a/src/bpf_hla_lexer.l +++ b/src/bpf_hla_lexer.l @@ -67,18 +67,10 @@ extern void zzerror(const char *); alpha [A-Za-z] alphanum [A-Za-z0-9] -digit [0-9] -digit_s [1-9] -digit_n [0] -bindigit [0-1] -bindigit_b [b] -hex [a-fA-F0-9] -hex_x [x] - -number_dec {digit_n}|{digit_s}{digit}* -number_oct {digit_n}{digit}+ -number_hex {digit_n}{hex_x}{hex}+ -number_bin {digit_n}{bindigit_b}{bindigit}+ +number_oct ([0][0-9]+) +number_hex ([0][x][a-fA-F0-9]+) +number_bin ([0][b][0-1]+) +number_dec (([0])|([-+]?[1-9][0-9]*)) %% @@ -111,16 +103,16 @@ number_bin {digit_n}{bindigit_b}{bindigit}+ "%" { return '%'; } {number_hex} { zzlval.number = strtoul(zztext, NULL, 16); - return number_hex; } + return number; } {number_dec} { zzlval.number = strtol(zztext, NULL, 10); - return number_dec; } + return number; } -{number_oct} { zzlval.number = strtol(zztext, NULL, 8); - return number_oct; } +{number_oct} { zzlval.number = strtol(zztext + 1, NULL, 8); + return number; } {number_bin} { zzlval.number = strtol(zztext + 2, NULL, 2); - return number_bin; } + return number; } "/*"([^\*]|\*[^/])*"*/" { /* NOP */ } ";"[^\n]* {/* NOP */} diff --git a/src/bpf_hla_parser.y b/src/bpf_hla_parser.y index 0f8402c6..66e2389c 100644 --- a/src/bpf_hla_parser.y +++ b/src/bpf_hla_parser.y @@ -59,12 +59,12 @@ static unsigned int num_ifs = 0; %token K_NAME K_DEF K_PKT K_RET K_IF K_ELIF K_ELSE %token K_MACRO_IPV4 K_MACRO_IPV6 K_MACRO_IP K_MACRO_UDP K_MACRO_TCP -%token '(' ')' '{' '}' '=' ';' '+' '-' '&' '|' '^' '!' '<' '>' '*' '/' '%' ',' +%token number -%token number_hex number_dec number_oct number_bin +%token '(' ')' '{' '}' '=' ';' '+' '-' '&' '|' '^' '!' '<' '>' '*' '/' '%' ',' %type K_NAME var -%type number_hex number_dec number_oct number_bin number +%type number %% @@ -189,13 +189,6 @@ var $$ = $1; } ; -number - : number_dec { $$ = $1; } - | number_hex { $$ = $1; } - | number_oct { $$ = $1; } - | number_bin { $$ = $1; } - ; - %% static void stage_1_compile(void) -- 2.11.4.GIT