]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
scanner: rt: Extend scope over rt0, rt2 and srh
authorPhil Sutter <phil@nwl.cc>
Fri, 23 Jul 2021 16:15:42 +0000 (18:15 +0200)
committerPhil Sutter <phil@nwl.cc>
Tue, 1 Mar 2022 09:54:03 +0000 (10:54 +0100)
These are technically all just routing headers with different types, so
unify them under the same scope.

Signed-off-by: Phil Sutter <phil@nwl.cc>
src/parser_bison.y
src/scanner.l

index f7d74e591e7582cec757c529345a27c2efe469b3..cc739c47ea88fd9931d6043a45348f85fab75244 100644 (file)
@@ -5803,7 +5803,7 @@ rt_hdr_field              :       NEXTHDR         { $$ = RTHDR_NEXTHDR; }
                        |       SEG_LEFT        { $$ = RTHDR_SEG_LEFT; }
                        ;
 
-rt0_hdr_expr           :       RT0     rt0_hdr_field
+rt0_hdr_expr           :       RT0     rt0_hdr_field   close_scope_rt
                        {
                                $$ = exthdr_expr_alloc(&@$, &exthdr_rt0, $2);
                        }
@@ -5815,7 +5815,7 @@ rt0_hdr_field             :       ADDR    '['     NUM     ']'
                        }
                        ;
 
-rt2_hdr_expr           :       RT2     rt2_hdr_field
+rt2_hdr_expr           :       RT2     rt2_hdr_field   close_scope_rt
                        {
                                $$ = exthdr_expr_alloc(&@$, &exthdr_rt2, $2);
                        }
@@ -5824,7 +5824,7 @@ rt2_hdr_expr              :       RT2     rt2_hdr_field
 rt2_hdr_field          :       ADDR            { $$ = RT2HDR_ADDR; }
                        ;
 
-rt4_hdr_expr           :       RT4     rt4_hdr_field
+rt4_hdr_expr           :       RT4     rt4_hdr_field   close_scope_rt
                        {
                                $$ = exthdr_expr_alloc(&@$, &exthdr_rt4, $2);
                        }
index eb8c3a130aac9311346492cc12a25fa3374cdbd1..6975d9f226ef2463f156bef706bae5a90f640289 100644 (file)
@@ -643,13 +643,10 @@ addrstring        ({macaddr}|{ip4addr}|{ip6addr})
 }
 
 "rt"                   { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_RT); return RT; }
-"rt0"                  { return RT0; }
-"rt2"                  { return RT2; }
-"srh"                  { return RT4; }
+"rt0"                  { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_RT); return RT0; }
+"rt2"                  { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_RT); return RT2; }
+"srh"                  { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_RT); return RT4; }
 "addr"                 { return ADDR; }
-"last-entry"           { return LAST_ENT; }
-"tag"                  { return TAG; }
-"sid"                  { return SID; }
 
 "hbh"                  { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_HBH); return HBH; }
 
@@ -689,6 +686,9 @@ addrstring  ({macaddr}|{ip4addr}|{ip6addr})
        "nexthop"               { return NEXTHOP; }
        "seg-left"              { return SEG_LEFT; }
        "mtu"                   { return MTU; }
+       "last-entry"            { return LAST_ENT; }
+       "tag"                   { return TAG; }
+       "sid"                   { return SID; }
 }
 <SCANSTATE_EXPR_RT,SCANSTATE_TYPE>{
        "classid"               { return CLASSID; }