summaryrefslogtreecommitdiffstats
path: root/src/parser_bison.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser_bison.y')
-rw-r--r--src/parser_bison.y13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/parser_bison.y b/src/parser_bison.y
index 10270f12..ccf07a30 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -443,6 +443,7 @@ int nft_lex(void *, void *, void *);
%token VNI "vni"
%token GRE "gre"
+%token GRETAP "gretap"
%token GENEVE "geneve"
@@ -909,8 +910,8 @@ int nft_lex(void *, void *, void *);
%type <expr> inner_eth_expr inner_inet_expr inner_expr
%destructor { expr_free($$); } inner_eth_expr inner_inet_expr inner_expr
-%type <expr> vxlan_hdr_expr geneve_hdr_expr gre_hdr_expr
-%destructor { expr_free($$); } vxlan_hdr_expr geneve_hdr_expr gre_hdr_expr
+%type <expr> vxlan_hdr_expr geneve_hdr_expr gre_hdr_expr gretap_hdr_expr
+%destructor { expr_free($$); } vxlan_hdr_expr geneve_hdr_expr gre_hdr_expr gretap_hdr_expr
%type <val> vxlan_hdr_field geneve_hdr_field gre_hdr_field
%type <stmt> optstrip_stmt
@@ -5354,6 +5355,7 @@ payload_expr : payload_raw_expr
| vxlan_hdr_expr
| geneve_hdr_expr
| gre_hdr_expr
+ | gretap_hdr_expr
;
payload_raw_expr : AT payload_base_spec COMMA NUM COMMA NUM close_scope_at
@@ -5686,6 +5688,13 @@ gre_hdr_field : HDRVERSION { $$ = GREHDR_VERSION; }
| PROTOCOL { $$ = GREHDR_PROTOCOL; }
;
+gretap_hdr_expr : GRETAP close_scope_gre inner_expr
+ {
+ $$ = $3;
+ $$->payload.inner_desc = &proto_gretap;
+ }
+ ;
+
optstrip_stmt : RESET TCP OPTION tcp_hdr_option_type close_scope_tcp
{
$$ = optstrip_stmt_alloc(&@$, tcpopt_expr_alloc(&@$,