aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ethertype.c
diff options
context:
space:
mode:
authorJoerg Mayer <jmayer@loplof.de>2020-08-25 16:29:42 +0200
committerJoerg Mayer <jmayer@loplof.de>2020-10-12 18:38:08 +0200
commitf1e28064ec0ab1b11749fbd1ebf4ae71153ecf07 (patch)
treebdf68ca8ee547bc8c62480ec707b2e74a422f587 /epan/dissectors/packet-ethertype.c
parenta750cab655515904022c6a62651a855077a49315 (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.c33
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;