Decode OUI as Ethernet Vendor ID.

Change-Id: I17bca31d383dbbf5c29d7a28f16f4aa0dad9f945
Reviewed-on: https://code.wireshark.org/review/15252
Reviewed-by: Jörg Mayer <jmayer@loplof.de>
This commit is contained in:
Joerg Mayer 2016-05-03 11:58:41 +02:00 committed by Jörg Mayer
parent fe57253807
commit 1489c9e6ff
1 changed files with 22 additions and 9 deletions

View File

@ -40,6 +40,7 @@
#include <epan/packet.h>
#include <epan/etypes.h>
#include <epan/addr_resolv.h>
/** Value declarations for CFM EOAM (IEEE 802.1ag) dissection */
#define IEEE8021 0x00
@ -815,6 +816,7 @@ static int dissect_cfm_mcc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
gint cfm_tlv_offset;
proto_item *ti;
proto_item *fi;
proto_item *oi;
proto_tree *cfm_pdu_tree;
proto_tree *cfm_flag_tree;
@ -829,7 +831,8 @@ static int dissect_cfm_mcc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
proto_tree_add_item(cfm_pdu_tree, hf_cfm_first_tlv_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_oui, tvb, offset, 3, ENC_NA);
oi = proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_oui, tvb, offset, 3, ENC_BIG_ENDIAN);
proto_item_append_text(oi, " (%s)", tvb_get_manuf_name(tvb, offset));
offset += 3;
proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_subtype, tvb, offset, 1, ENC_NA);
offset += 1;
@ -995,6 +998,7 @@ static int dissect_cfm_exm(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
gint cfm_tlv_offset;
proto_item *ti;
proto_item *fi;
proto_item *oi;
proto_tree *cfm_pdu_tree;
proto_tree *cfm_flag_tree;
@ -1009,7 +1013,8 @@ static int dissect_cfm_exm(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
proto_tree_add_item(cfm_pdu_tree, hf_cfm_first_tlv_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_oui, tvb, offset, 3, ENC_NA);
oi = proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_oui, tvb, offset, 3, ENC_BIG_ENDIAN);
proto_item_append_text(oi, " (%s)", tvb_get_manuf_name(tvb, offset));
offset += 3;
proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_subtype, tvb, offset, 1, ENC_NA);
offset += 1;
@ -1033,6 +1038,7 @@ static int dissect_cfm_exr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
gint cfm_tlv_offset;
proto_item *ti;
proto_item *fi;
proto_item *oi;
proto_tree *cfm_pdu_tree;
proto_tree *cfm_flag_tree;
@ -1047,7 +1053,8 @@ static int dissect_cfm_exr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
proto_tree_add_item(cfm_pdu_tree, hf_cfm_first_tlv_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_oui, tvb, offset, 3, ENC_NA);
oi = proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_oui, tvb, offset, 3, ENC_BIG_ENDIAN);
proto_item_append_text(oi, " (%s)", tvb_get_manuf_name(tvb, offset));
offset += 3;
proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_subtype, tvb, offset, 1, ENC_NA);
offset += 1;
@ -1071,6 +1078,7 @@ static int dissect_cfm_vsm(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
gint cfm_tlv_offset;
proto_item *ti;
proto_item *fi;
proto_item *oi;
proto_tree *cfm_pdu_tree;
proto_tree *cfm_flag_tree;
@ -1085,7 +1093,8 @@ static int dissect_cfm_vsm(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
proto_tree_add_item(cfm_pdu_tree, hf_cfm_first_tlv_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_oui, tvb, offset, 3, ENC_NA);
oi = proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_oui, tvb, offset, 3, ENC_BIG_ENDIAN);
proto_item_append_text(oi, " (%s)", tvb_get_manuf_name(tvb, offset));
offset += 3;
proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_subtype, tvb, offset, 1, ENC_NA);
offset += 1;
@ -1109,6 +1118,7 @@ static int dissect_cfm_vsr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
gint cfm_tlv_offset;
proto_item *ti;
proto_item *fi;
proto_item *oi;
proto_tree *cfm_pdu_tree;
proto_tree *cfm_flag_tree;
@ -1123,7 +1133,8 @@ static int dissect_cfm_vsr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
proto_tree_add_item(cfm_pdu_tree, hf_cfm_first_tlv_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_oui, tvb, offset, 3, ENC_NA);
oi = proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_oui, tvb, offset, 3, ENC_BIG_ENDIAN);
proto_item_append_text(oi, " (%s)", tvb_get_manuf_name(tvb, offset));
offset += 3;
proto_tree_add_item(cfm_pdu_tree, hf_tlv_org_spec_subtype, tvb, offset, 1, ENC_NA);
offset += 1;
@ -1228,6 +1239,7 @@ static int dissect_cfm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
if (tree) { /* we are being asked for details */
gint cfm_tlv_offset;
proto_item *ti;
proto_item *oi;
proto_tree *cfm_tree;
/* isolate the payload of the packet */
@ -1504,8 +1516,9 @@ static int dissect_cfm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
* and the subtype.
*/
if (cfm_tlv_length > 3) {
proto_tree_add_item(cfm_tlv_tree, hf_tlv_org_spec_oui,
tvb, tlv_data_offset, 3, ENC_NA);
oi = proto_tree_add_item(cfm_tlv_tree, hf_tlv_org_spec_oui,
tvb, tlv_data_offset, 3, ENC_BIG_ENDIAN);
proto_item_append_text(oi, " (%s)", tvb_get_manuf_name(tvb, tlv_data_offset));
tlv_data_offset += 3;
proto_tree_add_item(cfm_tlv_tree, hf_tlv_org_spec_subtype,
tvb, tlv_data_offset, 1, ENC_NA);
@ -2104,8 +2117,8 @@ void proto_register_cfm(void)
/* Organization-Specific TLV */
{ &hf_tlv_org_spec_oui,
{ "OUI", "cfm.tlv.org.spec.oui", FT_BYTES,
BASE_NONE, NULL, 0x0, NULL, HFILL }
{ "OUI", "cfm.tlv.org.spec.oui", FT_UINT24,
BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_tlv_org_spec_subtype,
{ "Sub-Type", "cfm.tlv.org.spec.subtype", FT_BYTES,