diff options
author | Joerg Mayer <jmayer@loplof.de> | 2019-11-10 07:11:19 +0100 |
---|---|---|
committer | Jörg Mayer <jmayer@loplof.de> | 2019-11-10 06:19:38 +0000 |
commit | 6a29a299c77e0a9bce0b30d103ca6535343e7364 (patch) | |
tree | 7150d4e004c3c316963dba84d9a1e30890fa1c4e | |
parent | ebb33f3e96395ca6227125b87df75011968eb2e3 (diff) |
lldp: add mandatory items chassis and port to info column
Change-Id: Id01d85147adb5d9194e97bde31ca76d3de2fb7c1
Reviewed-on: https://code.wireshark.org/review/35036
Reviewed-by: Jörg Mayer <jmayer@loplof.de>
-rw-r--r-- | epan/dissectors/packet-lldp.c | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/epan/dissectors/packet-lldp.c b/epan/dissectors/packet-lldp.c index 2b889473a3..c949815f65 100644 --- a/epan/dissectors/packet-lldp.c +++ b/epan/dissectors/packet-lldp.c @@ -1342,6 +1342,7 @@ dissect_lldp_chassis_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui guint16 tempShort; guint32 dataLen = 0; const char *strPtr=NULL; + const char *idType=NULL; guint8 addr_family = 0; proto_tree *chassis_tree = NULL; @@ -1396,6 +1397,7 @@ dissect_lldp_chassis_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui return -1; } + idType="MA"; strPtr = tvb_ether_to_str(tvb, offset); proto_tree_add_item(chassis_tree, hf_chassis_id_mac, tvb, offset, 6, ENC_NA); pn_lldp_column_info->chassis_id_mac = wmem_strdup(wmem_packet_scope(), strPtr); @@ -1410,6 +1412,8 @@ dissect_lldp_chassis_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui offset++; + idType="NA"; + /* Check for IPv4 or IPv6 */ switch(addr_family){ case AFNUM_INET: @@ -1463,23 +1467,29 @@ dissect_lldp_chassis_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui switch(tlvsubType) { case 2: /* Interface alias */ + idType="IA"; strPtr = tvb_format_stringzpad(tvb, offset, (dataLen - 1)); break; case 6: /* Interfae name */ + idType="IN"; strPtr = tvb_format_stringzpad(tvb, offset, (dataLen - 1)); break; case 7: /* Locally assigned */ + idType="LA"; strPtr = tvb_format_stringzpad(tvb, offset, (dataLen-1)); pn_lldp_column_info->chassis_id_locally_assigned = wmem_strdup(wmem_packet_scope(), strPtr); break; case 1: /* Chassis component */ + idType="CC"; strPtr = tvb_format_stringzpad(tvb, offset, (dataLen - 1)); break; case 3: /* Port component */ + idType="PC"; strPtr = tvb_bytes_to_str(wmem_packet_scope(), tvb, offset, (dataLen-1)); break; default: + idType="Rs"; strPtr = "Reserved"; break; @@ -1492,6 +1502,10 @@ dissect_lldp_chassis_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui } } + if (column_info_selection == DEFAULT_COLUMN_INFO) + { + col_append_fstr(pinfo->cinfo, COL_INFO, "%s/%s ", idType, strPtr); + } proto_item_append_text(tf, ", Id: %s", strPtr); return offset; @@ -1506,6 +1520,7 @@ dissect_lldp_port_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint3 guint16 tempShort; guint32 dataLen = 0; const char *strPtr=NULL; + const char *idType=NULL; guint8 addr_family = 0; proto_tree *port_tree = NULL; @@ -1557,6 +1572,7 @@ dissect_lldp_port_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint3 return -1; } + idType = "MA"; strPtr = tvb_ether_to_str(tvb, offset); proto_tree_add_item(port_tree, hf_port_id_mac, tvb, offset, 6, ENC_NA); @@ -1569,6 +1585,8 @@ dissect_lldp_port_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint3 offset++; + idType = "NA"; + /* Check for IPv4 or IPv6 */ switch(addr_family){ case AFNUM_INET: @@ -1619,23 +1637,29 @@ dissect_lldp_port_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint3 switch (tlvsubType) { - case 2: /* Port component */ - strPtr = tvb_bytes_to_str(wmem_packet_scope(), tvb, offset, (dataLen-1)); - break; case 1: /* Interface alias */ + idType = "IA"; strPtr = tvb_format_stringzpad(tvb, offset, (dataLen - 1)); break; + case 2: /* Port component */ + idType = "PC"; + strPtr = tvb_bytes_to_str(wmem_packet_scope(), tvb, offset, (dataLen-1)); + break; case 5: /* Interface name */ + idType = "IN"; strPtr = tvb_format_stringzpad(tvb, offset, (dataLen - 1)); break; case 6: /* Agent circuit ID */ + idType = "AC"; strPtr = tvb_format_stringzpad(tvb, offset, (dataLen - 1)); break; case 7: /* Locally assigned */ + idType = "LA"; strPtr = tvb_format_stringzpad(tvb, offset, (dataLen-1)); pn_lldp_column_info->port_id_locally_assigned = wmem_strdup(wmem_packet_scope(), strPtr); break; default: + idType = "Rs"; strPtr = "Reserved"; break; } @@ -1645,7 +1669,10 @@ dissect_lldp_port_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint3 offset += (dataLen - 1); break; } - + if (column_info_selection == DEFAULT_COLUMN_INFO) + { + col_append_fstr(pinfo->cinfo, COL_INFO, "%s/%s ", idType, strPtr); + } proto_item_append_text(tf, ", Id: %s", strPtr); return offset; @@ -1672,7 +1699,7 @@ dissect_lldp_time_to_live(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g tempShort = tvb_get_ntohs(tvb, (offset+2)); if (column_info_selection == DEFAULT_COLUMN_INFO) { - col_append_fstr(pinfo->cinfo, COL_INFO, "TTL = %u ", tempShort); + col_append_fstr(pinfo->cinfo, COL_INFO, "%u ", tempShort); } /* Set port tree */ @@ -1776,14 +1803,14 @@ dissect_lldp_system_name(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree ett_system_name, NULL, "System Name = %s", strPtr); if (column_info_selection == DEFAULT_COLUMN_INFO) { - col_append_fstr(pinfo->cinfo, COL_INFO, "SysName = %s ", strPtr); + col_append_fstr(pinfo->cinfo, COL_INFO, "SysN=%s ", strPtr); } } else { system_subtree = proto_tree_add_subtree_format(tree, tvb, offset, (dataLen + 2), ett_system_desc, NULL, "System Description = %s", strPtr); if (column_info_selection == DEFAULT_COLUMN_INFO) { - col_append_fstr(pinfo->cinfo, COL_INFO, "SysDesc = %s ", strPtr); + col_append_fstr(pinfo->cinfo, COL_INFO, "SysD=%s ", strPtr); } } |