summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/net/bpf_exp.l6
-rw-r--r--tools/net/bpf_exp.y23
2 files changed, 20 insertions, 9 deletions
diff --git a/tools/net/bpf_exp.l b/tools/net/bpf_exp.l
index 833a96611da6..7cc72a336645 100644
--- a/tools/net/bpf_exp.l
+++ b/tools/net/bpf_exp.l
@@ -90,8 +90,10 @@ extern void yyerror(const char *str);
90"#"?("hatype") { return K_HATYPE; } 90"#"?("hatype") { return K_HATYPE; }
91"#"?("rxhash") { return K_RXHASH; } 91"#"?("rxhash") { return K_RXHASH; }
92"#"?("cpu") { return K_CPU; } 92"#"?("cpu") { return K_CPU; }
93"#"?("vlan_tci") { return K_VLANT; } 93"#"?("vlan_tci") { return K_VLAN_TCI; }
94"#"?("vlan_pr") { return K_VLANP; } 94"#"?("vlan_pr") { return K_VLAN_AVAIL; }
95"#"?("vlan_avail") { return K_VLAN_AVAIL; }
96"#"?("vlan_tpid") { return K_VLAN_TPID; }
95"#"?("rand") { return K_RAND; } 97"#"?("rand") { return K_RAND; }
96 98
97":" { return ':'; } 99":" { return ':'; }
diff --git a/tools/net/bpf_exp.y b/tools/net/bpf_exp.y
index e6306c51c26f..e24eea1b0db5 100644
--- a/tools/net/bpf_exp.y
+++ b/tools/net/bpf_exp.y
@@ -56,7 +56,7 @@ static void bpf_set_jmp_label(char *label, enum jmp_type type);
56%token OP_LDXI 56%token OP_LDXI
57 57
58%token K_PKT_LEN K_PROTO K_TYPE K_NLATTR K_NLATTR_NEST K_MARK K_QUEUE K_HATYPE 58%token K_PKT_LEN K_PROTO K_TYPE K_NLATTR K_NLATTR_NEST K_MARK K_QUEUE K_HATYPE
59%token K_RXHASH K_CPU K_IFIDX K_VLANT K_VLANP K_POFF K_RAND 59%token K_RXHASH K_CPU K_IFIDX K_VLAN_TCI K_VLAN_AVAIL K_VLAN_TPID K_POFF K_RAND
60 60
61%token ':' ',' '[' ']' '(' ')' 'x' 'a' '+' 'M' '*' '&' '#' '%' 61%token ':' ',' '[' ']' '(' ')' 'x' 'a' '+' 'M' '*' '&' '#' '%'
62 62
@@ -155,10 +155,10 @@ ldb
155 | OP_LDB K_CPU { 155 | OP_LDB K_CPU {
156 bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0, 156 bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0,
157 SKF_AD_OFF + SKF_AD_CPU); } 157 SKF_AD_OFF + SKF_AD_CPU); }
158 | OP_LDB K_VLANT { 158 | OP_LDB K_VLAN_TCI {
159 bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0, 159 bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0,
160 SKF_AD_OFF + SKF_AD_VLAN_TAG); } 160 SKF_AD_OFF + SKF_AD_VLAN_TAG); }
161 | OP_LDB K_VLANP { 161 | OP_LDB K_VLAN_AVAIL {
162 bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0, 162 bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0,
163 SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT); } 163 SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT); }
164 | OP_LDB K_POFF { 164 | OP_LDB K_POFF {
@@ -167,6 +167,9 @@ ldb
167 | OP_LDB K_RAND { 167 | OP_LDB K_RAND {
168 bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0, 168 bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0,
169 SKF_AD_OFF + SKF_AD_RANDOM); } 169 SKF_AD_OFF + SKF_AD_RANDOM); }
170 | OP_LDB K_VLAN_TPID {
171 bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0,
172 SKF_AD_OFF + SKF_AD_VLAN_TPID); }
170 ; 173 ;
171 174
172ldh 175ldh
@@ -206,10 +209,10 @@ ldh
206 | OP_LDH K_CPU { 209 | OP_LDH K_CPU {
207 bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0, 210 bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0,
208 SKF_AD_OFF + SKF_AD_CPU); } 211 SKF_AD_OFF + SKF_AD_CPU); }
209 | OP_LDH K_VLANT { 212 | OP_LDH K_VLAN_TCI {
210 bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0, 213 bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0,
211 SKF_AD_OFF + SKF_AD_VLAN_TAG); } 214 SKF_AD_OFF + SKF_AD_VLAN_TAG); }
212 | OP_LDH K_VLANP { 215 | OP_LDH K_VLAN_AVAIL {
213 bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0, 216 bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0,
214 SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT); } 217 SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT); }
215 | OP_LDH K_POFF { 218 | OP_LDH K_POFF {
@@ -218,6 +221,9 @@ ldh
218 | OP_LDH K_RAND { 221 | OP_LDH K_RAND {
219 bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0, 222 bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0,
220 SKF_AD_OFF + SKF_AD_RANDOM); } 223 SKF_AD_OFF + SKF_AD_RANDOM); }
224 | OP_LDH K_VLAN_TPID {
225 bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0,
226 SKF_AD_OFF + SKF_AD_VLAN_TPID); }
221 ; 227 ;
222 228
223ldi 229ldi
@@ -262,10 +268,10 @@ ld
262 | OP_LD K_CPU { 268 | OP_LD K_CPU {
263 bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0, 269 bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0,
264 SKF_AD_OFF + SKF_AD_CPU); } 270 SKF_AD_OFF + SKF_AD_CPU); }
265 | OP_LD K_VLANT { 271 | OP_LD K_VLAN_TCI {
266 bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0, 272 bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0,
267 SKF_AD_OFF + SKF_AD_VLAN_TAG); } 273 SKF_AD_OFF + SKF_AD_VLAN_TAG); }
268 | OP_LD K_VLANP { 274 | OP_LD K_VLAN_AVAIL {
269 bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0, 275 bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0,
270 SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT); } 276 SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT); }
271 | OP_LD K_POFF { 277 | OP_LD K_POFF {
@@ -274,6 +280,9 @@ ld
274 | OP_LD K_RAND { 280 | OP_LD K_RAND {
275 bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0, 281 bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0,
276 SKF_AD_OFF + SKF_AD_RANDOM); } 282 SKF_AD_OFF + SKF_AD_RANDOM); }
283 | OP_LD K_VLAN_TPID {
284 bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0,
285 SKF_AD_OFF + SKF_AD_VLAN_TPID); }
277 | OP_LD 'M' '[' number ']' { 286 | OP_LD 'M' '[' number ']' {
278 bpf_set_curr_instr(BPF_LD | BPF_MEM, 0, 0, $4); } 287 bpf_set_curr_instr(BPF_LD | BPF_MEM, 0, 0, $4); }
279 | OP_LD '[' 'x' '+' number ']' { 288 | OP_LD '[' 'x' '+' number ']' {