[skinny] Fix ConnectionStatRes and DialedNumber Messages protocol version >20

- ConnectionStatisticsResponse Comes in three different forms
- DialedNumber Message has variable length

Minor:
- Pass ipv4or6 connection address back to calling function (using this later on in seperate commit)
- Correct spelling mistakes
- Remove duplicates from DeviceType[]

Change-Id: Ib1619b163c12b6a4c6c86972186d828be3fd94e2
Reviewed-on: https://code.wireshark.org/review/20056
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
Diederik de Groot 2017-02-11 13:41:58 +01:00 committed by Michael Mann
parent 6550b10422
commit fb3a7caa17
6 changed files with 341 additions and 328 deletions

View File

@ -46,6 +46,7 @@
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/reassemble.h>
#include <epan/tap.h>
#include <epan/ptvcursor.h>
@ -57,7 +58,6 @@
void proto_register_skinny(void);
void proto_reg_handoff_skinny(void);
#define TCP_PORT_SKINNY 2000 /* Not IANA registered */
#define SSL_PORT_SKINNY 2443 /* IANA assigned to PowerClient Central Storage Facility */
@ -264,7 +264,6 @@ static const value_string message_id[] = {
};
static value_string_ext message_id_ext = VALUE_STRING_EXT_INIT(message_id);
/* Declare Enums and Defines */
static const value_string DisplayLabels_36[] = {
{ 0x00000, "Empty" },
@ -480,12 +479,9 @@ static const value_string DeviceType[] = {
{ 0x00003, "Station12SP" },
{ 0x00004, "Station12" },
{ 0x00005, "Station30VIP" },
{ 0x00006, "StationTelecaster" },
{ 0x00006, "Cisco 7910" },
{ 0x00007, "StationTelecasterMgr" },
{ 0x00008, "StationTelecasterBus" },
{ 0x00008, "Cisco 7940" },
{ 0x00009, "StationPolycom" },
{ 0x00009, "Cisco 7935" },
{ 0x0000a, "StationVGC" },
{ 0x0000b, "VGCVirtualPhone" },
@ -543,22 +539,19 @@ static const value_string DeviceType[] = {
{ 0x00085, "WsmTrunk" },
{ 0x00086, "RemoteDestination" },
{ 0x000e3, "Cisco 7915 AddOn" },
{ 0x000e4, "Cisco 7915 AddOn" },
{ 0x000e4, "Cisco 7915 AddOn 24" },
{ 0x000e5, "Cisco 7916 AddOn" },
{ 0x000e6, "Cisco 7916 AddOn" },
{ 0x000e6, "Cisco 7916 AddOn 24" },
{ 0x000fd, "GenericDevice" },
{ 0x000fe, "UnknownMGCPGateway" },
{ 0x000ff, "NotDefined" },
{ 0x00113, "Nokia E Series" },
{ 0x0012e, "7989" },
{ 0x0012e, "Cisco 7985" },
{ 0x00133, "7911" },
{ 0x00134, "7941G_GE" },
{ 0x00134, "Cisco 7961 GE" },
{ 0x00135, "7961G_GE" },
{ 0x0014f, "MotorolaCN622" },
{ 0x00150, "3rdPartySipBasic" },
{ 0x0015c, "StationGoPed" },
{ 0x0015c, "Cisco 7931" },
{ 0x00166, "UnifiedCommunicator" },
{ 0x0016d, "7921" },
@ -595,7 +588,6 @@ static const value_string DeviceType[] = {
{ 0x07536, "7970" },
{ 0x07537, "7912" },
{ 0x07538, "7902" },
{ 0x07540, "SoftPhone" },
{ 0x07540, "Cisco IP Communicator" },
{ 0x07542, "7961G" },
{ 0x07543, "7936" },
@ -685,7 +677,7 @@ static const value_string DeviceStimulus[] = {
{ 0x0008a, "EndCall" },
{ 0x0008b, "HLog" },
{ 0x0008f, "Queuing" },
{ 0x0008f, "MaxStimulusValue" },
{ 0x000ff, "MaxStimulusValue" },
{ 0x00000, NULL }
};
static value_string_ext DeviceStimulus_ext = VALUE_STRING_EXT_INIT(DeviceStimulus);
@ -902,7 +894,7 @@ static const value_string SoftKeySet[] = {
{ 0x00002, "On Hold" },
{ 0x00003, "Ring In" },
{ 0x00004, "Off Hook" },
{ 0x00005, "Connected Transfeable" },
{ 0x00005, "Connected Transferable" },
{ 0x00006, "Digits Following" },
{ 0x00007, "Connected Conference" },
{ 0x00008, "Ring Out" },
@ -1706,7 +1698,7 @@ static const value_string CallHistoryDisposition[] = {
{ 0x00001, "PlacedCalls" },
{ 0x00002, "ReceivedCalls" },
{ 0x00003, "MissedCalls" },
{ 0xffffffff, "UnknownDisp" },
{ 0x0ffff, "UnknownDisp" },
{ 0x00000, NULL }
};
static value_string_ext CallHistoryDisposition_ext = VALUE_STRING_EXT_INIT(CallHistoryDisposition);
@ -2000,6 +1992,8 @@ static int hf_skinny_maximumBitRate = -1;
static int hf_skinny_mediaPathCapabilities = -1;
static int hf_skinny_mediaPathEvent = -1;
static int hf_skinny_mediaPathID = -1;
static int hf_skinny_mediaReceptionStatus = -1;
static int hf_skinny_mediaTransmissionStatus = -1;
static int hf_skinny_mediaTransportType = -1;
static int hf_skinny_mediaType = -1;
static int hf_skinny_micMode = -1;
@ -2012,7 +2006,9 @@ static int hf_skinny_modify_conf_result = -1;
static int hf_skinny_multicastIpAddr_ipv4 = -1;
static int hf_skinny_multicastIpAddr_ipv6 = -1;
static int hf_skinny_multicastPortNumber = -1;
static int hf_skinny_multimediaOpenReceiveChannelStatus = -1;
static int hf_skinny_multicastReceptionStatus = -1;
static int hf_skinny_multimediaReceptionStatus = -1;
static int hf_skinny_multimediaTransmissionStatus = -1;
static int hf_skinny_mwiControlNumber = -1;
static int hf_skinny_mwiTargetNumber = -1;
static int hf_skinny_mwi_notification_result = -1;
@ -2036,7 +2032,6 @@ static int hf_skinny_numberOfSpeedDials = -1;
static int hf_skinny_numberPacketsLost = -1;
static int hf_skinny_numberPacketsReceived = -1;
static int hf_skinny_numberPacketsSent = -1;
static int hf_skinny_openReceiveChannelStatus = -1;
static int hf_skinny_originalCalledParty = -1;
static int hf_skinny_originalCalledPartyName = -1;
static int hf_skinny_originalCdpnRedirectReason = -1;
@ -2073,7 +2068,6 @@ static int hf_skinny_profile = -1;
static int hf_skinny_promptStatus = -1;
static int hf_skinny_protocolDependentData = -1;
static int hf_skinny_protocolVer = -1;
static int hf_skinny_receptionStatus = -1;
static int hf_skinny_recording_status = -1;
static int hf_skinny_recoveryReferencePictureCount = -1;
static int hf_skinny_remoteIpAddr_ipv4 = -1;
@ -2084,7 +2078,6 @@ static int hf_skinny_reserved_for_future_use = -1;
static int hf_skinny_resetType = -1;
static int hf_skinny_resourceType = -1;
static int hf_skinny_result = -1;
static int hf_skinny_resultCode = -1;
static int hf_skinny_resvStyle = -1;
static int hf_skinny_retryTimer = -1;
static int hf_skinny_rfc2833 = -1;
@ -2127,7 +2120,6 @@ static int hf_skinny_speedDialNumber = -1;
static int hf_skinny_ssValue = -1;
static int hf_skinny_sse = -1;
static int hf_skinny_standard = -1;
static int hf_skinny_startMediaTransmissionStatus = -1;
static int hf_skinny_startingLineInstance = -1;
static int hf_skinny_stationIpAddr = -1;
static int hf_skinny_stationIpAddr_ipv4 = -1;
@ -2163,7 +2155,6 @@ static int hf_skinny_totalSoftKeySetCount = -1;
static int hf_skinny_transactionID = -1;
static int hf_skinny_transmitIpAddr_ipv4 = -1;
static int hf_skinny_transmitIpAddr_ipv6 = -1;
static int hf_skinny_transmitPort = -1;
static int hf_skinny_transmitPreference = -1;
static int hf_skinny_unRegReasonCode = -1;
static int hf_skinny_unknown = -1;
@ -2195,8 +2186,8 @@ static dissector_handle_t xml_handle;
static gint ett_skinny = -1;
static gint ett_skinny_tree = -1;
/* desegmentation of SCCP */
static gboolean skinny_desegment = TRUE;
/* preference globals */
static gboolean global_skinny_desegment = TRUE;
/* tap register id */
static int skinny_tap = -1;
@ -2209,13 +2200,13 @@ static skinny_info_t *si;
dissector_handle_t skinny_handle;
/* Get the length of a single SCCP PDU */
/* Get the length of a single SKINNY PDU */
static guint
get_skinny_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data _U_)
{
guint32 hdr_data_length;
/* Get the length of the SCCP packet. */
/* Get the length of the SKINNY packet. */
hdr_data_length = tvb_get_letohl(tvb, offset);
/* That length doesn't include the length of the header itself. */
@ -2251,14 +2242,12 @@ dissect_skinny_xml(ptvcursor_t *cursor, int hfindex, packet_info *pinfo, guint32
}
static void
dissect_skinny_ipv4or6(ptvcursor_t *cursor, int hfindex_ipv4, int hfindex_ipv6, packet_info *pinfo)
dissect_skinny_ipv4or6(ptvcursor_t *cursor, int hfindex_ipv4, int hfindex_ipv6)
{
address src_addr;
guint32 ipversion = 0;
guint32 offset = ptvcursor_current_offset(cursor);
tvbuff_t *tvb = ptvcursor_tvbuff(cursor);
guint32 hdr_version = tvb_get_letohl(tvb, 4);
gboolean is_video = FALSE;
/* ProtocolVersion > 18 include and extra field to declare IPv4 (0) / IPv6 (1) */
if (hdr_version >= V17_MSG_TYPE) {
@ -2266,24 +2255,12 @@ dissect_skinny_ipv4or6(ptvcursor_t *cursor, int hfindex_ipv4, int hfindex_ipv6,
ptvcursor_add(cursor, hf_skinny_ipv4or6, 4, ENC_LITTLE_ENDIAN);
}
if (ipversion == IPADDRTYPE_IPV4) {
guint32 ip_address;
src_addr.type = AT_IPv4;
src_addr.len = 4;
src_addr.data = (guint8 *)&ip_address;
ip_address = tvb_get_ipv4(tvb, offset);
rtp_add_address(pinfo, PT_UDP, &src_addr, tvb_get_letohl(tvb, offset), 0, "Skinny", pinfo->num, is_video, NULL);
ptvcursor_add(cursor, hfindex_ipv4, 4, ENC_BIG_ENDIAN);
if (hdr_version >= V17_MSG_TYPE) {
/* skip over the extra room for ipv6 addresses */
ptvcursor_advance(cursor, 12);
}
} else if (ipversion == IPADDRTYPE_IPV6 || ipversion == IPADDRTYPE_IPV4_V6) {
struct e_in6_addr IPv6;
src_addr.type = AT_IPv6;
src_addr.len = 16;
src_addr.data = (guint8 *)&IPv6;
tvb_get_ipv6(tvb, offset, &IPv6);
rtp_add_address(pinfo, PT_UDP, &src_addr, tvb_get_letohl(tvb, offset), 0, "Skinny", pinfo->num, is_video, NULL);
ptvcursor_add(cursor, hfindex_ipv6, 16, ENC_NA);
} else {
/* Invalid : skip over ipv6 space completely */
@ -2701,7 +2678,7 @@ handle_AlarmMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
static void
handle_MulticastMediaReceptionAckMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
{
ptvcursor_add(cursor, hf_skinny_receptionStatus, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_multicastReceptionStatus, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
@ -2719,9 +2696,8 @@ handle_OpenReceiveChannelAckMessage(ptvcursor_t *cursor, packet_info * pinfo _U_
{
guint32 hdr_data_length = tvb_get_letohl(ptvcursor_tvbuff(cursor), 0);
si->openreceiveStatus = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_openReceiveChannelStatus, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_ipAddr_ipv4, hf_skinny_ipAddr_ipv6, pinfo);
ptvcursor_add(cursor, hf_skinny_mediaReceptionStatus, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_ipAddr_ipv4, hf_skinny_ipAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_portNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
if (hdr_data_length > 20) {
@ -2742,13 +2718,26 @@ handle_ConnectionStatisticsResMessage(ptvcursor_t *cursor, packet_info * pinfo _
{
guint32 hdr_data_length = tvb_get_letohl(ptvcursor_tvbuff(cursor), 0);
guint32 hdr_version = tvb_get_letohl(ptvcursor_tvbuff(cursor), 4);
guint32 VariableDirnumSize = (hdr_version >= V18_MSG_TYPE) ? 25 : 24;
guint32 dataSize = 0;
ptvcursor_add(cursor, hf_skinny_directoryNum, VariableDirnumSize, ENC_ASCII|ENC_NA);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_statsProcessingMode, 4, ENC_LITTLE_ENDIAN);
if (hdr_version <= V16_MSG_TYPE) {
ptvcursor_add(cursor, hf_skinny_directoryNum, 24, ENC_ASCII|ENC_NA);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_statsProcessingMode, 4, ENC_LITTLE_ENDIAN);
}
if (hdr_version >= V17_MSG_TYPE && hdr_version <= V20_MSG_TYPE) {
ptvcursor_add(cursor, hf_skinny_directoryNum, 28, ENC_ASCII|ENC_NA);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_statsProcessingMode, 4, ENC_LITTLE_ENDIAN);
}
if (hdr_version >= V21_MSG_TYPE) {
ptvcursor_add(cursor, hf_skinny_directoryNum, 28, ENC_ASCII|ENC_NA);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_statsProcessingMode, 1, ENC_LITTLE_ENDIAN);
}
ptvcursor_add(cursor, hf_skinny_numberPacketsSent, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_numberOctetsSent, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_numberPacketsReceived, 4, ENC_LITTLE_ENDIAN);
@ -2836,7 +2825,7 @@ handle_RegisterTokenReq(ptvcursor_t *cursor, packet_info * pinfo _U_)
}
ptvcursor_add(cursor, hf_skinny_stationIpAddr, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_deviceType, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_stationIpV6Addr_ipv4, hf_skinny_stationIpV6Addr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_stationIpV6Addr_ipv4, hf_skinny_stationIpV6Addr_ipv6);
}
/*
@ -2851,7 +2840,7 @@ handle_MediaTransmissionFailureMessage(ptvcursor_t *cursor, packet_info * pinfo
{
ptvcursor_add(cursor, hf_skinny_conferenceID, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_remotePortNumber, 4, ENC_LITTLE_ENDIAN);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
@ -3272,12 +3261,18 @@ handle_UpdateCapabilitiesMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
static void
handle_OpenMultiMediaReceiveChannelAckMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
{
ptvcursor_add(cursor, hf_skinny_multimediaOpenReceiveChannelStatus, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_ipAddr_ipv4, hf_skinny_ipAddr_ipv6, pinfo);
guint32 hdr_version = tvb_get_letohl(ptvcursor_tvbuff(cursor), 4);
ptvcursor_add(cursor, hf_skinny_multimediaReceptionStatus, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_ipAddr_ipv4, hf_skinny_ipAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_portNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
if (hdr_version >= V16_MSG_TYPE) {
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
}
}
/*
@ -4174,7 +4169,7 @@ handle_PortResMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_ipAddr_ipv4, hf_skinny_ipAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_ipAddr_ipv4, hf_skinny_ipAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_portNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_RTCPPortNumber, 4, ENC_LITTLE_ENDIAN);
if (hdr_version >= V19_MSG_TYPE) {
@ -4196,7 +4191,7 @@ handle_QoSResvNotifyMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_remotePortNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_direction, 4, ENC_LITTLE_ENDIAN);
}
@ -4215,7 +4210,7 @@ handle_QoSErrorNotifyMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_remotePortNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_direction, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_errorCode, 4, ENC_LITTLE_ENDIAN);
@ -4468,7 +4463,7 @@ handle_StartMediaTransmissionMessage(ptvcursor_t *cursor, packet_info * pinfo _U
ptvcursor_add(cursor, hf_skinny_conferenceID, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_remotePortNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_millisecondPacketSize, 4, ENC_LITTLE_ENDIAN);
compressionType = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
@ -4790,7 +4785,7 @@ handle_DefineTimeDate(ptvcursor_t *cursor, packet_info * pinfo _U_)
static void
handle_StartSessionTransmissionMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
{
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_sessionType, 4, ENC_LITTLE_ENDIAN);
}
@ -4804,7 +4799,7 @@ handle_StartSessionTransmissionMessage(ptvcursor_t *cursor, packet_info * pinfo
static void
handle_StopSessionTransmissionMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
{
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_sessionType, 4, ENC_LITTLE_ENDIAN);
}
@ -4943,7 +4938,7 @@ handle_ServerResMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
ptvcursor_add_text_with_subtree(cursor, SUBTREE_UNDEFINED_LENGTH, ett_skinny_tree, "serverIpAddr [max:5]");
for (counter_2 = 0; counter_2 < 5; counter_2++) {
ptvcursor_add_text_with_subtree(cursor, SUBTREE_UNDEFINED_LENGTH, ett_skinny_tree, "serverIpAddr [%d / %d]", counter_2 + 1, 5);
dissect_skinny_ipv4or6(cursor, hf_skinny_stationIpAddr_ipv4, hf_skinny_stationIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_stationIpAddr_ipv4, hf_skinny_stationIpAddr_ipv6);
ptvcursor_pop_subtree(cursor);
/* end for loop tree: serverIpAddr */
}
@ -4980,7 +4975,7 @@ handle_StartMulticastMediaReceptionMessage(ptvcursor_t *cursor, packet_info * pi
guint32 hdr_version = tvb_get_letohl(ptvcursor_tvbuff(cursor), 4);
ptvcursor_add(cursor, hf_skinny_conferenceID, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_multicastIpAddr_ipv4, hf_skinny_multicastIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_multicastIpAddr_ipv4, hf_skinny_multicastIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_multicastPortNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_millisecondPacketSize, 4, ENC_LITTLE_ENDIAN);
compressionType = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
@ -5035,7 +5030,7 @@ handle_StartMulticastMediaTransmissionMessage(ptvcursor_t *cursor, packet_info *
guint32 hdr_version = tvb_get_letohl(ptvcursor_tvbuff(cursor), 4);
ptvcursor_add(cursor, hf_skinny_conferenceID, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_multicastIpAddr_ipv4, hf_skinny_multicastIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_multicastIpAddr_ipv4, hf_skinny_multicastIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_multicastPortNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_millisecondPacketSize, 4, ENC_LITTLE_ENDIAN);
compressionType = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
@ -5210,7 +5205,7 @@ handle_OpenReceiveChannelMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
if (hdr_version >= V11_MSG_TYPE) {
ptvcursor_add(cursor, hf_skinny_mixingMode, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_partyDirection, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_sourceIpAddr_ipv4, hf_skinny_sourceIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_sourceIpAddr_ipv4, hf_skinny_sourceIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_sourcePortNumber, 4, ENC_LITTLE_ENDIAN);
}
if (hdr_version >= V16_MSG_TYPE) {
@ -5302,8 +5297,13 @@ static void
handle_ConnectionStatisticsReqMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
{
guint32 hdr_version = tvb_get_letohl(ptvcursor_tvbuff(cursor), 4);
guint32 VariableDirnumSize = (hdr_version >= V18_MSG_TYPE) ? 25 : 24;
ptvcursor_add(cursor, hf_skinny_directoryNum, VariableDirnumSize, ENC_ASCII|ENC_NA);
if (hdr_version <= V16_MSG_TYPE) {
ptvcursor_add(cursor, hf_skinny_directoryNum, 24, ENC_ASCII|ENC_NA);
}
if (hdr_version >= V17_MSG_TYPE) {
ptvcursor_add(cursor, hf_skinny_directoryNum, 28, ENC_ASCII|ENC_NA);
}
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_statsProcessingMode, 4, ENC_LITTLE_ENDIAN);
@ -5637,11 +5637,21 @@ handle_DialedNumberMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
{
guint32 hdr_version = tvb_get_letohl(ptvcursor_tvbuff(cursor), 4);
guint32 VariableDirnumSize = (hdr_version >= V18_MSG_TYPE) ? 25 : 24;
ptvcursor_add(cursor, hf_skinny_dialedNumber, VariableDirnumSize, ENC_ASCII|ENC_NA);
si->lineId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_lineInstance, 4, ENC_LITTLE_ENDIAN);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
if (hdr_version <= V17_MSG_TYPE) {
ptvcursor_add(cursor, hf_skinny_dialedNumber, 24, ENC_ASCII|ENC_NA);
si->lineId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_lineInstance, 4, ENC_LITTLE_ENDIAN);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
}
if (hdr_version >= V18_MSG_TYPE) {
ptvcursor_add(cursor, hf_skinny_dialedNumber, VariableDirnumSize, ENC_ASCII|ENC_NA);
si->lineId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_lineInstance, 4, ENC_LITTLE_ENDIAN);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
}
}
/*
@ -6191,7 +6201,7 @@ handle_OpenMultiMediaReceiveChannelMessage(ptvcursor_t *cursor, packet_info * pi
ptvcursor_add(cursor, hf_skinny_streamPassThroughID, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_associatedStreamID, 4, ENC_LITTLE_ENDIAN);
if (hdr_version >= V11_MSG_TYPE) {
dissect_skinny_ipv4or6(cursor, hf_skinny_sourceIpAddr_ipv4, hf_skinny_sourceIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_sourceIpAddr_ipv4, hf_skinny_sourceIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_sourcePortNumber, 4, ENC_LITTLE_ENDIAN);
}
if (hdr_version >= V16_MSG_TYPE) {
@ -6219,7 +6229,7 @@ handle_StartMultiMediaTransmissionMessage(ptvcursor_t *cursor, packet_info * pin
ptvcursor_add(cursor, hf_skinny_passthruPartyID, 4, ENC_LITTLE_ENDIAN);
compressionType = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_compressionType, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_remotePortNumber, 4, ENC_LITTLE_ENDIAN);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
@ -7251,7 +7261,7 @@ handle_QoSListenMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_remotePortNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_resvStyle, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_maxRetryNumber, 4, ENC_LITTLE_ENDIAN);
@ -7289,7 +7299,7 @@ handle_QoSPathMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_remotePortNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_resvStyle, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_maxRetryNumber, 4, ENC_LITTLE_ENDIAN);
@ -7326,7 +7336,7 @@ handle_QoSTeardownMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_remotePortNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_direction, 4, ENC_LITTLE_ENDIAN);
}
@ -7345,7 +7355,7 @@ handle_UpdateDSCPMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_remotePortNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_DSCPValue, 4, ENC_LITTLE_ENDIAN);
}
@ -7364,7 +7374,7 @@ handle_QoSModifyMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6, pinfo);
dissect_skinny_ipv4or6(cursor, hf_skinny_remoteIpAddr_ipv4, hf_skinny_remoteIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_remotePortNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_direction, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_compressionType, 4, ENC_LITTLE_ENDIAN);
@ -7429,10 +7439,9 @@ handle_StartMediaTransmissionAckMessage(ptvcursor_t *cursor, packet_info * pinfo
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_transmitIpAddr_ipv4, hf_skinny_transmitIpAddr_ipv6, pinfo);
ptvcursor_add(cursor, hf_skinny_transmitPort, 4, ENC_LITTLE_ENDIAN);
si->startmediatransmisionStatus = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_startMediaTransmissionStatus, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_transmitIpAddr_ipv4, hf_skinny_transmitIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_portNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_mediaTransmissionStatus, 4, ENC_LITTLE_ENDIAN);
}
/*
@ -7449,9 +7458,9 @@ handle_StartMultiMediaTransmissionAckMessage(ptvcursor_t *cursor, packet_info *
ptvcursor_add(cursor, hf_skinny_passThruPartyID, 4, ENC_LITTLE_ENDIAN);
si->callId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_skinny_callReference, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_transmitIpAddr_ipv4, hf_skinny_transmitIpAddr_ipv6, pinfo);
ptvcursor_add(cursor, hf_skinny_transmitPort, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_resultCode, 4, ENC_LITTLE_ENDIAN);
dissect_skinny_ipv4or6(cursor, hf_skinny_transmitIpAddr_ipv4, hf_skinny_transmitIpAddr_ipv6);
ptvcursor_add(cursor, hf_skinny_portNumber, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_multimediaTransmissionStatus, 4, ENC_LITTLE_ENDIAN);
}
/*
@ -7808,7 +7817,7 @@ static const struct opcode2handler {
{0x8101, handle_SPCPRegisterTokenReject , "SPCPRegisterTokenReject"},
};
/* Dissect a single SCCP PDU */
/* Dissect a single SKINNY PDU */
static int dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
guint offset = 0;
@ -7826,11 +7835,6 @@ static int dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
proto_item *ti = NULL;
/* Initialization */
/*
hdr_data_length = tvb_get_letohl(tvb, offset);
hdr_version = tvb_get_letohl(tvb, offset+4);
data_messageid = tvb_get_letohl(tvb, offset+8);
*/
hdr_data_length = tvb_get_letohl(tvb, 0);
hdr_version = tvb_get_letohl(tvb, 4);
data_messageid = tvb_get_letohl(tvb, 8);
@ -7869,15 +7873,10 @@ static int dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
col_add_fstr(pinfo->cinfo, COL_INFO,"%s ", si->messageName);
col_set_fence(pinfo->cinfo, COL_INFO);
/*offset += 8;*/
/*cursor = ptvcursor_new(skinny_tree, tvb, offset);*/
proto_tree_add_uint(skinny_tree, hf_skinny_messageId, tvb,offset+8, 4, data_messageid );
/*ptvcursor_add(cursor, hf_skinny_messageId, 4, data_messageid);*/
offset += 12;
cursor = ptvcursor_new(skinny_tree, tvb, offset);
cursor = ptvcursor_new(skinny_tree, tvb, offset);
for (i = 0; i < sizeof(skinny_opcode2handler)/sizeof(struct opcode2handler) ; i++) {
if (skinny_opcode2handler[i].opcode == data_messageid && skinny_opcode2handler[i].handler) {
skinny_opcode2handler[i].handler(cursor, pinfo);
@ -7886,6 +7885,7 @@ static int dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
ptvcursor_free(cursor);
tap_queue_packet(skinny_tap, pinfo, si);
return tvb_captured_length(tvb);
}
@ -7936,7 +7936,7 @@ dissect_skinny(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
col_set_str(pinfo->cinfo, COL_INFO, "Skinny Client Control Protocol");
tcp_dissect_pdus(tvb, pinfo, tree, skinny_desegment, 4, get_skinny_pdu_len, dissect_skinny_pdu, data);
tcp_dissect_pdus(tvb, pinfo, tree, global_skinny_desegment, 4, get_skinny_pdu_len, dissect_skinny_pdu, data);
return tvb_captured_length(tvb);
}
@ -9163,10 +9163,6 @@ proto_register_skinny(void)
{
"transmitIpAddr IPv6 Address", "skinny.transmitIpAddr.ipv6", FT_IPv6, BASE_NONE, NULL, 0x0,
"ipaddress in big endian", HFILL }},
{ &hf_skinny_transmitPort,
{
"transmitPort", "skinny.transmitPort", FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
{ &hf_skinny_transmitPreference,
{
"transmitPreference", "skinny.transmitPreference", FT_UINT32, BASE_DEC, NULL, 0x0,
@ -9402,7 +9398,7 @@ proto_register_skinny(void)
{&hf_skinny_directoryNum,
{
"directoryNum", "skinny.directoryNum", FT_STRING, BASE_NONE, NULL, 0x0,
"Directory Number", HFILL }},
NULL, HFILL }},
{&hf_skinny_ecValue,
{
"ecValue", "skinny.ecValue", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &Media_EchoCancellation_ext, 0x0,
@ -9507,6 +9503,14 @@ proto_register_skinny(void)
{
"mediaPathID", "skinny.mediaPathID", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &MediaPathID_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_mediaReceptionStatus,
{
"mediaReceptionStatus", "skinny.mediaReceptionStatus", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &MediaStatus_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_mediaTransmissionStatus,
{
"mediaTransmissionStatus", "skinny.mediaTransmissionStatus", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &MediaStatus_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_mediaTransportType,
{
"mediaTransportType", "skinny.mediaTransportType", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &MediaTransportType_ext, 0x0,
@ -9523,9 +9527,17 @@ proto_register_skinny(void)
{
"modify_conf_result", "skinny.modify.conf.result", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &ModifyConfResult_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_multimediaOpenReceiveChannelStatus,
{&hf_skinny_multicastReceptionStatus,
{
"multimediaOpenReceiveChannelStatus", "skinny.multimediaOpenReceiveChannelStatus", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &OpenReceiveChanStatus_ext, 0x0,
"multicastReceptionStatus", "skinny.multicastReceptionStatus", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &MulticastMediaReceptionStatus_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_multimediaReceptionStatus,
{
"multimediaReceptionStatus", "skinny.multimediaReceptionStatus", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &OpenReceiveChanStatus_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_multimediaTransmissionStatus,
{
"multimediaTransmissionStatus", "skinny.multimediaTransmissionStatus", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &MediaStatus_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_mwiControlNumber,
{
@ -9543,10 +9555,6 @@ proto_register_skinny(void)
{
"notify", "skinny.notify", FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{&hf_skinny_openReceiveChannelStatus,
{
"openReceiveChannelStatus", "skinny.openReceiveChannelStatus", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &MediaStatus_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_originalCalledParty,
{
"originalCalledParty", "skinny.originalCalledParty", FT_STRING, BASE_NONE, NULL, 0x0,
@ -9587,10 +9595,6 @@ proto_register_skinny(void)
{
"promptStatus", "skinny.promptStatus", FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{&hf_skinny_receptionStatus,
{
"receptionStatus", "skinny.receptionStatus", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &MulticastMediaReceptionStatus_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_recording_status,
{
"recording_status", "skinny.recording.status", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &RecordingStatus_ext, 0x0,
@ -9611,10 +9615,6 @@ proto_register_skinny(void)
{
"result", "skinny.result", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &CreateConfResult_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_resultCode,
{
"resultCode", "skinny.resultCode", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &MediaStatus_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_resvStyle,
{
"resvStyle", "skinny.resvStyle", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &ResvStyle_ext, 0x0,
@ -9687,10 +9687,6 @@ proto_register_skinny(void)
{
"ssValue", "skinny.ssValue", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &Media_SilenceSuppression_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_startMediaTransmissionStatus,
{
"startMediaTransmissionStatus", "skinny.startMediaTransmissionStatus", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &MediaStatus_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_statsProcessingMode,
{
"Stats Processing Mode", "skinny.statsProcessingMode", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &StatsProcessingType_ext, 0x0,
@ -9783,11 +9779,11 @@ proto_register_skinny(void)
skinny_module = prefs_register_protocol(proto_skinny, NULL);
prefs_register_bool_preference(skinny_module, "desegment",
"Reassemble SCCP messages spanning multiple TCP segments",
"Whether the SCCP dissector should reassemble messages spanning multiple TCP segments."
"Reassemble SKINNY messages spanning multiple TCP segments",
"Whether the SKINNY dissector should reassemble messages spanning multiple TCP segments."
" To use this option, you must also enable"
" \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
&skinny_desegment);
&global_skinny_desegment);
skinny_handle = register_dissector("skinny", dissect_skinny, proto_skinny);
@ -9798,7 +9794,7 @@ void
proto_reg_handoff_skinny(void)
{
/* Skinny content type and internet media type used by other dissectors are the same */
xml_handle = find_dissector("xml");
xml_handle = find_dissector_add_dependency("xml", proto_skinny);
dissector_add_uint_with_preference("tcp.port", TCP_PORT_SKINNY, skinny_handle);
ssl_dissector_add(SSL_PORT_SKINNY, skinny_handle);
}

View File

@ -37,8 +37,8 @@
# Using Cog.py Inplace Code Generator
#
# Dependencies:
# - python
# - cog.py: http://nedbatchelder.com/code/cog/
# - python2.x
# - cog.py: (pip install cogapp / http://nedbatchelder.com/code/cog/)
# - python.xml
# - python.xml.sax
#
@ -59,6 +59,7 @@ cog.out(' */\n')
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/reassemble.h>
#include <epan/tap.h>
#include <epan/ptvcursor.h>
@ -70,7 +71,6 @@ cog.out(' */\n')
void proto_register_skinny(void);
void proto_reg_handoff_skinny(void);
#define TCP_PORT_SKINNY 2000 /* Not IANA registered */
#define SSL_PORT_SKINNY 2443 /* IANA assigned to PowerClient Central Storage Facility */
@ -123,7 +123,6 @@ cog.out('static value_string_ext message_id_ext = VALUE_STRING_EXT_INIT(message_
]]]*/
/*[[[end]]]*/
/* Declare Enums and Defines */
/* [[[cog
for enum in skinny.enum:
@ -169,8 +168,8 @@ static dissector_handle_t xml_handle;
static gint ett_skinny = -1;
static gint ett_skinny_tree = -1;
/* desegmentation of SCCP */
static gboolean skinny_desegment = TRUE;
/* preference globals */
static gboolean global_skinny_desegment = TRUE;
/* tap register id */
static int skinny_tap = -1;
@ -183,13 +182,13 @@ static skinny_info_t *si;
dissector_handle_t skinny_handle;
/* Get the length of a single SCCP PDU */
/* Get the length of a single SKINNY PDU */
static guint
get_skinny_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data _U_)
{
guint32 hdr_data_length;
/* Get the length of the SCCP packet. */
/* Get the length of the SKINNY packet. */
hdr_data_length = tvb_get_letohl(tvb, offset);
/* That length doesn't include the length of the header itself. */
@ -225,14 +224,12 @@ dissect_skinny_xml(ptvcursor_t *cursor, int hfindex, packet_info *pinfo, guint32
}
static void
dissect_skinny_ipv4or6(ptvcursor_t *cursor, int hfindex_ipv4, int hfindex_ipv6, packet_info *pinfo)
dissect_skinny_ipv4or6(ptvcursor_t *cursor, int hfindex_ipv4, int hfindex_ipv6)
{
address src_addr;
guint32 ipversion = 0;
guint32 offset = ptvcursor_current_offset(cursor);
tvbuff_t *tvb = ptvcursor_tvbuff(cursor);
guint32 hdr_version = tvb_get_letohl(tvb, 4);
gboolean is_video = FALSE;
/* ProtocolVersion > 18 include and extra field to declare IPv4 (0) / IPv6 (1) */
if (hdr_version >= V17_MSG_TYPE) {
@ -240,24 +237,12 @@ dissect_skinny_ipv4or6(ptvcursor_t *cursor, int hfindex_ipv4, int hfindex_ipv6,
ptvcursor_add(cursor, hf_skinny_ipv4or6, 4, ENC_LITTLE_ENDIAN);
}
if (ipversion == IPADDRTYPE_IPV4) {
guint32 ip_address;
src_addr.type = AT_IPv4;
src_addr.len = 4;
src_addr.data = (guint8 *)&ip_address;
ip_address = tvb_get_ipv4(tvb, offset);
rtp_add_address(pinfo, &src_addr, tvb_get_letohl(tvb, offset), 0, "Skinny", pinfo->num, is_video, NULL);
ptvcursor_add(cursor, hfindex_ipv4, 4, ENC_BIG_ENDIAN);
if (hdr_version >= V17_MSG_TYPE) {
/* skip over the extra room for ipv6 addresses */
ptvcursor_advance(cursor, 12);
}
} else if (ipversion == IPADDRTYPE_IPV6 || ipversion == IPADDRTYPE_IPV4_V6) {
struct e_in6_addr IPv6;
src_addr.type = AT_IPv6;
src_addr.len = 16;
src_addr.data = (guint8 *)&IPv6;
tvb_get_ipv6(tvb, offset, &IPv6);
rtp_add_address(pinfo, &src_addr, tvb_get_letohl(tvb, offset), 0, "Skinny", pinfo->num, is_video, NULL);
ptvcursor_add(cursor, hfindex_ipv6, 16, ENC_NA);
} else {
/* Invalid : skip over ipv6 space completely */
@ -340,7 +325,7 @@ cog.out('};\n')
]]]*/
/*[[[end]]]*/
/* Dissect a single SCCP PDU */
/* Dissect a single SKINNY PDU */
static int dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
guint offset = 0;
@ -358,11 +343,6 @@ static int dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
proto_item *ti = NULL;
/* Initialization */
/*
hdr_data_length = tvb_get_letohl(tvb, offset);
hdr_version = tvb_get_letohl(tvb, offset+4);
data_messageid = tvb_get_letohl(tvb, offset+8);
*/
hdr_data_length = tvb_get_letohl(tvb, 0);
hdr_version = tvb_get_letohl(tvb, 4);
data_messageid = tvb_get_letohl(tvb, 8);
@ -401,15 +381,10 @@ static int dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
col_add_fstr(pinfo->cinfo, COL_INFO,"%s ", si->messageName);
col_set_fence(pinfo->cinfo, COL_INFO);
/*offset += 8;*/
/*cursor = ptvcursor_new(skinny_tree, tvb, offset);*/
proto_tree_add_uint(skinny_tree, hf_skinny_messageId, tvb,offset+8, 4, data_messageid );
/*ptvcursor_add(cursor, hf_skinny_messageId, 4, data_messageid);*/
offset += 12;
cursor = ptvcursor_new(skinny_tree, tvb, offset);
cursor = ptvcursor_new(skinny_tree, tvb, offset);
for (i = 0; i < sizeof(skinny_opcode2handler)/sizeof(struct opcode2handler) ; i++) {
if (skinny_opcode2handler[i].opcode == data_messageid && skinny_opcode2handler[i].handler) {
skinny_opcode2handler[i].handler(cursor, pinfo);
@ -418,6 +393,7 @@ static int dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
ptvcursor_free(cursor);
tap_queue_packet(skinny_tap, pinfo, si);
return tvb_captured_length(tvb);
}
@ -468,7 +444,7 @@ dissect_skinny(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
col_set_str(pinfo->cinfo, COL_INFO, "Skinny Client Control Protocol");
tcp_dissect_pdus(tvb, pinfo, tree, skinny_desegment, 4, get_skinny_pdu_len, dissect_skinny_pdu, data);
tcp_dissect_pdus(tvb, pinfo, tree, global_skinny_desegment, 4, get_skinny_pdu_len, dissect_skinny_pdu, data);
return tvb_captured_length(tvb);
}
@ -524,11 +500,11 @@ proto_register_skinny(void)
skinny_module = prefs_register_protocol(proto_skinny, NULL);
prefs_register_bool_preference(skinny_module, "desegment",
"Reassemble SCCP messages spanning multiple TCP segments",
"Whether the SCCP dissector should reassemble messages spanning multiple TCP segments."
"Reassemble SKINNY messages spanning multiple TCP segments",
"Whether the SKINNY dissector should reassemble messages spanning multiple TCP segments."
" To use this option, you must also enable"
" \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
&skinny_desegment);
&global_skinny_desegment);
skinny_handle = register_dissector("skinny", dissect_skinny, proto_skinny);
@ -539,7 +515,7 @@ void
proto_reg_handoff_skinny(void)
{
/* Skinny content type and internet media type used by other dissectors are the same */
xml_handle = find_dissector("xml");
xml_handle = find_dissector_add_dependency("xml", proto_skinny);
dissector_add_uint_with_preference("tcp.port", TCP_PORT_SKINNY, skinny_handle);
ssl_dissector_add(SSL_PORT_SKINNY, skinny_handle);
}

View File

@ -40,17 +40,29 @@
/* Container for tapping relevant data */
typedef struct _skinny_info_t
{
guint32 messId;
guint32 maxProtocolVersion;
guint32 lineId;
guint32 callId;
guint32 passThruId;
const gchar *messageName;
guint32 callState;
gchar *callingParty;
gchar *calledParty;
gboolean hasCallInfo;
guint openreceiveStatus;
guint startmediatransmisionStatus;
guint32 messId;
guint32 maxProtocolVersion;
guint32 lineId;
guint32 callId;
guint32 passThruId;
const gchar * messageName;
guint32 callState;
gchar * callingParty;
gchar * calledParty;
gboolean hasCallInfo;
guint32 openreceiveStatus;
guint32 startmediatransmisionStatus;
} skinny_info_t;
/*
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 2
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* vi: set shiftwidth=2 tabstop=8 expandtab:
* :indentSize=2:tabSize=8:noTabs=true:
*/

View File

@ -37,8 +37,8 @@
# Using Cog.py Inplace Code Generator
#
# Dependencies:
# - python
# - cog.py: http://nedbatchelder.com/code/cog/
# - python2.x
# - cog.py: (pip install cogapp / http://nedbatchelder.com/code/cog/)
# - python.xml
# - python.xml.sax
#
@ -52,17 +52,29 @@ cog.out(' */\n')
/* Container for tapping relevant data */
typedef struct _skinny_info_t
{
guint32 messId;
guint32 maxProtocolVersion;
guint32 lineId;
guint32 callId;
guint32 passThruId;
const gchar *messageName;
guint32 callState;
gchar *callingParty;
gchar *calledParty;
gboolean hasCallInfo;
guint openreceiveStatus;
guint startmediatransmisionStatus;
guint32 messId;
guint32 maxProtocolVersion;
guint32 lineId;
guint32 callId;
guint32 passThruId;
const gchar * messageName;
guint32 callState;
gchar * callingParty;
gchar * calledParty;
gboolean hasCallInfo;
guint32 openreceiveStatus;
guint32 startmediatransmisionStatus;
} skinny_info_t;
/*
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 2
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* vi: set shiftwidth=2 tabstop=8 expandtab:
* :indentSize=2:tabSize=8:noTabs=true:
*/

View File

@ -282,10 +282,7 @@
<entry comment="" name="DeviceType_Station12SP" text="Station12SP" value="0x00003"/>
<entry comment="" name="DeviceType_Station12" text="Station12" value="0x00004"/>
<entry comment="" name="DeviceType_Station30VIP" text="Station30VIP" value="0x00005"/>
<entry comment="" name="DeviceType_StationTelecaster" text="StationTelecaster" value="0x00006"/>
<entry comment="" name="DeviceType_StationTelecasterMgr" text="StationTelecasterMgr" value="0x00007"/>
<entry comment="" name="DeviceType_StationTelecasterBus" text="StationTelecasterBus" value="0x00008"/>
<entry comment="" name="DeviceType_StationPolycom" text="StationPolycom" value="0x00009"/>
<entry comment="" name="DeviceType_StationVGC" text="StationVGC" value="0x0000a"/>
<entry comment="" name="DeviceType_VGCVirtualPhone" text="VGCVirtualPhone" value="0x0000b"/>
<entry comment="" name="DeviceType_StationATA186" text="StationATA186" value="0x0000c"/>
@ -295,7 +292,7 @@
<entry comment="" name="DeviceType_StationPhoneApplication" text="StationPhoneApplication" value="0x00015"/>
<entry comment="" name="DeviceType_AnalogAccess" text="AnalogAccess" value="0x0001e"/>
<entry comment="" name="DeviceType_DigitalAccessTitan1" text="DigitalAccessTitan1" value="0x00028"/>
<entry comment="Digital Access T1" name="DeviceType_Digital Access T1" text="Digital Access T1" value="0x00029"/>
<entry comment="Digital Access T1" name="DeviceType_DigitalAccessT1" text="Digital Access T1" value="0x00029"/>
<entry comment="" name="DeviceType_DigitalAccessTitan2" text="DigitalAccessTitan2" value="0x0002a"/>
<entry comment="" name="DeviceType_DigitalAccessLennon" text="DigitalAccessLennon" value="0x0002b"/>
<entry comment="" name="DeviceType_AnalogAccessElvis" text="AnalogAccessElvis" value="0x0002f"/>
@ -326,8 +323,8 @@
<entry comment="" name="DeviceType_MediaTerminationPointYoko" text="MediaTerminationPointYoko" value="0x0006f"/>
<entry comment="" name="DeviceType_MediaTerminationPointDixieLand" text="MediaTerminationPointDixieLand" value="0x00070"/>
<entry comment="" name="DeviceType_MediaTerminationPointSummit" text="MediaTerminationPointSummit" value="0x00071"/>
<entry comment="" name="DeviceType_7941G" text="7941G" value="0x00073"/>
<entry comment="" name="DeviceType_7971" text="7971" value="0x00077"/>
<entry comment="" name="DeviceType_Cisco_7941G" text="7941G" value="0x00073"/>
<entry comment="" name="DeviceType_Cisco_7971" text="7971" value="0x00077"/>
<entry comment="" name="DeviceType_MGCPStation" text="MGCPStation" value="0x00078"/>
<entry comment="" name="DeviceType_MGCPTrunk" text="MGCPTrunk" value="0x00079"/>
<entry comment="" name="DeviceType_RASProxy" text="RASProxy" value="0x0007a"/>
@ -343,25 +340,22 @@
<entry comment="" name="DeviceType_GenericDevice" text="GenericDevice" value="0x000fd"/>
<entry comment="" name="DeviceType_UnknownMGCPGateway" text="UnknownMGCPGateway" value="0x000fe"/>
<entry comment="" name="DeviceType_NotDefined" text="NotDefined" value="0x000ff"/>
<entry comment="" name="DeviceType_7989" text="7989" value="0x0012e"/>
<entry comment="" name="DeviceType_7911" text="7911" value="0x00133"/>
<entry comment="" name="DeviceType_7941G_GE" text="7941G_GE" value="0x00134"/>
<entry comment="" name="DeviceType_Cisco_7911" text="7911" value="0x00133"/>
<entry comment="" name="DeviceType_MotorolaCN622" text="MotorolaCN622" value="0x0014f"/>
<entry comment="" name="DeviceType_3rdPartySipBasic" text="3rdPartySipBasic" value="0x00150"/>
<entry comment="" name="DeviceType_StationGoPed" text="StationGoPed" value="0x0015c"/>
<entry comment="" name="DeviceType_ThirdPartySipBasic" text="3rdPartySipBasic" value="0x00150"/>
<entry comment="" name="DeviceType_UnifiedCommunicator" text="UnifiedCommunicator" value="0x00166"/>
<entry comment="" name="DeviceType_7921" text="7921" value="0x0016d"/>
<entry comment="" name="DeviceType_7906" text="7906" value="0x00171"/>
<entry comment="" name="DeviceType_3rdPartySipAdv" text="3rdPartySipAdv" value="0x00176"/>
<entry comment="" name="DeviceType_Cisco_7921" text="7921" value="0x0016d"/>
<entry comment="" name="DeviceType_Cisco_7906" text="7906" value="0x00171"/>
<entry comment="" name="DeviceType_ThirdPartySipAdv" text="3rdPartySipAdv" value="0x00176"/>
<entry comment="" name="DeviceType_Telepresence" text="Telepresence" value="0x00177"/>
<entry comment="" name="DeviceType_7962" text="7962" value="0x00194"/>
<entry comment="" name="DeviceType_3951" text="3951" value="0x0019c"/>
<entry comment="" name="DeviceType_7937" text="7937" value="0x001af"/>
<entry comment="" name="DeviceType_7942" text="7942" value="0x001b2"/>
<entry comment="" name="DeviceType_7945" text="7945" value="0x001b3"/>
<entry comment="" name="DeviceType_7965" text="7965" value="0x001b4"/>
<entry comment="" name="DeviceType_7975" text="7975" value="0x001b5"/>
<entry comment="" name="DeviceType_9971_CE" text="9971_CE" value="0x001ed"/>
<entry comment="" name="DeviceType_Cisco_7962" text="7962" value="0x00194"/>
<entry comment="" name="DeviceType_Cisco_3951" text="3951" value="0x0019c"/>
<entry comment="" name="DeviceType_Cisco_7937" text="7937" value="0x001af"/>
<entry comment="" name="DeviceType_Cisco_7942" text="7942" value="0x001b2"/>
<entry comment="" name="DeviceType_Cisco_7945" text="7945" value="0x001b3"/>
<entry comment="" name="DeviceType_Cisco_7965" text="7965" value="0x001b4"/>
<entry comment="" name="DeviceType_Cisco_7975" text="7975" value="0x001b5"/>
<entry comment="" name="DeviceType_Cisco_9971_CE" text="9971_CE" value="0x001ed"/>
<entry comment="" name="DeviceType_UnifiedMobileCommunicator" text="UnifiedMobileCommunicator" value="0x001d4"/>
<entry comment="" name="DeviceType_CSF" text="CSF" value="0x001f7"/>
<entry comment="" name="DeviceType_CiscoTelepresenceMcu" text="CiscoTelepresenceMcu" value="0x00255"/>
@ -370,14 +364,13 @@
<entry comment="" name="DeviceType_CiscoTelePresenceSoftwareConferenceBridge" text="CiscoTelePresenceSoftwareConferenceBridge" value="0x00258"/>
<entry comment="" name="DeviceType_ASSip" text="ASSip" value="0x00277"/>
<entry comment="" name="DeviceType_CtiRemoteDevice" text="CtiRemoteDevice" value="0x0027b"/>
<entry comment="" name="DeviceType_7905" text="7905" value="0x04e20"/>
<entry comment="" name="DeviceType_7920" text="7920" value="0x07532"/>
<entry comment="" name="DeviceType_7970" text="7970" value="0x07536"/>
<entry comment="" name="DeviceType_7912" text="7912" value="0x07537"/>
<entry comment="" name="DeviceType_7902" text="7902" value="0x07538"/>
<entry comment="" name="DeviceType_SoftPhone" text="SoftPhone" value="0x07540"/>
<entry comment="" name="DeviceType_7961G" text="7961G" value="0x07542"/>
<entry comment="" name="DeviceType_7936" text="7936" value="0x07543"/>
<entry comment="" name="DeviceType_Cisco_7905" text="7905" value="0x04e20"/>
<entry comment="" name="DeviceType_Cisco_7920" text="7920" value="0x07532"/>
<entry comment="" name="DeviceType_Cisco_7970" text="7970" value="0x07536"/>
<entry comment="" name="DeviceType_Cisco_7912" text="7912" value="0x07537"/>
<entry comment="" name="DeviceType_Cisco_7902" text="7902" value="0x07538"/>
<entry comment="" name="DeviceType_Cisco_7961G" text="7961G" value="0x07542"/>
<entry comment="" name="DeviceType_Cisco_7936" text="7936" value="0x07543"/>
<entry comment="" name="DeviceType_AnalogPhone" text="AnalogPhone" value="0x0754b"/>
<entry comment="" name="DeviceType_ISDNBRIPhone" text="ISDNBRIPhone" value="0x0754c"/>
<entry comment="" name="DeviceType_SCCPGwVirtualPhone" text="SCCPGwVirtualPhone" value="0x07550"/>
@ -389,7 +382,7 @@
<entry comment="Cisco 7935" name="DeviceType_Cisco_7935" text="Cisco 7935" value="0x00009"/>
<entry comment="Cisco 7940" name="DeviceType_Cisco_7940" text="Cisco 7940" value="0x00008"/>
<entry comment="Cisco 7961 GE" name="DeviceType_Cisco_7961_GE" text="Cisco 7961 GE" value="0x00134"/>
<entry comment="" name="DeviceType_7961G_GE" text="7961G_GE" value="0x00135"/>
<entry comment="" name="DeviceType_Cisco_7961G_GE" text="7961G_GE" value="0x00135"/>
<entry comment="Cisco 7985" name="DeviceType_Cisco_7985" text="Cisco 7985" value="0x0012e"/>
<entry comment="Nokia E Series" name="DeviceType_Nokia_E_Series" text="Nokia E Series" value="0x00113"/>
<entry comment="Cisco IP Communicator" name="DeviceType_Cisco_IP_Communicator" text="Cisco IP Communicator" value="0x07540"/>
@ -411,9 +404,9 @@
<entry comment="Cisco SPA 525G2 (5 lines / color / wifi / bluetooth)" name="DeviceType_Cisco_SPA_525G2" text="Cisco SPA 525G2" value="0x13889"/>
<entry comment="Cisco 7914 AddOn" name="DeviceType_Cisco_7914_AddOn" text="Cisco 7914 AddOn" value="0x0007c"/>
<entry comment="Cisco 7915 AddOn (12 Buttons)" name="DeviceType_Cisco_7915_AddOn" text="Cisco 7915 AddOn" value="0x000e3"/>
<entry comment="Cisco 7915 AddOn (24 Buttons)" name="DeviceType_Cisco_7915_AddOn" text="Cisco 7915 AddOn" value="0x000e4"/>
<entry comment="Cisco 7915 AddOn (24 Buttons)" name="DeviceType_Cisco_7915_AddOn_24" text="Cisco 7915 AddOn 24" value="0x000e4"/>
<entry comment="Cisco 7916 AddOn (12 Buttons)" name="DeviceType_Cisco_7916_AddOn" text="Cisco 7916 AddOn" value="0x000e5"/>
<entry comment="Cisco 7916 AddOn (24 Buttons)" name="DeviceType_Cisco_7916_AddOn" text="Cisco 7916 AddOn" value="0x000e6"/>
<entry comment="Cisco 7916 AddOn (24 Buttons)" name="DeviceType_Cisco_7916_AddOn_24" text="Cisco 7916 AddOn 24" value="0x000e6"/>
</entries>
</enum>
<bitfield name="PhoneFeatures">
@ -579,7 +572,7 @@
<entry comment="" name="DeviceStimulus_EndCall" text="EndCall" value="0x008a"/>
<entry comment="" name="DeviceStimulus_HLog" text="HLog" value="0x008b"/>
<entry comment="" name="DeviceStimulus_Queuing" text="Queuing" value="0x008f"/>
<entry boundscheck="max" comment="" name="DeviceStimulus_MaxStimulusValue" text="MaxStimulusValue" value="0x008f"/>
<entry boundscheck="max" comment="" name="DeviceStimulus_MaxStimulusValue" text="MaxStimulusValue" value="0x00ff"/>
</entries>
</enum>
<message comment="" direction="dev2pbx" dynamic="no" name="StimulusMessage" opcode="0x0005" status="no" type="CallControl">
@ -781,7 +774,7 @@
</enum>
<message comment="" direction="dev2pbx" dynamic="no" name="MulticastMediaReceptionAckMessage" opcode="0x0021" status="no" type="MediaControl">
<fields beginversion="0" endversion="22">
<enum comment="" name="receptionStatus" subtype="MulticastMediaReceptionStatus" type="uint32"/>
<enum comment="" name="multicastReceptionStatus" subtype="MulticastMediaReceptionStatus" type="uint32"/>
<integer comment="PassThrough PartyId" name="passThruPartyID" type="uint32"/>
<integer comment="CallId" name="callReference" type="uint32"/>
</fields>
@ -813,9 +806,9 @@
</enum>
<message comment="" direction="dev2pbx" dynamic="no" name="OpenReceiveChannelAckMessage" opcode="0x0022" status="no" type="MediaControl">
<fields>
<enum comment="" name="openReceiveChannelStatus" subtype="MediaStatus" type="uint32"/>
<enum comment="" name="mediaReceptionStatus" subtype="MediaStatus" type="uint32"/>
<ipv4or6 comment="" name="ipAddr" subtype="IPV4orV6Address" type="ipaddr"/>
<integer comment="" name="portNumber" subtype="uint32" type="ipport" use_param="ipAddr"/>
<integer comment="" declare="yes" name="portNumber" subtype="uint32" type="ipport" use_param="ipAddr"/>
<integer comment="PassThrough PartyId" name="passThruPartyID" type="uint32"/>
</fields>
<fields beginversion="0" endversion="22" size_gt="20">
@ -829,10 +822,22 @@
</entries>
</enum>
<message comment="" direction="dev2pbx" dynamic="no" name="ConnectionStatisticsResMessage" opcode="0x0023" status="no" type="CallControl">
<fields>
<string comment="Directory Number" declare="yes" name="directoryNum" size="VariableDirnumSize" type="char"/>
<fields endversion="16" fixed="yes">
<string comment="" name="directoryNum" size="24" type="char"/>
<integer comment="CallId" name="callReference" type="uint32"/>
<enum comment="Stats Processing Mode" longcomment="What do do after you send the stats" name="statsProcessingMode" subtype="StatsProcessingType" type="uint32"/>
</fields>
<fields beginversion="17" endversion="20" fixed="yes">
<string comment="" name="directoryNum" size="28" type="char"/>
<integer comment="CallId" name="callReference" type="uint32"/>
<enum comment="Stats Processing Mode" longcomment="What do do after you send the stats" name="statsProcessingMode" subtype="StatsProcessingType" type="uint32"/>
</fields>
<fields beginversion="21" endversion="22" fixed="yes">
<string comment="" name="directoryNum" size="28" type="char"/>
<integer comment="CallId" name="callReference" type="uint32"/>
<integer comment="Stats Processing Mode" longcomment="What do do after you send the stats" name="statsProcessingMode" subtype="StatsProcessingType" type="uint8"/>
</fields>
<fields>
<integer comment="Number of Packets Sent" name="numberPacketsSent" type="uint32"/>
<integer comment="Number of Octets Sent" name="numberOctetsSent" type="uint32"/>
<integer comment="Number of Packets Received" name="numberPacketsReceived" type="uint32"/>
@ -841,7 +846,7 @@
<integer comment="Amount of Jitter" name="jitter" type="uint32"/>
<integer comment="Amount of Latency" name="latency" type="uint32"/>
</fields>
<fields beginversion="0" endversion="22" size_gt="64">
<fields size_gt="64">
<integer comment="Data Size" declare="yes" name="dataSize" type="uint32"/>
<string comment="Statistics" longcomment="variable field size (max: 600]" maxsize="600" name="data" size_fieldname="dataSize" type="char"/>
</fields>
@ -861,7 +866,7 @@
<entry name="SoftKeySet_OnHold" text="On Hold" value="2"/>
<entry name="SoftKeySet_Ringin" text="Ring In" value="3"/>
<entry name="SoftKeySet_OffHook" text="Off Hook" value="4"/>
<entry name="SoftKeySet_ConnTrans" text="Connected Transfeable" value="5"/>
<entry name="SoftKeySet_ConnTrans" text="Connected Transferable" value="5"/>
<entry name="SoftKeySet_DigitsFoll" text="Digits Following" value="6"/>
<entry name="SoftKeySet_ConnConf" text="Connected Conference" value="7"/>
<entry name="SoftKeySet_RingOut" text="Ring Out" value="8"/>
@ -890,44 +895,44 @@
<entry name="SoftKeyEvent_MeetMe" text="MeetMe" value="16"/>
<entry name="SoftKeyEvent_PickUp" text="PickUp" value="17"/>
<entry name="SoftKeyEvent_GrpPickup" text="GrpPickup" value="18"/>
<entry name="SoftKeyEvent_Your current options" text="Your current options" value="19"/>
<entry name="SoftKeyEvent_Off Hook" text="Off Hook" value="20"/>
<entry name="SoftKeyEvent_On Hook" text="On Hook" value="21"/>
<entry name="SoftKeyEvent_Ring out" text="Ring out" value="22"/>
<entry name="SoftKeyEvent_YourCurrentOptions" text="Your current options" value="19"/>
<entry name="SoftKeyEvent_OffHook" text="Off Hook" value="20"/>
<entry name="SoftKeyEvent_OnHook" text="On Hook" value="21"/>
<entry name="SoftKeyEvent_RingOut" text="Ring out" value="22"/>
<entry name="SoftKeyEvent_From " text="From " value="23"/>
<entry name="SoftKeyEvent_Connected" text="Connected" value="24"/>
<entry name="SoftKeyEvent_Busy" text="Busy" value="25"/>
<entry name="SoftKeyEvent_Line In Use" text="Line In Use" value="26"/>
<entry name="SoftKeyEvent_Call Waiting" text="Call Waiting" value="27"/>
<entry name="SoftKeyEvent_Call Transfer" text="Call Transfer" value="28"/>
<entry name="SoftKeyEvent_Call Park" text="Call Park" value="29"/>
<entry name="SoftKeyEvent_Call Proceed" text="Call Proceed" value="30"/>
<entry name="SoftKeyEvent_In Use Remote" text="In Use Remote" value="31"/>
<entry name="SoftKeyEvent_Enter number" text="Enter number" value="32"/>
<entry name="SoftKeyEvent_Call park At" text="Call park At" value="33"/>
<entry name="SoftKeyEvent_Primary Only" text="Primary Only" value="34"/>
<entry name="SoftKeyEvent_Temp Fail" text="Temp Fail" value="35"/>
<entry name="SoftKeyEvent_You Have a VoiceMail" text="You Have a VoiceMail" value="36"/>
<entry name="SoftKeyEvent_Forwarded to" text="Forwarded to" value="37"/>
<entry name="SoftKeyEvent_Can Not Complete Conference" text="Can Not Complete Conference" value="38"/>
<entry name="SoftKeyEvent_No Conference Bridge" text="No Conference Bridge" value="39"/>
<entry name="SoftKeyEvent_Can Not Hold Primary Control" text="Can Not Hold Primary Control" value="40"/>
<entry name="SoftKeyEvent_Invalid Conference Participant" text="Invalid Conference Participant" value="41"/>
<entry name="SoftKeyEvent_In Conference Already" text="In Conference Already" value="42"/>
<entry name="SoftKeyEvent_No Participant Info" text="No Participant Info" value="43"/>
<entry name="SoftKeyEvent_Exceed Maximum Parties" text="Exceed Maximum Parties" value="44"/>
<entry name="SoftKeyEvent_Key Is Not Active" text="Key Is Not Active" value="45"/>
<entry name="SoftKeyEvent_Error No License" text="Error No License" value="46"/>
<entry name="SoftKeyEvent_Error DBConfig" text="Error DBConfig" value="47"/>
<entry name="SoftKeyEvent_Error Database" text="Error Database" value="48"/>
<entry name="SoftKeyEvent_Error Pass Limit" text="Error Pass Limit" value="49"/>
<entry name="SoftKeyEvent_Error Unknown" text="Error Unknown" value="50"/>
<entry name="SoftKeyEvent_Error Mismatch" text="Error Mismatch" value="51"/>
<entry name="SoftKeyEvent_LineInUse" text="Line In Use" value="26"/>
<entry name="SoftKeyEvent_CallWaiting" text="Call Waiting" value="27"/>
<entry name="SoftKeyEvent_CallTransfer" text="Call Transfer" value="28"/>
<entry name="SoftKeyEvent_CallPark" text="Call Park" value="29"/>
<entry name="SoftKeyEvent_CallProceed" text="Call Proceed" value="30"/>
<entry name="SoftKeyEvent_InUseRemote" text="In Use Remote" value="31"/>
<entry name="SoftKeyEvent_EnterNumber" text="Enter number" value="32"/>
<entry name="SoftKeyEvent_CallParkAt" text="Call park At" value="33"/>
<entry name="SoftKeyEvent_PrimaryOnly" text="Primary Only" value="34"/>
<entry name="SoftKeyEvent_TempFail" text="Temp Fail" value="35"/>
<entry name="SoftKeyEvent_YouHaveAVoiceMail" text="You Have a VoiceMail" value="36"/>
<entry name="SoftKeyEvent_ForwardedTo" text="Forwarded to" value="37"/>
<entry name="SoftKeyEvent_CanNotCompleteConference" text="Can Not Complete Conference" value="38"/>
<entry name="SoftKeyEvent_NoConferenceBridge" text="No Conference Bridge" value="39"/>
<entry name="SoftKeyEvent_CanNotHoldPrimaryControl" text="Can Not Hold Primary Control" value="40"/>
<entry name="SoftKeyEvent_InvalidConferenceParticipant" text="Invalid Conference Participant" value="41"/>
<entry name="SoftKeyEvent_InConferenceAlready" text="In Conference Already" value="42"/>
<entry name="SoftKeyEvent_NoParticipantInfo" text="No Participant Info" value="43"/>
<entry name="SoftKeyEvent_ExceedMaximumParties" text="Exceed Maximum Parties" value="44"/>
<entry name="SoftKeyEvent_KeyIsNotActive" text="Key Is Not Active" value="45"/>
<entry name="SoftKeyEvent_ErrorNoLicense" text="Error No License" value="46"/>
<entry name="SoftKeyEvent_ErrorDBConfig" text="Error DBConfig" value="47"/>
<entry name="SoftKeyEvent_ErrorDatabase" text="Error Database" value="48"/>
<entry name="SoftKeyEvent_ErrorPassLimit" text="Error Pass Limit" value="49"/>
<entry name="SoftKeyEvent_ErrorUnknown" text="Error Unknown" value="50"/>
<entry name="SoftKeyEvent_ErrorMismatch" text="Error Mismatch" value="51"/>
<entry name="SoftKeyEvent_Conference" text="Conference" value="52"/>
<entry name="SoftKeyEvent_Park Number" text="Park Number" value="53"/>
<entry name="SoftKeyEvent_ParkNumber" text="Park Number" value="53"/>
<entry name="SoftKeyEvent_Private" text="Private" value="54"/>
<entry name="SoftKeyEvent_Not Enough Bandwidth" text="Not Enough Bandwidth" value="55"/>
<entry name="SoftKeyEvent_Unknown Number" text="Unknown Number" value="56"/>
<entry name="SoftKeyEvent_NotEnoughBandwidth" text="Not Enough Bandwidth" value="55"/>
<entry name="SoftKeyEvent_UnknownNumber" text="Unknown Number" value="56"/>
<entry name="SoftKeyEvent_RmLstC" text="RmLstC" value="57"/>
<entry name="SoftKeyEvent_Voicemail" text="Voicemail" value="58"/>
<entry name="SoftKeyEvent_ImmDiv" text="ImmDiv" value="59"/>
@ -937,15 +942,15 @@
<entry name="SoftKeyEvent_DND" text="DND" value="63"/>
<entry name="SoftKeyEvent_DivAll" text="DivAll" value="64"/>
<entry name="SoftKeyEvent_CallBack" text="CallBack" value="65"/>
<entry name="SoftKeyEvent_Network congestion,rerouting" text="Network congestion,rerouting" value="66"/>
<entry name="SoftKeyEvent_NetworkCongestionRerouting" text="Network congestion,rerouting" value="66"/>
<entry name="SoftKeyEvent_Barge" text="Barge" value="67"/>
<entry name="SoftKeyEvent_Failed to setup Barge" text="Failed to setup Barge" value="68"/>
<entry name="SoftKeyEvent_Another Barge exists" text="Another Barge exists" value="69"/>
<entry name="SoftKeyEvent_Incompatible device type" text="Incompatible device type" value="70"/>
<entry name="SoftKeyEvent_No Park Number Available" text="No Park Number Available" value="71"/>
<entry name="SoftKeyEvent_CallPark Reversion" text="CallPark Reversion" value="72"/>
<entry name="SoftKeyEvent_Service is not Active" text="Service is not Active" value="73"/>
<entry name="SoftKeyEvent_High Traffic Try Again Later" text="High Traffic Try Again Later" value="74"/>
<entry name="SoftKeyEvent_FailedToSetupBarge" text="Failed to setup Barge" value="68"/>
<entry name="SoftKeyEvent_AnotherBargeExists" text="Another Barge exists" value="69"/>
<entry name="SoftKeyEvent_IncompatibleDeviceType" text="Incompatible device type" value="70"/>
<entry name="SoftKeyEvent_NoParkNumberAvailable" text="No Park Number Available" value="71"/>
<entry name="SoftKeyEvent_CallParkReversion" text="CallPark Reversion" value="72"/>
<entry name="SoftKeyEvent_ServiceIsNotActive" text="Service is not Active" value="73"/>
<entry name="SoftKeyEvent_HighTrafficTryAgainLater" text="High Traffic Try Again Later" value="74"/>
<entry name="SoftKeyEvent_QRT" text="QRT" value="75"/>
<entry name="SoftKeyEvent_MCID" text="MCID" value="76"/>
<entry name="SoftKeyEvent_DirTrfr" text="DirTrfr" value="77"/>
@ -953,13 +958,13 @@
<entry name="SoftKeyEvent_ConfList" text="ConfList" value="79"/>
<entry name="SoftKeyEvent_iDivert" text="iDivert" value="80"/>
<entry name="SoftKeyEvent_cBarge" text="cBarge" value="81"/>
<entry name="SoftKeyEvent_Can Not Complete Transfer" text="Can Not Complete Transfer" value="82"/>
<entry name="SoftKeyEvent_Can Not Join Calls" text="Can Not Join Calls" value="83"/>
<entry name="SoftKeyEvent_Mcid Successful" text="Mcid Successful" value="84"/>
<entry name="SoftKeyEvent_Number Not Configured" text="Number Not Configured" value="85"/>
<entry name="SoftKeyEvent_Security Error" text="Security Error" value="86"/>
<entry name="SoftKeyEvent_Video Bandwidth Unavailable" text="Video Bandwidth Unavailable" value="87"/>
<entry name="SoftKeyEvent_Video Mode" text="Video Mode" value="88"/>
<entry name="SoftKeyEvent_CanNotCompleteTransfer" text="Can Not Complete Transfer" value="82"/>
<entry name="SoftKeyEvent_CanNotJoinCalls" text="Can Not Join Calls" value="83"/>
<entry name="SoftKeyEvent_McidSuccessful" text="Mcid Successful" value="84"/>
<entry name="SoftKeyEvent_NumberNotConfigured" text="Number Not Configured" value="85"/>
<entry name="SoftKeyEvent_SecurityError" text="Security Error" value="86"/>
<entry name="SoftKeyEvent_VideoBandwidthUnavailable" text="Video Bandwidth Unavailable" value="87"/>
<entry name="SoftKeyEvent_VideoMode" text="Video Mode" value="88"/>
<entry name="SoftKeyEvent_Record" text="Record" value="202"/>
<entry name="SoftKeyEvent_Dial" text="Dial" value="201"/>
</entries>
@ -1252,9 +1257,12 @@
</enum>
<message comment="" direction="dev2pbx" dynamic="no" name="OpenMultiMediaReceiveChannelAckMessage" opcode="0x0031" status="no" type="MediaControl">
<fields>
<enum comment="" name="multimediaOpenReceiveChannelStatus" subtype="OpenReceiveChanStatus" type="uint32"/>
<enum comment="" name="multimediaReceptionStatus" subtype="OpenReceiveChanStatus" type="uint32"/>
<ipv4or6 comment="ipaddress in big endian" endiannes="big" endianness="big" name="ipAddr" subtype="IpAddress" type="ipaddr"/>
<integer comment="" name="portNumber" subtype="uint32" type="ipport" use_param="ipAddr"/>
<integer comment="" declare="yes" name="portNumber" subtype="uint32" type="ipport" use_param="ipAddr"/>
<integer comment="CallId" name="callReference" type="uint32"/>
</fields>
<fields beginversion="16" endversion="22">
<integer comment="PassThrough PartyId" name="passThruPartyID" type="uint32"/>
<integer comment="CallId" name="callReference" type="uint32"/>
</fields>
@ -2048,10 +2056,10 @@
<entry comment="" name="DeviceTone_PRIORITY" text="PRIORITY" value="0x0064"/>
<entry comment="" name="DeviceTone_IMMEDIATE" text="IMMEDIATE" value="0x0065"/>
<entry comment="" name="DeviceTone_PREAMPWARN" text="PREAMPWARN" value="0x0066"/>
<entry comment="" name="DeviceTone_2105HZ" text="2105HZ" value="0x0067"/>
<entry comment="" name="DeviceTone_2600HZ" text="2600HZ" value="0x0068"/>
<entry comment="" name="DeviceTone_440HZ" text="440HZ" value="0x0069"/>
<entry comment="" name="DeviceTone_300HZ" text="300HZ" value="0x006a"/>
<entry comment="" name="DeviceTone_Tone2105HZ" text="2105HZ" value="0x0067"/>
<entry comment="" name="DeviceTone_Tone2600HZ" text="2600HZ" value="0x0068"/>
<entry comment="" name="DeviceTone_Tone440HZ" text="440HZ" value="0x0069"/>
<entry comment="" name="DeviceTone_Tone300HZ" text="300HZ" value="0x006a"/>
<entry comment="" name="DeviceTone_Mobility_WP" text="Mobility_WP" value="0x006b"/>
<entry comment="" name="DeviceTone_Mobility_UAC" text="Mobility_UAC" value="0x006c"/>
<entry comment="" name="DeviceTone_Mobility_WTDN" text="Mobility_WTDN" value="0x006d"/>
@ -2452,39 +2460,39 @@
<enum name="ButtonType">
<entries>
<entry comment="" name="ButtonType_Unused" text="Unused" value="0x00"/>
<entry comment="" name="ButtonType_Last Number Redial" text="Last Number Redial" value="0x01"/>
<entry comment="" name="ButtonType_LastNumberRedial" text="Last Number Redial" value="0x01"/>
<entry comment="" name="ButtonType_SpeedDial" text="SpeedDial" value="0x02"/>
<entry comment="" name="ButtonType_Hold" text="Hold" value="0x03"/>
<entry comment="" name="ButtonType_Transfer" text="Transfer" value="0x04"/>
<entry comment="" name="ButtonType_Forward All" text="Forward All" value="0x05"/>
<entry comment="" name="ButtonType_Forward Busy" text="Forward Busy" value="0x06"/>
<entry comment="" name="ButtonType_Forward No Answer" text="Forward No Answer" value="0x07"/>
<entry comment="" name="ButtonType_ForwardAll" text="Forward All" value="0x05"/>
<entry comment="" name="ButtonType_ForwardBusy" text="Forward Busy" value="0x06"/>
<entry comment="" name="ButtonType_ForwardNoAnswer" text="Forward No Answer" value="0x07"/>
<entry comment="" name="ButtonType_Display" text="Display" value="0x08"/>
<entry comment="" name="ButtonType_Line" text="Line" value="0x09"/>
<entry comment="" name="ButtonType_T120 Chat" text="T120 Chat" value="0x0A"/>
<entry comment="" name="ButtonType_T120 Whiteboard" text="T120 Whiteboard" value="0x0B"/>
<entry comment="" name="ButtonType_T120 Application Sharing" text="T120 Application Sharing" value="0x0C"/>
<entry comment="" name="ButtonType_T120 File Transfer" text="T120 File Transfer" value="0x0D"/>
<entry comment="" name="ButtonType_T120Chat" text="T120 Chat" value="0x0A"/>
<entry comment="" name="ButtonType_T120Whiteboard" text="T120 Whiteboard" value="0x0B"/>
<entry comment="" name="ButtonType_T120ApplicationSharing" text="T120 Application Sharing" value="0x0C"/>
<entry comment="" name="ButtonType_T120FileTransfer" text="T120 File Transfer" value="0x0D"/>
<entry comment="" name="ButtonType_Video" text="Video" value="0x0E"/>
<entry comment="" name="ButtonType_Voicemail" text="Voicemail" value="0x0F"/>
<entry comment="" name="ButtonType_Answer Release" text="Answer Release" value="0x10"/>
<entry comment="" name="ButtonType_Auto Answer" text="Auto Answer" value="0x11"/>
<entry comment="" name="ButtonType_AnswerRelease" text="Answer Release" value="0x10"/>
<entry comment="" name="ButtonType_AutoAnswer" text="Auto Answer" value="0x11"/>
<entry comment="" name="ButtonType_Select" text="Select" value="0x12"/>
<entry comment="" name="ButtonType_Feature" text="Feature" value="0x13"/>
<entry comment="" name="ButtonType_ServiceURL" text="ServiceURL" value="0x14"/>
<entry comment="" name="ButtonType_BusyLampField Speeddial" text="BusyLampField Speeddial" value="0x15"/>
<entry comment="" name="ButtonType_Malicious Call" text="Malicious Call" value="0x1B"/>
<entry comment="" name="ButtonType_Generic App B1" text="Generic App B1" value="0x21"/>
<entry comment="" name="ButtonType_Generic App B2" text="Generic App B2" value="0x22"/>
<entry comment="" name="ButtonType_Generic App B3" text="Generic App B3" value="0x23"/>
<entry comment="" name="ButtonType_Generic App B4" text="Generic App B4" value="0x24"/>
<entry comment="" name="ButtonType_Generic App B5" text="Generic App B5" value="0x25"/>
<entry comment="" name="ButtonType_Monitor/Multiblink" text="Monitor/Multiblink" value="0x26"/>
<entry comment="" name="ButtonType_Meet Me Conference" text="Meet Me Conference" value="0x7B"/>
<entry comment="" name="ButtonType_BusyLampFieldSpeeddial" text="BusyLampField Speeddial" value="0x15"/>
<entry comment="" name="ButtonType_MaliciousCall" text="Malicious Call" value="0x1B"/>
<entry comment="" name="ButtonType_GenericAppB1" text="Generic App B1" value="0x21"/>
<entry comment="" name="ButtonType_GenericAppB2" text="Generic App B2" value="0x22"/>
<entry comment="" name="ButtonType_GenericAppB3" text="Generic App B3" value="0x23"/>
<entry comment="" name="ButtonType_GenericAppB4" text="Generic App B4" value="0x24"/>
<entry comment="" name="ButtonType_GenericAppB5" text="Generic App B5" value="0x25"/>
<entry comment="" name="ButtonType_MonitorMultiblink" text="Monitor/Multiblink" value="0x26"/>
<entry comment="" name="ButtonType_MeetMeConference" text="Meet Me Conference" value="0x7B"/>
<entry comment="" name="ButtonType_Conference" text="Conference" value="0x7D"/>
<entry comment="" name="ButtonType_Call Park" text="Call Park" value="0x7E"/>
<entry comment="" name="ButtonType_Call Pickup" text="Call Pickup" value="0x7F"/>
<entry comment="" name="ButtonType_Group Call Pickup" text="Group Call Pickup" value="0x80"/>
<entry comment="" name="ButtonType_CallPark" text="Call Park" value="0x7E"/>
<entry comment="" name="ButtonType_CallPickup" text="Call Pickup" value="0x7F"/>
<entry comment="" name="ButtonType_GroupCallPickup" text="Group Call Pickup" value="0x80"/>
<entry comment="" name="ButtonType_Mobility" text="Mobility" value="0x81"/>
<entry comment="" name="ButtonType_DoNotDisturb" text="DoNotDisturb" value="0x82"/>
<entry comment="" name="ButtonType_ConfList" text="ConfList" value="0x83"/>
@ -2497,9 +2505,9 @@
<entry comment="" name="ButtonType_EndCall" text="EndCall" value="0x8A"/>
<entry comment="" name="ButtonType_HLog" text="HLog" value="0x8B"/>
<entry comment="" name="ButtonType_Queuing" text="Queuing" value="0x8F"/>
<entry comment="" name="ButtonType_Test E" text="Test E" value="0xC0"/>
<entry comment="" name="ButtonType_Test F" text="Test F" value="0xC1"/>
<entry comment="" name="ButtonType_Test I" text="Test I" value="0xC4"/>
<entry comment="" name="ButtonType_TestE" text="Test E" value="0xC0"/>
<entry comment="" name="ButtonType_TestF" text="Test F" value="0xC1"/>
<entry comment="" name="ButtonType_TestI" text="Test I" value="0xC4"/>
<entry comment="" name="ButtonType_Messages" text="Messages" value="0xC2"/>
<entry comment="" name="ButtonType_Directory" text="Directory" value="0xC3"/>
<entry comment="" name="ButtonType_Application" text="Application" value="0xC5"/>
@ -2778,8 +2786,13 @@
</fields>
</message>
<message comment="" direction="pbx2dev" dynamic="no" name="ConnectionStatisticsReqMessage" opcode="0x0107" status="no" type="CallControl">
<fields endversion="16" fixed="yes">
<string comment="" name="directoryNum" size="24" type="char"/>
</fields>
<fields beginversion="17" endversion="22" fixed="yes">
<string comment="" name="directoryNum" size="28" type="char"/>
</fields>
<fields>
<string comment="Directory Number" declare="yes" name="directoryNum" size="VariableDirnumSize" type="char"/>
<integer comment="CallId" name="callReference" type="uint32"/>
<enum comment="" name="statsProcessingMode" subtype="StatsProcessingType" type="uint32"/>
</fields>
@ -3067,7 +3080,12 @@
</fields>
</message>
<message comment="" direction="pbx2dev" dynamic="no" name="DialedNumberMessage" opcode="0x011d" status="no" type="CallControl">
<fields>
<fields endversion="17" fixed="yes">
<string comment="" name="dialedNumber" size="24" type="char"/>
<integer comment="LineId" name="lineInstance" type="uint32"/>
<integer comment="CallId" name="callReference" type="uint32"/>
</fields>
<fields beginversion="18" endversion="22" fixed="yes">
<string comment="" declare="yes" name="dialedNumber" size="VariableDirnumSize" type="char"/>
<integer comment="LineId" name="lineInstance" type="uint32"/>
<integer comment="CallId" name="callReference" type="uint32"/>
@ -4036,8 +4054,8 @@
<integer comment="PassThrough PartyId" name="passThruPartyID" type="uint32"/>
<integer comment="CallId" name="callReference" type="uint32"/>
<ipv4or6 comment="ipaddress in big endian" endiannes="big" endianness="big" name="transmitIpAddr" subtype="IpAddress" type="ipaddr"/>
<integer comment="" name="transmitPort" type="uint32"/>
<enum comment="" name="startMediaTransmissionStatus" subtype="MediaStatus" type="uint32"/>
<integer comment="transmit Port" declare="yes" name="portNumber" subtype="uint32" type="ipport"/>
<enum comment="" name="mediaTransmissionStatus" subtype="MediaStatus" type="uint32"/>
</fields>
</message>
<message comment="" direction="pbx2dev" dynamic="no" name="StartMultiMediaTransmissionAckMessage" opcode="0x0155" status="no" type="MediaControl">
@ -4046,13 +4064,13 @@
<integer comment="PassThrough PartyId" name="passThruPartyID" type="uint32"/>
<integer comment="CallId" name="callReference" type="uint32"/>
<ipv4or6 comment="ipaddress in big endian" endiannes="big" endianness="big" name="transmitIpAddr" subtype="IpAddress" type="ipaddr"/>
<integer comment="" name="transmitPort" type="uint32"/>
<enum comment="" name="resultCode" subtype="MediaStatus" type="uint32"/>
<integer comment="transmit Port" declare="yes" name="portNumber" subtype="uint32" type="ipport"/>
<enum comment="" name="multimediaTransmissionStatus" subtype="MediaStatus" type="uint32"/>
</fields>
</message>
<enum name="CallHistoryDisposition">
<entries>
<entry comment="" name="CallHistoryDisposition_UnknownDisp" text="UnknownDisp" value="0xffffffff"/>
<entry comment="" name="CallHistoryDisposition_UnknownDisp" text="UnknownDisp" value="0xffff"/>
<entry comment="" name="CallHistoryDisposition_Ignore" text="Ignore" value="0x0000"/>
<entry comment="" name="CallHistoryDisposition_PlacedCalls" text="PlacedCalls" value="0x0001"/>
<entry comment="" name="CallHistoryDisposition_ReceivedCalls" text="ReceivedCalls" value="0x0002"/>

View File

@ -158,6 +158,7 @@ def xml2obj(src):
def dissect(self):
ret = ''
declarations = 0
fixed = 0
if (self.fields is not None):
ret += self.indent_out("/*\n")
@ -174,17 +175,15 @@ def xml2obj(src):
ret += self.indent_out("{\n")
self.incr_indent()
for fields in self.fields:
if fields.size_lt:
if fields.size_lt or fields.size_gt:
if self.basemessage.declared is None or "hdr_data_length" not in self.basemessage.declared:
ret += self.indent_out("guint32 hdr_data_length = tvb_get_letohl(ptvcursor_tvbuff(cursor), 0);\n")
self.basemessage.declared.append("hdr_data_length")
declarations += 1
if fields.size_gt:
if self.basemessage.declared is None or "hdr_data_length" not in self.basemessage.declared:
ret += self.indent_out("guint32 hdr_data_length = tvb_get_letohl(ptvcursor_tvbuff(cursor), 0);\n")
self.basemessage.declared.append("hdr_data_length")
declarations += 1
if not declarations:
if fields.fixed == "yes":
fixed = 1
if not declarations or fixed == 1:
for fields in self.fields[1:]:
if self.basemessage.declared is None or "hdr_version" not in self.basemessage.declared:
ret += self.indent_out("guint32 hdr_version = tvb_get_letohl(ptvcursor_tvbuff(cursor), 4);\n")
@ -283,9 +282,9 @@ def xml2obj(src):
else:
print "ERROR integer %s with type: %s, could not be found" %(self.name, self.type)
if self.declare == "yes":
if self.declare == "yes" and self.type != "ipport":
if self.basemessage.declared is None or self.name not in self.basemessage.declared:
ret += self.indent_out('g%s %s = 0;\n' %(self.type, self.name))
ret += self.indent_out('guint%s %s = 0;\n' %(self.intsize * 8, self.name))
self.basemessage.declared.append(self.name)
global fieldsArray
@ -320,7 +319,7 @@ def xml2obj(src):
ret += self.indent_out('if (%s < %s) {\n' %(variable,self.size_fieldname))
self.incr_indent()
if self.declare == "yes":
if self.declare == "yes" and self.type != "ipport":
if self.endianness == "big":
if (self.intsize == 4):
ret += self.indent_out('%s = tvb_get_ntohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));\n' %(self.name))
@ -642,7 +641,7 @@ def xml2obj(src):
return ''
def dissect(self):
return self.indent_out('dissect_skinny_ipv4or6(cursor, hf_skinny_%s_ipv4, hf_skinny_%s_ipv6, pinfo);\n' %(self.name, self.name))
return self.indent_out('dissect_skinny_ipv4or6(cursor, hf_skinny_%s_ipv4, hf_skinny_%s_ipv6);\n' %(self.name, self.name))
class XML(DataNode):
def __init__(self):