summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--trafgen_lexer.l2
-rw-r--r--trafgen_parser.y12
2 files changed, 7 insertions, 7 deletions
diff --git a/trafgen_lexer.l b/trafgen_lexer.l
index 65ec245..cf67c74 100644
--- a/trafgen_lexer.l
+++ b/trafgen_lexer.l
@@ -300,7 +300,7 @@ ip6_addr ({v680}|{v67}|{v66}|{v65}|{v64}|{v63}|{v62}|{v61}|{v60})
{number_ascii} { yylval.number = (uint8_t) (*yytext);
return number; }
-{mac} { if (str2mac(yytext, yylval.bytes, 256))
+{mac} { if (str2mac(yytext, yylval.mac, 6))
panic("Failed to parse MAC address %s\n", yytext);
return mac; }
diff --git a/trafgen_parser.y b/trafgen_parser.y
index 60f1f64..5281bf6 100644
--- a/trafgen_parser.y
+++ b/trafgen_parser.y
@@ -92,7 +92,7 @@ struct proto_field_expr {
struct in_addr ip4_addr;
struct in6_addr ip6_addr;
long long int number;
- uint8_t bytes[256];
+ uint8_t mac[256];
struct proto_field_func func;
} val;
};
@@ -433,9 +433,9 @@ static void proto_field_expr_eval(void)
else if (field->len == 4)
proto_hdr_field_set_be32(hdr, field->id, field_expr.val.number);
else
- proto_hdr_field_set_bytes(hdr, field->id, field_expr.val.bytes);
+ panic("Invalid value length %zu, can be 1,2 or 4\n", field->len);
} else if (field_expr.type & FIELD_EXPR_MAC) {
- proto_hdr_field_set_bytes(hdr, field->id, field_expr.val.bytes);
+ proto_hdr_field_set_bytes(hdr, field->id, field_expr.val.mac);
} else if (field_expr.type & FIELD_EXPR_IP4_ADDR) {
proto_hdr_field_set_u32(hdr, field->id, field_expr.val.ip4_addr.s_addr);
} else if (field_expr.type & FIELD_EXPR_IP6_ADDR) {
@@ -481,7 +481,7 @@ static void field_index_validate(struct proto_field *field, uint16_t index, size
struct in_addr ip4_addr;
struct in6_addr ip6_addr;
long long int number;
- uint8_t bytes[256];
+ uint8_t mac[6];
char *str;
}
@@ -516,7 +516,7 @@ static void field_index_validate(struct proto_field *field, uint16_t index, size
%type <number> number expression
%type <str> string
-%type <bytes> mac
+%type <mac> mac
%type <ip4_addr> ip4_addr
%type <ip6_addr> ip6_addr
@@ -760,7 +760,7 @@ field_value_expr
: number { field_expr.type |= FIELD_EXPR_NUMB;
field_expr.val.number = $1; }
| mac { field_expr.type |= FIELD_EXPR_MAC;
- memcpy(field_expr.val.bytes, $1, sizeof(field_expr.val.bytes)); }
+ memcpy(field_expr.val.mac, $1, sizeof(field_expr.val.mac)); }
| ip4_addr { field_expr.type |= FIELD_EXPR_IP4_ADDR;
field_expr.val.ip4_addr = $1; }
| ip6_addr { field_expr.type |= FIELD_EXPR_IP6_ADDR;