summaryrefslogtreecommitdiffstats
path: root/src/scanner.l
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2021-07-23 13:00:50 +0200
committerPhil Sutter <phil@nwl.cc>2022-03-01 10:54:03 +0100
commita7d8cca9a18ac760913b55c8a2d1e915f3d0f612 (patch)
treef0b3d5356db2e38af2050559e798f8cb3e39387e /src/scanner.l
parent5d837d270d5a8b3a4d3fdca12d0f0800b8287cdd (diff)
scanner: icmp{,v6}: Move to own scope
Unify the two, header fields are almost identical. Signed-off-by: Phil Sutter <phil@nwl.cc>
Diffstat (limited to 'src/scanner.l')
-rw-r--r--src/scanner.l19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/scanner.l b/src/scanner.l
index 9a189ec3..e8ec352f 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -200,6 +200,7 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr})
%s SCANSTATE_CT
%s SCANSTATE_COUNTER
%s SCANSTATE_ETH
+%s SCANSTATE_ICMP
%s SCANSTATE_IP
%s SCANSTATE_IP6
%s SCANSTATE_LIMIT
@@ -496,11 +497,16 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr})
"sack-perm" { return SACK_PERM; }
"timestamp" { return TIMESTAMP; }
-"icmp" { return ICMP; }
-"code" { return CODE; }
+"icmp" { scanner_push_start_cond(yyscanner, SCANSTATE_ICMP); return ICMP; }
+"icmpv6" { scanner_push_start_cond(yyscanner, SCANSTATE_ICMP); return ICMP6; }
+<SCANSTATE_ICMP>{
+ "gateway" { return GATEWAY; }
+ "code" { return CODE; }
+ "param-problem" { return PPTR; }
+ "max-delay" { return MAXDELAY; }
+ "mtu" { return MTU; }
+}
"sequence" { return SEQUENCE; }
-"gateway" { return GATEWAY; }
-"mtu" { return MTU; }
"igmp" { return IGMP; }
"mrt" { return MRT; }
@@ -513,10 +519,6 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr})
}
"nexthdr" { return NEXTHDR; }
-"icmpv6" { return ICMP6; }
-"param-problem" { return PPTR; }
-"max-delay" { return MAXDELAY; }
-
"ah" { return AH; }
"reserved" { return RESERVED; }
"spi" { return SPI; }
@@ -631,6 +633,7 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr})
"classid" { return CLASSID; }
"nexthop" { return NEXTHOP; }
"seg-left" { return SEG_LEFT; }
+ "mtu" { return MTU; }
}
"ct" { scanner_push_start_cond(yyscanner, SCANSTATE_CT); return CT; }