]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
parser: allow for string raw payload base
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 16 Nov 2021 11:08:15 +0000 (12:08 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 16 Nov 2021 11:08:15 +0000 (12:08 +0100)
Remove new 'ih' token, allow to represent the raw payload base with a
string instead.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/parser_bison.y
src/scanner.l

index eb89a58989e2df8c7ae309ec5d9d5c5579edabae..81d75ecb2fe8afe6036bf6994f36d05f65633aae 100644 (file)
@@ -318,7 +318,6 @@ int nft_lex(void *, void *, void *);
 %token LL_HDR                  "ll"
 %token NETWORK_HDR             "nh"
 %token TRANSPORT_HDR           "th"
-%token INNER_HDR               "ih"
 
 %token BRIDGE                  "bridge"
 
@@ -5261,7 +5260,17 @@ payload_raw_expr :       AT      payload_base_spec       COMMA   NUM     COMMA   NUM
 payload_base_spec      :       LL_HDR          { $$ = PROTO_BASE_LL_HDR; }
                        |       NETWORK_HDR     { $$ = PROTO_BASE_NETWORK_HDR; }
                        |       TRANSPORT_HDR   { $$ = PROTO_BASE_TRANSPORT_HDR; }
-                       |       INNER_HDR       { $$ = PROTO_BASE_INNER_HDR; }
+                       |       STRING
+                       {
+                               if (!strcmp($1, "ih")) {
+                                       $$ = PROTO_BASE_INNER_HDR;
+                               } else {
+                                       erec_queue(error(&@1, "unknown raw payload base"), state->msgs);
+                                       xfree($1);
+                                       YYERROR;
+                               }
+                               xfree($1);
+                       }
                        ;
 
 eth_hdr_expr           :       ETHER   eth_hdr_field   close_scope_eth
index 5d263f9dc8b14ae59472cf09ac5d993b0107e460..6cc7778dd85e1fc285558f238d082b60f5e7be32 100644 (file)
@@ -414,7 +414,6 @@ addrstring  ({macaddr}|{ip4addr}|{ip6addr})
 "ll"                   { return LL_HDR; }
 "nh"                   { return NETWORK_HDR; }
 "th"                   { return TRANSPORT_HDR; }
-"ih"                   { return INNER_HDR; }
 
 "bridge"               { return BRIDGE; }