summaryrefslogtreecommitdiffstats
path: root/src/parser_bison.y
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2023-01-02 15:36:44 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2023-01-02 15:36:44 +0100
commitaf026c2db0e813cc2a02c6c7222038e2a399a13f (patch)
treeeaad93108798b707de5e3cebc10337383293ec32 /src/parser_bison.y
parentb56c826e673d37980e6e8b65eeb2a50680f33162 (diff)
src: add gretap support
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
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(&@$,