summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--trafgen_lexer.l3
-rw-r--r--trafgen_parser.y7
2 files changed, 7 insertions, 3 deletions
diff --git a/trafgen_lexer.l b/trafgen_lexer.l
index 83e7602..ef7ec2a 100644
--- a/trafgen_lexer.l
+++ b/trafgen_lexer.l
@@ -105,13 +105,12 @@ ip4_addr ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
"const32"|"c32" { return K_CONST32; }
"const64"|"c64" { return K_CONST64; }
- /* IPv4 proto field (must be before more specific rule for K_ETYPE) */
"prot"[o]? { return K_PROT; }
/* Ethernet */
"daddr"|"da" { return K_DADDR; }
"saddr"|"sa" { return K_SADDR; }
-[e]?"type"|"prot"[o]? { return K_ETYPE; }
+[e]?"type" { return K_ETYPE; }
/* ARP */
"sha"|"smac" { return K_SHA; }
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); }
;