summaryrefslogtreecommitdiff
path: root/trafgen_parser.y
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2016-02-01 17:45:39 +0100
committerTobias Klauser <tklauser@distanz.ch>2016-02-01 17:45:39 +0100
commit52b1f5dd3c60aa008e0538d7f8abda4727b6a9df (patch)
treeb73a405e6fc550972f270160c1008513314f5d2b /trafgen_parser.y
parent23492a017a2df510d054157ba314d1e6b1a43c3c (diff)
trafgen: parser: Fix parsing of "prot[o]" field in eth()
Commit 2ba202b introduced the [e]type field for specifiying the Ethertype, but at the same time made the existing "prot[o]" field name not work anymore. Fix it by providing a specific parser rule as it cannot be solved in the lexer grammar alone (which will always use the first matching token). Fixes: 2ba202b ("trafgen: parser: Support "etype"/"type" keywords for Ethertype") Reported-by: Vadim Kochan <vadim4j@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Diffstat (limited to 'trafgen_parser.y')
-rw-r--r--trafgen_parser.y7
1 files changed, 6 insertions, 1 deletions
diff --git a/trafgen_parser.y b/trafgen_parser.y
index 7387c14..1bacfd0 100644
--- a/trafgen_parser.y
+++ b/trafgen_parser.y
@@ -600,12 +600,17 @@ eth_param_list
| eth_field delimiter eth_param_list { }
;
+eth_type
+ : K_ETYPE { }
+ | K_PROT {}
+ ;
+
eth_field
: K_DADDR skip_white '=' skip_white mac
{ proto_field_set_bytes(hdr, ETH_DST_ADDR, $5); }
| K_SADDR skip_white '=' skip_white mac
{ proto_field_set_bytes(hdr, ETH_SRC_ADDR, $5); }
- | K_ETYPE skip_white '=' skip_white number
+ | eth_type skip_white '=' skip_white number
{ proto_field_set_be16(hdr, ETH_TYPE, $5); }
;