diff options
author | Joerg Mayer <jmayer@loplof.de> | 2020-08-25 16:29:42 +0200 |
---|---|---|
committer | Joerg Mayer <jmayer@loplof.de> | 2020-10-12 18:38:08 +0200 |
commit | f1e28064ec0ab1b11749fbd1ebf4ae71153ecf07 (patch) | |
tree | bdf68ca8ee547bc8c62480ec707b2e74a422f587 /epan/dissectors/packet-ethertype.c | |
parent | a750cab655515904022c6a62651a855077a49315 (diff) |
Cisco ACI specific protocol enhancements
Add Ethertype for Cisco ACI ARP gleaning and dissect its payload
Improve some Cisco ACI vendor specific DHCP options
Update mcp after looking at knet_parser.py
Update lldp after looking at knet_parser.py
Also reorder some ETHERTYPEs by value
Diffstat (limited to 'epan/dissectors/packet-ethertype.c')
-rw-r--r-- | epan/dissectors/packet-ethertype.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/epan/dissectors/packet-ethertype.c b/epan/dissectors/packet-ethertype.c index acf3c20b48..90aa21fbf8 100644 --- a/epan/dissectors/packet-ethertype.c +++ b/epan/dissectors/packet-ethertype.c @@ -76,7 +76,7 @@ const value_string etype_vals[] = { { ETHERTYPE_MRP, "MRP" }, { ETHERTYPE_IEEE_802_1AD, "802.1ad Provider Bridge (Q-in-Q)" }, { ETHERTYPE_MACSEC, "802.1AE (MACsec)" }, - { ETHERTYPE_IEEE_1905, "1905.1a Convergent Digital Home Network for Heterogenous Technologies" }, + { ETHERTYPE_IEEE_1905, "1905.1a Convergent Digital Home Network for Heterogenous Technologies" }, { ETHERTYPE_IEEE_802_1AH, "802.1ah Provider Backbone Bridge (mac-in-mac)" }, { ETHERTYPE_IEEE_802_1BR, "802.1br Bridge Port Extension E-Tag" }, { ETHERTYPE_EAPOL, "802.1X Authentication" }, @@ -175,7 +175,7 @@ const value_string etype_vals[] = { { ETHERTYPE_HSR, "High-availability Seamless Redundancy (IEC62439 Part 3)" }, { ETHERTYPE_BPQ, "AX.25" }, { ETHERTYPE_CMD, "CiscoMetaData" }, - { ETHERTYPE_GEONETWORKING, "GeoNetworking" }, + { ETHERTYPE_GEONETWORKING, "GeoNetworking" }, { ETHERTYPE_XIP, "eXpressive Internet Protocol" }, { ETHERTYPE_NWP, "Neighborhood Watch Protocol" }, { ETHERTYPE_BLUECOM, "bluecom Protocol" }, @@ -185,6 +185,7 @@ const value_string etype_vals[] = { { ETHERTYPE_AVSP, "Arista Timestamp" }, { ETHERTYPE_ECPRI, "eCPRI" }, { ETHERTYPE_CABLELABS, "CableLabs Layer-3 Protocol" }, + { ETHERTYPE_ACIGLEAN, "Cisco ACI ARP gleaning" }, { 0, NULL } }; @@ -231,6 +232,34 @@ dissect_ethertype(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat reported_length = tvb_reported_length_remaining(tvb, ethertype_data->payload_offset); + /* With Cisco ACI gleaning, the rest of the packet is dissected for informational purposes only */ + if (ethertype_data->etype == ETHERTYPE_ACIGLEAN) { + + guint gleantype, payload_etype; + + col_add_fstr(pinfo->cinfo, COL_PROTOCOL, "0x%04x", ethertype_data->etype); + col_set_writable(pinfo->cinfo, COL_PROTOCOL, FALSE); + + description = try_val_to_str(ethertype_data->etype, etype_vals); + col_add_str(pinfo->cinfo, COL_INFO, description); + col_set_writable(pinfo->cinfo, COL_INFO, FALSE); + if (reported_length >= 1) { + gleantype = (tvb_get_guint8(tvb, ethertype_data->payload_offset) & 0xF0) >> 4; + switch (gleantype) { + case 4: /* IPv4 */ + payload_etype = 0x0800; + break; + case 6: /* IPv6 */ + payload_etype = 0x86BB; + break; + default: /* ARP */ + payload_etype = 0x0806; + } + ethertype_data->etype = payload_etype; +// FIXME: Add glean to protocol-stack in frame-header + } + } + /* Remember how much data there is after the Ethernet type, including any trailer and FCS. */ length_before = reported_length; |