summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2021-07-23 18:15:42 +0200
committerPhil Sutter <phil@nwl.cc>2022-03-01 10:54:03 +0100
commite554701721cc00771cbd3700e69e9af449c23ff3 (patch)
tree5b9023d8a2b82d524ddf7b7d9c094307ee0df4d9 /src
parent04c95f147c7fa221d1f438fc577c0bd84bc71316 (diff)
scanner: rt: Extend scope over rt0, rt2 and srh
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>
Diffstat (limited to 'src')
-rw-r--r--src/parser_bison.y6
-rw-r--r--src/scanner.l12
2 files changed, 9 insertions, 9 deletions
diff --git a/src/parser_bison.y b/src/parser_bison.y
index f7d74e59..cc739c47 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -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);
}
diff --git a/src/scanner.l b/src/scanner.l
index eb8c3a13..6975d9f2 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -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; }