From 765f3b53cfef707272652852639a9194c81f9c3d Mon Sep 17 00:00:00 2001 From: Anthony Coddington Date: Tue, 14 Jun 2016 13:27:25 +1200 Subject: [PATCH] PTP: Expose ptp_v2 value strings for use by other dissectors Also rename ptp_v2 value strings in packet-ptp for better consistency. TODO: could also be used and combined with definitions in packet-cip. Change-Id: I84a9ae566ae6abdd95910cb5709bb63c2b7c26b8 Reviewed-on: https://code.wireshark.org/review/16781 Reviewed-by: Michael Mann --- epan/dissectors/Makefile.am | 1 + epan/dissectors/packet-ptp.c | 84 +++++++++++++++++++----------------- epan/dissectors/packet-ptp.h | 31 +++++++++++++ 3 files changed, 77 insertions(+), 39 deletions(-) create mode 100644 epan/dissectors/packet-ptp.h diff --git a/epan/dissectors/Makefile.am b/epan/dissectors/Makefile.am index 8d0adebc95..fde02b2e64 100644 --- a/epan/dissectors/Makefile.am +++ b/epan/dissectors/Makefile.am @@ -1666,6 +1666,7 @@ DISSECTOR_INCLUDES = \ packet-ppi-geolocation-common.h \ packet-ppp.h \ packet-pres.h \ + packet-ptp.h \ packet-ptpip.h \ packet-pw-atm.h \ packet-pw-common.h \ diff --git a/epan/dissectors/packet-ptp.c b/epan/dissectors/packet-ptp.c index 7301156334..c74b682da5 100644 --- a/epan/dissectors/packet-ptp.c +++ b/epan/dissectors/packet-ptp.c @@ -54,6 +54,7 @@ #include #include #include +#include "packet-ptp.h" /**********************************************************/ /* Port definition's for PTP */ @@ -1133,7 +1134,7 @@ static const value_string ptp_as_TLV_oid_vals[] = { {0 , NULL} }; -static const value_string ptp2_networkProtocol_vals[] = { +static const value_string ptp_v2_networkProtocol_vals[] = { {0x0000, "Reserved"}, {0x0001, "UDP/IPv4"}, {0x0002, "UDP/IPv6"}, @@ -1146,8 +1147,9 @@ static const value_string ptp2_networkProtocol_vals[] = { {0xFFFF, "Reserved"}, {0, NULL } }; -static value_string_ext ptp2_networkProtocol_vals_ext = - VALUE_STRING_EXT_INIT(ptp2_networkProtocol_vals); +/* Exposed in packet-ptp.h */ +value_string_ext ptp_v2_networkProtocol_vals_ext = + VALUE_STRING_EXT_INIT(ptp_v2_networkProtocol_vals); static const value_string ptp_v2_messageid_vals[] = { @@ -1166,7 +1168,7 @@ static const value_string ptp_v2_messageid_vals[] = { static value_string_ext ptp_v2_messageid_vals_ext = VALUE_STRING_EXT_INIT(ptp_v2_messageid_vals); -static const value_string ptp_v2_clockaccuracy_vals[] = { +static const value_string ptp_v2_clockAccuracy_vals[] = { {0x20, "The time is accurate to within 25 ns"}, {0x21, "The time is accurate to within 100 ns"}, {0x22, "The time is accurate to within 250 ns"}, @@ -1191,10 +1193,11 @@ static const value_string ptp_v2_clockaccuracy_vals[] = { {0xFF, "reserved"}, {0, NULL } }; -static value_string_ext ptp_v2_clockaccuracy_vals_ext = - VALUE_STRING_EXT_INIT(ptp_v2_clockaccuracy_vals); +/* Exposed in packet-ptp.h */ +value_string_ext ptp_v2_clockAccuracy_vals_ext = + VALUE_STRING_EXT_INIT(ptp_v2_clockAccuracy_vals); -static const value_string ptp_v2_timesource_vals[] = { +static const value_string ptp_v2_timeSource_vals[] = { {0x10, "ATOMIC_CLOCK"}, {0x20, "GPS"}, {0x30, "TERRESTRIAL_RADIO"}, @@ -1206,8 +1209,9 @@ static const value_string ptp_v2_timesource_vals[] = { {0xFF, "reserved"}, {0, NULL } }; -static value_string_ext ptp_v2_timesource_vals_ext = - VALUE_STRING_EXT_INIT(ptp_v2_timesource_vals); +/* Exposed in packet-ptp.h */ +value_string_ext ptp_v2_timeSource_vals_ext = + VALUE_STRING_EXT_INIT(ptp_v2_timeSource_vals); static const value_string ptp_v2_mm_action_vals[] = { {0x0, "GET"}, @@ -1218,7 +1222,7 @@ static const value_string ptp_v2_mm_action_vals[] = { {0, NULL } }; -static const value_string ptp2_severityCode_vals[] = { +static const value_string ptp_v2_severityCode_vals[] = { {0x00, "Emergency: system is unusable"}, {0x01, "Alert: immediate action needed"}, {0x02, "Critical: critical conditions"}, @@ -1231,10 +1235,10 @@ static const value_string ptp2_severityCode_vals[] = { {0xFF, "Reserved"}, {0, NULL} }; -static value_string_ext ptp2_severityCode_vals_ext = - VALUE_STRING_EXT_INIT(ptp2_severityCode_vals); +static value_string_ext ptp_v2_severityCode_vals_ext = + VALUE_STRING_EXT_INIT(ptp_v2_severityCode_vals); -static const value_string ptp2_portState_vals[] = { +static const value_string ptp_v2_portState_vals[] = { {0x01, "INITIALIZING"}, {0x02, "FAULTY"}, {0x03, "DISABLED"}, @@ -1246,17 +1250,19 @@ static const value_string ptp2_portState_vals[] = { {0x09, "SLAVE"}, {0, NULL} }; -static value_string_ext ptp2_portState_vals_ext = - VALUE_STRING_EXT_INIT(ptp2_portState_vals); +/* Exposed in packet-ptp.h */ +value_string_ext ptp_v2_portState_vals_ext = + VALUE_STRING_EXT_INIT(ptp_v2_portState_vals); -static const value_string ptp2_delayMechanism_vals[] = { +/* Exposed in packet-ptp.h */ +const value_string ptp_v2_delayMechanism_vals[] = { {0x01, "E2E"}, {0x02, "P2P"}, {0xFE, "DISABLED"}, {0, NULL} }; -static const value_string ptp2_managementErrorId_vals[] = { +static const value_string ptp_v2_managementErrorId_vals[] = { {0x0000, "Reserved"}, {0x0001, "RESPONSE_TOO_BIG"}, {0x0002, "NO_SUCH_ID"}, @@ -1269,26 +1275,26 @@ static const value_string ptp2_managementErrorId_vals[] = { {0xFFFF, "Reserved"}, {0, NULL} }; -static value_string_ext ptp2_managementErrorId_vals_ext = - VALUE_STRING_EXT_INIT(ptp2_managementErrorId_vals); +static value_string_ext ptp_v2_managementErrorId_vals_ext = + VALUE_STRING_EXT_INIT(ptp_v2_managementErrorId_vals); -static const value_string ptp2_organizationExtensionOrgId_vals[] = { +static const value_string ptp_v2_organizationExtensionOrgId_vals[] = { {PTP_V2_OE_ORG_ID_IEEE_C37_238, "IEEE C37.238"}, {PTP_v2_OE_ORG_ID_SMPTE, "Society of Motion Picture and Television Engineers"}, {0, NULL} }; -static const value_string ptp2_org_iee_c37_238_subtype_vals[] = { +static const value_string ptp_v2_org_iee_c37_238_subtype_vals[] = { {PTP_V2_OE_ORG_IEEE_C37_238_SUBTYPE_C37238TLV, "IEEE_C37_238 TLV"}, {0, NULL} }; -static const value_string ptp2_org_smpte_subtype_vals[] = { +static const value_string ptp_v2_org_smpte_subtype_vals[] = { {PTP_V2_OE_ORG_SMPTE_SUBTYPE_VERSION_TLV, "Version"}, {0, NULL} }; -static const value_string ptp2_org_smpte_subypte_masterlockingstatus_vals[] = { +static const value_string ptp_v2_org_smpte_subtype_masterlockingstatus_vals[] = { {0, "Not in use"}, {1, "Free Run"}, {2, "Cold Locking"}, @@ -2460,7 +2466,7 @@ dissect_ptp_v2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean ptp /* Get the managementErrorId */ ptp_v2_mm_managementId = tvb_get_ntohs(tvb, PTP_V2_MM_TLV_MANAGEMENTERRORID_OFFSET); col_add_fstr(pinfo->cinfo, COL_INFO, "Management Error Message (%s)", - val_to_str_ext(ptp_v2_mm_managementId, &ptp2_managementErrorId_vals_ext, "Unknown Error Id %u")); + val_to_str_ext(ptp_v2_mm_managementId, &ptp_v2_managementErrorId_vals_ext, "Unknown Error Id %u")); break; } default: @@ -5081,7 +5087,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_an_timesource, { "TimeSource", "ptp.v2.timesource", - FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_timesource_vals_ext, 0x00, + FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_timeSource_vals_ext, 0x00, NULL, HFILL } }, { &hf_ptp_v2_an_localstepsremoved, @@ -5101,7 +5107,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_an_grandmasterclockaccuracy, { "grandmasterClockAccuracy", "ptp.v2.an.grandmasterclockaccuracy", - FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_clockaccuracy_vals_ext, 0x00, + FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_clockAccuracy_vals_ext, 0x00, NULL, HFILL } }, { &hf_ptp_v2_an_grandmasterclockvariance, @@ -5134,12 +5140,12 @@ proto_register_ptp(void) /* Fields for ORGANIZATION_EXTENSION TLV */ { &hf_ptp_v2_oe_tlv_organizationid, { "organizationId", "ptp.v2.an.oe.organizationId", - FT_UINT24, BASE_HEX, VALS(ptp2_organizationExtensionOrgId_vals), 0x00, + FT_UINT24, BASE_HEX, VALS(ptp_v2_organizationExtensionOrgId_vals), 0x00, NULL, HFILL } }, { &hf_ptp_v2_oe_tlv_organizationsubtype, { "organizationSubType", "ptp.v2.an.oe.organizationSubType", - FT_UINT24, BASE_HEX, VALS(ptp2_org_iee_c37_238_subtype_vals), 0x00, + FT_UINT24, BASE_HEX, VALS(ptp_v2_org_iee_c37_238_subtype_vals), 0x00, NULL, HFILL } }, { &hf_ptp_v2_oe_tlv_datafield, @@ -5618,7 +5624,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_mm_protocolAddress_networkProtocol, { "network protocol", "ptp.v2.mm.networkProtocol", - FT_UINT16, BASE_DEC | BASE_EXT_STRING, &ptp2_networkProtocol_vals_ext, 0x00, + FT_UINT16, BASE_DEC | BASE_EXT_STRING, &ptp_v2_networkProtocol_vals_ext, 0x00, NULL, HFILL } }, { &hf_ptp_v2_mm_protocolAddress_length, @@ -5700,7 +5706,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_mm_severityCode, { "severity code", "ptp.v2.mm.severityCode", - FT_UINT8, BASE_DEC | BASE_EXT_STRING, &ptp2_severityCode_vals_ext, 0x00, + FT_UINT8, BASE_DEC | BASE_EXT_STRING, &ptp_v2_severityCode_vals_ext, 0x00, NULL, HFILL } }, { &hf_ptp_v2_mm_faultName, @@ -5762,7 +5768,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_mm_clockAccuracy, { "Clock accuracy", "ptp.v2.mm.clockaccuracy", - FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_clockaccuracy_vals_ext, 0x00, + FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_clockAccuracy_vals_ext, 0x00, NULL, HFILL } }, @@ -5798,7 +5804,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_mm_clockaccuracy, { "Clock accuracy", "ptp.v2.mm.clockaccuracy", - FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_clockaccuracy_vals_ext, 0x00, + FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_clockAccuracy_vals_ext, 0x00, NULL, HFILL } }, { &hf_ptp_v2_mm_clockvariance, @@ -5868,7 +5874,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_mm_grandmasterclockaccuracy, { "Grandmaster clock accuracy", "ptp.v2.mm.grandmasterclockaccuracy", - FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_clockaccuracy_vals_ext, 0x00, + FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_clockAccuracy_vals_ext, 0x00, NULL, HFILL } }, { &hf_ptp_v2_mm_grandmasterclockvariance, @@ -5918,7 +5924,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_mm_timesource, { "TimeSource", "ptp.v2.mm.timesource", - FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_timesource_vals_ext, 0x00, + FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ptp_v2_timeSource_vals_ext, 0x00, NULL, HFILL } }, { &hf_ptp_v2_mm_offset_ns, @@ -5948,7 +5954,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_mm_portState, { "Port state", "ptp.v2.mm.portState", - FT_UINT8, BASE_DEC | BASE_EXT_STRING, &ptp2_portState_vals_ext, 0x00, + FT_UINT8, BASE_DEC | BASE_EXT_STRING, &ptp_v2_portState_vals_ext, 0x00, NULL, HFILL } }, { &hf_ptp_v2_mm_logMinDelayReqInterval, @@ -5983,7 +5989,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_mm_delayMechanism, { "Delay mechanism", "ptp.v2.mm.delayMechanism", - FT_UINT8, BASE_DEC, VALS(ptp2_delayMechanism_vals), 0x00, + FT_UINT8, BASE_DEC, VALS(ptp_v2_delayMechanism_vals), 0x00, NULL, HFILL } }, { &hf_ptp_v2_mm_logMinPdelayReqInterval, @@ -6009,7 +6015,7 @@ proto_register_ptp(void) { &hf_ptp_v2_mm_managementErrorId, { "managementErrorId", "ptp.v2.mm.managementErrorId", - FT_UINT16, BASE_DEC | BASE_EXT_STRING, &ptp2_managementErrorId_vals_ext, 0x00, + FT_UINT16, BASE_DEC | BASE_EXT_STRING, &ptp_v2_managementErrorId_vals_ext, 0x00, NULL, HFILL } }, { &hf_ptp_v2_mm_displayData, @@ -6089,7 +6095,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_oe_tlv_smpte_subtype, { "SMPTE SubType", "ptp.v2.oe.smpte.SubType", - FT_UINT24, BASE_HEX, VALS(ptp2_org_smpte_subtype_vals), 0x00, + FT_UINT24, BASE_HEX, VALS(ptp_v2_org_smpte_subtype_vals), 0x00, NULL, HFILL } }, { &hf_ptp_v2_oe_tlv_subtype_smpte_data, @@ -6114,7 +6120,7 @@ proto_register_ptp(void) }, { &hf_ptp_v2_oe_tlv_subtype_smpte_masterlockingstatus, { "masterLockingStatus", "ptp.v2.oe.smpte.masterlockingstatus", - FT_UINT8, BASE_DEC, VALS(ptp2_org_smpte_subypte_masterlockingstatus_vals), 0x00, + FT_UINT8, BASE_DEC, VALS(ptp_v2_org_smpte_subtype_masterlockingstatus_vals), 0x00, NULL, HFILL } }, { &hf_ptp_v2_oe_tlv_subtype_smpte_timeaddressflags, diff --git a/epan/dissectors/packet-ptp.h b/epan/dissectors/packet-ptp.h new file mode 100644 index 0000000000..4962833928 --- /dev/null +++ b/epan/dissectors/packet-ptp.h @@ -0,0 +1,31 @@ +/* packet-ptp.h + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef __PACKET_PTP_H__ +#define __PACKET_PTP_H__ + +extern value_string_ext ptp_v2_networkProtocol_vals_ext; +extern value_string_ext ptp_v2_clockAccuracy_vals_ext; +extern value_string_ext ptp_v2_timeSource_vals_ext; +extern value_string_ext ptp_v2_portState_vals_ext; +extern const value_string ptp_v2_delayMechanism_vals[]; + +#endif /* packet-ptp.h */