},
};
+static struct error_record *ethertype_parse(const struct expr *sym,
+ struct expr **res)
+{
+ struct error_record *erec;
+
+ erec = sym->dtype->basetype->parse(sym, res);
+ if (erec != NULL)
+ return erec;
+ if (*res)
+ return NULL;
+ return symbolic_constant_parse(sym, ðertype_tbl, res);
+}
+
+static void ethertype_print(const struct expr *expr)
+{
+ return symbolic_constant_print(ðertype_tbl, expr);
+}
+
const struct datatype ethertype_type = {
.type = TYPE_ETHERTYPE,
.name = "ethertype",
.byteorder = BYTEORDER_HOST_ENDIAN,
.size = 2 * BITS_PER_BYTE,
.basetype = &integer_type,
- .sym_tbl = ðertype_tbl,
+ .basefmt = "0x%.4Zx",
+ .print = ethertype_print,
+ .parse = ethertype_parse,
};
#define ETHHDR_TEMPLATE(__name, __dtype, __member) \