* @TYPE_LLADDR: link layer address (integer subtype)
* @TYPE_IPADDR: IPv4 address (integer subtype)
* @TYPE_IP6ADDR: IPv6 address (integer subtype)
+ * @TYPE_ETHERADDR: Ethernet address (lladdr subtype)
* @TYPE_ETHERTYPE: EtherType (integer subtype)
* @TYPE_ARPOP: ARP operation (integer subtype)
* @TYPE_INET_PROTOCOL: internet protocol (integer subtype)
TYPE_LLADDR,
TYPE_IPADDR,
TYPE_IP6ADDR,
+ TYPE_ETHERADDR,
TYPE_ETHERTYPE,
TYPE_ARPOP,
TYPE_INET_PROTOCOL,
extern const struct datatype lladdr_type;
extern const struct datatype ipaddr_type;
extern const struct datatype ip6addr_type;
+extern const struct datatype etheraddr_type;
extern const struct datatype ethertype_type;
extern const struct datatype arphrd_type;
extern const struct datatype inet_protocol_type;
[TYPE_LLADDR] = &lladdr_type,
[TYPE_IPADDR] = &ipaddr_type,
[TYPE_IP6ADDR] = &ip6addr_type,
+ [TYPE_ETHERADDR] = ðeraddr_type,
[TYPE_ETHERTYPE] = ðertype_type,
[TYPE_INET_PROTOCOL] = &inet_protocol_type,
[TYPE_INET_SERVICE] = &inet_service_type,
* Ethernet
*/
+const struct datatype etheraddr_type = {
+ .type = TYPE_ETHERADDR,
+ .name = "etheraddr",
+ .desc = "Ethernet address",
+ .byteorder = BYTEORDER_HOST_ENDIAN,
+ .size = ETH_ALEN * BITS_PER_BYTE,
+ .basetype = &lladdr_type,
+};
+
static const struct symbol_table ethertype_tbl = {
.symbols = {
SYMBOL("ip", ETH_P_IP),
#define ETHHDR_TYPE(__name, __member) \
ETHHDR_TEMPLATE(__name, ðertype_type, __member)
#define ETHHDR_ADDR(__name, __member) \
- ETHHDR_TEMPLATE(__name, &lladdr_type, __member)
+ ETHHDR_TEMPLATE(__name, ðeraddr_type, __member)
const struct payload_desc payload_eth = {
.name = "eth",