|
@@ -56,7 +56,7 @@ static void bpf_set_jmp_label(char *label, enum jmp_type type);
|
|
|
%token OP_LDXI
|
|
|
|
|
|
%token K_PKT_LEN K_PROTO K_TYPE K_NLATTR K_NLATTR_NEST K_MARK K_QUEUE K_HATYPE
|
|
|
-%token K_RXHASH K_CPU K_IFIDX K_VLANT K_VLANP K_POFF K_RAND
|
|
|
+%token K_RXHASH K_CPU K_IFIDX K_VLANT K_VLANP K_VLANTPID K_POFF K_RAND
|
|
|
|
|
|
%token ':' ',' '[' ']' '(' ')' 'x' 'a' '+' 'M' '*' '&' '#' '%'
|
|
|
|
|
@@ -167,6 +167,9 @@ ldb
|
|
|
| OP_LDB K_RAND {
|
|
|
bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0,
|
|
|
SKF_AD_OFF + SKF_AD_RANDOM); }
|
|
|
+ | OP_LDB K_VLANTPID {
|
|
|
+ bpf_set_curr_instr(BPF_LD | BPF_B | BPF_ABS, 0, 0,
|
|
|
+ SKF_AD_OFF + SKF_AD_VLAN_TPID); }
|
|
|
;
|
|
|
|
|
|
ldh
|
|
@@ -218,6 +221,9 @@ ldh
|
|
|
| OP_LDH K_RAND {
|
|
|
bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0,
|
|
|
SKF_AD_OFF + SKF_AD_RANDOM); }
|
|
|
+ | OP_LDH K_VLANTPID {
|
|
|
+ bpf_set_curr_instr(BPF_LD | BPF_H | BPF_ABS, 0, 0,
|
|
|
+ SKF_AD_OFF + SKF_AD_VLAN_TPID); }
|
|
|
;
|
|
|
|
|
|
ldi
|
|
@@ -274,6 +280,9 @@ ld
|
|
|
| OP_LD K_RAND {
|
|
|
bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0,
|
|
|
SKF_AD_OFF + SKF_AD_RANDOM); }
|
|
|
+ | OP_LD K_VLANTPID {
|
|
|
+ bpf_set_curr_instr(BPF_LD | BPF_W | BPF_ABS, 0, 0,
|
|
|
+ SKF_AD_OFF + SKF_AD_VLAN_TPID); }
|
|
|
| OP_LD 'M' '[' number ']' {
|
|
|
bpf_set_curr_instr(BPF_LD | BPF_MEM, 0, 0, $4); }
|
|
|
| OP_LD '[' 'x' '+' number ']' {
|