diff options
author | Gilbert Ramirez <gram@alumni.rice.edu> | 2004-07-18 18:06:47 +0000 |
---|---|---|
committer | Gilbert Ramirez <gram@alumni.rice.edu> | 2004-07-18 18:06:47 +0000 |
commit | 669db206cb1f270046ad400fff7655e20c63e723 (patch) | |
tree | 4eff24a2e16c8963e497e1fc575f35e6af59bd26 /packet-skinny.c | |
parent | ae46c27a38700af669ef907491081f09df6f6b2c (diff) | |
download | wireshark-669db206cb1f270046ad400fff7655e20c63e723.tar.gz wireshark-669db206cb1f270046ad400fff7655e20c63e723.tar.bz2 wireshark-669db206cb1f270046ad400fff7655e20c63e723.zip |
Move dissectors to epan/dissectors directory.
Also move ncp222.py, x11-fields, process-x11-fields.pl,
make-reg-dotc, and make-reg-dotc.py.
Adjust #include lines in files that include packet-*.h
files.
svn path=/trunk/; revision=11410
Diffstat (limited to 'packet-skinny.c')
-rw-r--r-- | packet-skinny.c | 4402 |
1 files changed, 0 insertions, 4402 deletions
diff --git a/packet-skinny.c b/packet-skinny.c deleted file mode 100644 index ff8b025799..0000000000 --- a/packet-skinny.c +++ /dev/null @@ -1,4402 +0,0 @@ -/* packet-skinny.c - * - * Dissector for the Skinny Client Control Protocol - * (The "D-Channel"-Protocol for Cisco Systems' IP-Phones) - * Copyright 2001, Joerg Mayer (email: see AUTHORS file) - * - * Paul E. Erkkila (pee@erkkila.org) - fleshed out the decode - * skeleton to report values for most message/message fields. - * Much help from Guy Harris on figuring out the ethereal api. - * - * This file is based on packet-aim.c, which is - * Copyright 2000, Ralf Hoelzer <ralf@well.com> - * - * $Id$ - * - * Ethereal - Network traffic analyzer - * By Gerald Combs <gerald@ethereal.com> - * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/* This implementation is based on a draft version of the 3.0 - * specification - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include <string.h> - -#include <epan/packet.h> -#include "prefs.h" - -#include "packet-rtp.h" -#include "packet-tcp.h" - -#define TCP_PORT_SKINNY 2000 - -#define SKINNY_SOFTKEY0 0x01 -#define SKINNY_SOFTKEY1 0x02 -#define SKINNY_SOFTKEY2 0x04 -#define SKINNY_SOFTKEY3 0x08 -#define SKINNY_SOFTKEY4 0x10 -#define SKINNY_SOFTKEY5 0x20 -#define SKINNY_SOFTKEY6 0x40 -#define SKINNY_SOFTKEY7 0x80 -#define SKINNY_SOFTKEY8 0x100 -#define SKINNY_SOFTKEY9 0x200 -#define SKINNY_SOFTKEY10 0x400 -#define SKINNY_SOFTKEY11 0x800 -#define SKINNY_SOFTKEY12 0x1000 -#define SKINNY_SOFTKEY13 0x2000 -#define SKINNY_SOFTKEY14 0x4000 -#define SKINNY_SOFTKEY15 0x8000 - -/* KeyMap Show/No Show */ -static const true_false_string softKeyMapValues = { - "Show", - "Do Not Show" -}; - - -/* I will probably need this again when I change things - * to function pointers, but let me use the existing - * infrastructure for now - * - * typedef struct { - * guint32 id; - * char * name; - * } message_id_t; - */ - -static const value_string message_id[] = { - - /* Station -> Callmanager */ - {0x0000, "KeepAliveMessage"}, - {0x0001, "RegisterMessage"}, - {0x0002, "IpPortMessage"}, - {0x0003, "KeypadButtonMessage"}, - {0x0004, "EnblocCallMessage"}, - {0x0005, "StimulusMessage"}, - {0x0006, "OffHookMessage"}, - {0x0007, "OnHookMessage"}, - {0x0008, "HookFlashMessage"}, - {0x0009, "ForwardStatReqMessage"}, - {0x000A, "SpeedDialStatReqMessage"}, - {0x000B, "LineStatReqMessage"}, - {0x000C, "ConfigStatReqMessage"}, - {0x000D, "TimeDateReqMessage"}, - {0x000E, "ButtonTemplateReqMessage"}, - {0x000F, "VersionReqMessage"}, - {0x0010, "CapabilitiesResMessage"}, - {0x0011, "MediaPortListMessage"}, - {0x0012, "ServerReqMessage"}, - {0x0020, "AlarmMessage"}, - {0x0021, "MulticastMediaReceptionAck"}, - {0x0022, "OpenReceiveChannelAck"}, - {0x0023, "ConnectionStatisticsRes"}, - {0x0024, "OffHookWithCgpnMessage"}, - {0x0025, "SoftKeySetReqMessage"}, - {0x0026, "SoftKeyEventMessage"}, - {0x0027, "UnregisterMessage"}, - {0x0028, "SoftKeyTemplateReqMessage"}, - {0x0029, "RegisterTokenReq"}, - {0x002A, "MediaTransmissionFailure"}, - {0x002B, "HeadsetStatusMessage"}, - {0x002C, "MediaResourceNotification"}, - {0x002D, "RegisterAvailableLinesMessage"}, - {0x002E, "DeviceToUserDataMessage"}, - {0x002F, "DeviceToUserDataResponseMessage"}, - {0x0030, "UpdateCapabilitiesMessage"}, - {0x0031, "OpenMultiMediaReceiveChannelAckMessage"}, - {0x0032, "ClearConferenceMessage"}, - {0x0033, "ServiceURLStatReqMessage"}, - {0x0034, "FeatureStatReqMessage"}, - {0x0035, "CreateConferenceResMessage"}, - {0x0036, "DeleteConferenceResMessage"}, - {0x0037, "ModifyConferenceResMessage"}, - {0x0038, "AddParticipantResMessage"}, - {0x0039, "AuditConferenceResMessage"}, - {0x0040, "AuditParticipantResMessage"}, - {0x0041, "DeviceToUserDataVersion1Message"}, - {0x0042, "DeviceToUserDataResponseVersion1Message"}, - - /* Callmanager -> Station */ - /* 0x0000, 0x0003? */ - {0x0081, "RegisterAckMessage"}, - {0x0082, "StartToneMessage"}, - {0x0083, "StopToneMessage"}, - {0x0085, "SetRingerMessage"}, - {0x0086, "SetLampMessage"}, - {0x0087, "SetHkFDetectMessage"}, - {0x0088, "SetSpeakerModeMessage"}, - {0x0089, "SetMicroModeMessage"}, - {0x008A, "StartMediaTransmission"}, - {0x008B, "StopMediaTransmission"}, - {0x008C, "StartMediaReception"}, - {0x008D, "StopMediaReception"}, - {0x008F, "CallInfoMessage"}, - {0x0090, "ForwardStatMessage"}, - {0x0091, "SpeedDialStatMessage"}, - {0x0092, "LineStatMessage"}, - {0x0093, "ConfigStatMessage"}, - {0x0094, "DefineTimeDate"}, - {0x0095, "StartSessionTransmission"}, - {0x0096, "StopSessionTransmission"}, - {0x0097, "ButtonTemplateMessage"}, - {0x0098, "VersionMessage"}, - {0x0099, "DisplayTextMessage"}, - {0x009A, "ClearDisplay"}, - {0x009B, "CapabilitiesReqMessage"}, - {0x009C, "EnunciatorCommandMessage"}, - {0x009D, "RegisterRejectMessage"}, - {0x009E, "ServerResMessage"}, - {0x009F, "Reset"}, - {0x0100, "KeepAliveAckMessage"}, - {0x0101, "StartMulticastMediaReception"}, - {0x0102, "StartMulticastMediaTransmission"}, - {0x0103, "StopMulticastMediaReception"}, - {0x0104, "StopMulticastMediaTransmission"}, - {0x0105, "OpenReceiveChannel"}, - {0x0106, "CloseReceiveChannel"}, - {0x0107, "ConnectionStatisticsReq"}, - {0x0108, "SoftKeyTemplateResMessage"}, - {0x0109, "SoftKeySetResMessage"}, - {0x0110, "SelectSoftKeysMessage"}, - {0x0111, "CallStateMessage"}, - {0x0112, "DisplayPromptStatusMessage"}, - {0x0113, "ClearPromptStatusMessage"}, - {0x0114, "DisplayNotifyMessage"}, - {0x0115, "ClearNotifyMessage"}, - {0x0116, "ActivateCallPlaneMessage"}, - {0x0117, "DeactivateCallPlaneMessage"}, - {0x0118, "UnregisterAckMessage"}, - {0x0119, "BackSpaceReqMessage"}, - {0x011A, "RegisterTokenAck"}, - {0x011B, "RegisterTokenReject"}, - - {0x011C, "StartMediaFailureDetection"}, - {0x011D, "DialedNumberMessage"}, - {0x011E, "UserToDeviceDataMessage"}, - {0x011F, "FeatureStatMessage"}, - {0x0120, "DisplayPriNotifyMessage"}, - {0x0121, "ClearPriNotifyMessage"}, - {0x0122, "StartAnnouncementMessage"}, - {0x0123, "StopAnnouncementMessage"}, - {0x0124, "AnnouncementFinishMessage"}, - {0x0127, "NotifyDtmfToneMessage"}, - {0x0128, "SendDtmfToneMessage"}, - {0x0129, "SubscribeDtmfPayloadReqMessage"}, - {0x012A, "SubscribeDtmfPayloadResMessage"}, - {0x012B, "SubscribeDtmfPayloadErrMessage"}, - {0x012C, "UnSubscribeDtmfPayloadReqMessage"}, - {0x012D, "UnSubscribeDtmfPayloadResMessage"}, - {0x012E, "UnSubscribeDtmfPayloadErrMessage"}, - {0x012F, "ServiceURLStatMessage"}, - {0x0130, "CallSelectStatMessage"}, - {0x0131, "OpenMultiMediaChannelMessage"}, - {0x0132, "StartMultiMediaTransmission"}, - {0x0133, "StopMultiMediaTransmission"}, - {0x0134, "MiscellaneousCommandMessage"}, - {0x0135, "FlowControlCommandMessage"}, - {0x0136, "CloseMultiMediaReceiveChannel"}, - {0x0137, "CreateConferenceReqMessage"}, - {0x0138, "DeleteConferenceReqMessage"}, - {0x0139, "ModifyConferenceReqMessage"}, - {0x013A, "AddParticipantReqMessage"}, - {0x013B, "DropParticipantReqMessage"}, - {0x013C, "AuditConferenceReqMessage"}, - {0x013D, "AuditParticipantReqMessage"}, - {0x013F, "UserToDeviceDataVersion1Message"}, - - {0 , NULL} /* terminator */ -}; - -/* - * Device type to text conversion table - */ -static const value_string deviceTypes[] = { - {1 , "30SPplus"}, - {2 , "12SPplus"}, - {3 , "12SP"}, - {4 , "12"}, - {5 , "30VIP"}, - {6 , "Telecaster"}, - {7 , "TelecasterMgr"}, - {8 , "TelecasterBus"}, - {9 , "Polycom"}, - {10 , "VGC"}, - {12 , "ATA"}, - {20 , "Virtual30SPplus"}, - {21 , "PhoneApplication"}, - {30 , "AnalogAccess"}, - {40 , "DigitalAccessPRI"}, - {41 , "DigitalAccessT1"}, - {42 , "DigitalAccessTitan2"}, - {43 , "DigitalAccessLennon"}, - {47 , "AnalogAccessElvis"}, - {50 , "ConferenceBridge"}, - {51 , "ConferenceBridgeYoko"}, - {52 , "ConferenceBridgeDixieLand"}, - {53 , "ConferenceBridgeSummit"}, - {60 , "H225"}, - {61 , "H323Phone"}, - {62 , "H323Trunk"}, - {70 , "MusicOnHold"}, - {71 , "Pilot"}, - {72 , "TapiPort"}, - {73 , "TapiRoutePoint"}, - {80 , "VoiceInBox"}, - {81 , "VoiceInboxAdmin"}, - {82 , "LineAnnunciator"}, - {83 , "SoftwareMtpDixieLand"}, - {84 , "CiscoMediaServer"}, - {85 , "ConferenceBridgeFlint"}, - {90 , "RouteList"}, - {100, "LoadSimulator"}, - {110, "MediaTerminationPoint"}, - {111, "MediaTerminationPointYoko"}, - {112, "MediaTerminationPointDixieLand"}, - {113, "MediaTerminationPointSummit"}, - {120, "MGCPStation"}, - {121, "MGCPTrunk"}, - {122, "RASProxy"}, - {125, "Trunk"}, - {126, "Annunciator"}, - {127, "MonitorBridge"}, - {128, "Recorder"}, - {129, "MonitorBridgeYoko"}, - {131, "SipTrunk"}, - {254, "UnknownMGCPGateway"}, - {255, "NotDefined"}, - { 0 , NULL} -}; - -/* - * keypad button -> text conversion - */ -static const value_string keypadButtons[] = { - {0x0 , "Zero"}, - {0x1 , "One"}, - {0x2 , "Two"}, - {0x3 , "Three"}, - {0x4 , "Four"}, - {0x5 , "Five"}, - {0x6 , "Six"}, - {0x7 , "Seven"}, - {0x8 , "Eight"}, - {0x9 , "Nine"}, - {0xa , "A"}, - {0xb , "B"}, - {0xc , "C"}, - {0xd , "D"}, - {0xe , "Star"}, - {0xf , "Pound"}, - {0 , NULL} -}; - -static const value_string deviceStimuli[] = { - {1 , "LastNumberRedial"}, - {2 , "SpeedDial"}, - {3 , "Hold"}, - {4 , "Transfer"}, - {5 , "ForwardAll"}, - {6 , "ForwardBusy"}, - {7 , "ForwardNoAnswer"}, - {8 , "Display"}, - {9 , "Line"}, - {0xa , "T120Chat"}, - {0xb , "T120Whiteboard"}, - {0xc , "T120ApplicationSharing"}, - {0xd , "T120FileTransfer"}, - {0xe , "Video"}, - {0xf , "VoiceMail"}, - {0x10 , "AutoAnswerRelease"}, - {0x11 , "AutoAnswer"}, - {0x12 , "Select"}, - {0x13 , "Privacy"}, - {0x14 , "ServiceURL"}, - {0x1B , "MaliciousCall"}, - {0x21 , "GenericAppB1"}, - {0x22 , "GenericAppB2"}, - {0x23 , "GenericAppB3"}, - {0x24 , "GenericAppB4"}, - {0x25 , "GenericAppB5"}, - {0x7b , "MeetMeConference"}, - {0x7d , "Conference=0x7d"}, - {0x7e , "CallPark=0x7e"}, - {0x7f , "CallPickup"}, - {0x80 , "GroupCallPickup=80"}, - {0,NULL} -}; - - -/* Note i'm only using 7 later on cuz i'm lazy ;) */ -#define DeviceMaxCapabilities 18 /* max capabilities allowed in Cap response message */ - -static const value_string mediaPayloads[] = { - {1 , "Non-standard codec"}, - {2 , "G.711 A-law 64k"}, - {3 , "G.711 A-law 56k"}, - {4 , "G.711 u-law 64k"}, - {5 , "G.711 u-law 56k"}, - {6 , "G.722 64k"}, - {7 , "G.722 56k"}, - {8 , "G.722 48k"}, - {9 , "G.723.1"}, - {10 , "G.728"}, - {11 , "G.729"}, - {12 , "G.729 Annex A"}, - {13 , "IS11172 AudioCap"}, /* IS11172 is an ISO MPEG standard */ - {14 , "IS13818 AudioCap"}, /* IS13818 is an ISO MPEG standard */ - {15 , "G.729 Annex B"}, - {16 , "G.729 Annex A+Annex B"}, - {18 , "GSM Full Rate"}, - {19 , "GSM Half Rate"}, - {20 , "GSM Enhanced Full Rate"}, - {25 , "Wideband 256k"}, - {32 , "Data 64k"}, - {33 , "Data 56k"}, - {80 , "GSM"}, - {81 , "ActiveVoice"}, - {82 , "G.726 32K"}, - {83 , "G.726 24K"}, - {84 , "G.726 16K"}, - {85 , "G.729B"}, - {86 , "G.729B Low Complexity"}, - {100 , "H261"}, - {101 , "H263"}, - {102 , "Vieo"}, - {105 , "T120"}, - {106 , "H224"}, - {257 , "RFC2833_DynPayload"}, - {0 , NULL} -}; - -static const value_string alarmSeverities[] = { - {0 , "Critical"}, - {1 , "Warning"}, - {2 , "Informational"}, - {4 , "Unknown"}, - {7 , "Major"}, - {8 , "Minor"}, - {10 , "Marginal"}, - {20 , "TraceInfo"}, - {0 , NULL} -}; - -static const value_string multicastMediaReceptionStatus[] = { - {0 , "Ok"}, - {1 , "Error"}, - {0 , NULL} -}; - -static const value_string openReceiveChanStatus[] = { - {0 , "orcOk"}, - {1 , "orcError"}, - {0 , NULL} -}; - - -static const value_string statsProcessingTypes[] = { - {0 , "clearStats"}, - {1 , "doNotClearStats"}, - {0 , NULL} -}; - -#define SkMaxSoftKeyCount 18 /* this value should be the same as the max soft key value */ -static const value_string softKeyEvents[] = { - {1 , "Redial"}, - {2 , "NewCall"}, - {3 , "Hold"}, - {4 , "Trnsfer"}, - {5 , "CFwdAll"}, - {6 , "CFwdBusy"}, - {7 , "CFwdNoAnswer"}, - {8 , "BackSpace"}, - {9 , "EndCall"}, - {10 , "Resume"}, - {11 , "Answer"}, - {12 , "Info"}, - {13 , "Confrn"}, - {14 , "Park"}, - {15 , "Join"}, - {16 , "MeetMeConfrn"}, - {17 , "CallPickUp"}, - {18 , "GrpCallPickUp"}, - {0 , NULL} -}; - -/* Define info index for each softkey event for Telecaster station. */ -static const value_string softKeyIndexes[] = { - {301 , "RedialInfoIndex"}, - {302 , "NewCallInfoIndex"}, - {303 , "HoldInfoIndex"}, - {304 , "TrnsferInfoIndex"}, - {305 , "CFwdAllInfoIndex"}, - {306 , "CFwdBusyInfoIndex"}, /* not used yet */ - {307 , "CFwdNoAnswerInfoIndex"}, /* not used yet */ - {308 , "BackSpaceInfoIndex"}, - {309 , "EndCallInfoIndex"}, - {310 , "ResumeInfoIndex"}, - {311 , "AnswerInfoIndex"}, - {312 , "InfoInfoIndex"}, - {313 , "ConfrnInfoIndex"}, - {314 , "ParkInfoIndex"}, - {315 , "JoinInfoIndex"}, - {316 , "MeetMeConfrnInfoIndex"}, - {317 , "CallPickUpInfoIndex"}, - {318 , "GrpCallPickUpInfoIndex"}, - {0 , NULL} -}; - - -static const value_string buttonDefinitions[] = { - {1 , "LastNumberRedial"}, - {2 , "SpeedDial"}, - {3 , "Hold"}, - {4 , "Transfer"}, - {5 , "ForwardAll"}, - {6 , "ForwardBusy"}, - {7 , "ForwardNoAnswer"}, - {8 , "Display"}, - {9 , "Line"}, - {0xa , "T120Chat"}, - {0xb , "T120Whiteboard"}, - {0xc , "T120ApplicationSharing"}, - {0xd , "T120FileTransfer"}, - {0xe , "Video"}, - {0x10 , "AnswerRelease"}, - {0xf0 , "Keypad"}, - {0xfd , "AEC"}, - {0xff , "Undefined"}, - {0 , NULL} -}; - -#define StationTotalSoftKeySets 10 /* total number of the soft key sets */ -static const value_string keySetNames[] = { - {0 , "OnHook"}, - {1 , "Connected"}, - {2 , "OnHold"}, - {3 , "RingIn"}, - {4 , "OffHook"}, - {5 , "Connected with transfer"}, - {6 , "Digits after dialing first digit"}, - {7 , "Connected with conference"}, - {8 , "RingOut"}, - {9 , "OffHook with features"}, - {0 , NULL} -}; - -/* Define soft key labels for the Telecaster station */ -static const value_string softKeyLabel[] = { - {0 , "undefined"}, - {1 , "Redial"}, - {2 , "NewCall"}, - {3 , "Hold"}, - {4 , "Trnsfer"}, - {5 , "CFwdAll"}, - {6 , "CFwdBusy"}, - {7 , "CFwdNoAnswer"}, - {8 , "<<"}, - {9 , "EndCall"}, - {10 , "Resume"}, - {11 , "Answer"}, - {12 , "Info"}, - {13 , "Confrn"}, - {14 , "Park"}, - {15 , "Join"}, - {16 , "MeetMe"}, - {17 , "PickUp"}, - {18 , "GPickUp"}, - {0 , NULL} -}; - - -/* - * define lamp modes; - * lamp cadence is defined as follows - * Wink (on 80%) = 448msec on / 64msec off - * Flash (fast flash) = 32msec on / 32msec off - * Blink (on 50%) = 512msec on / 512msec off - * On (on steady) - */ -static const value_string stationLampModes[] = { - {0 , "Undefined"}, - {0x1 , "Off"}, - {0x2 , "On"}, - {0x3 , "Wink"}, - {0x4 , "Flash"}, - {0x5 , "Blink"}, - {0 , NULL} -}; - -/* Defined the Call States to be sent to the Telecaste station. - * These are NOT the call states used in CM internally. Instead, - * they are the call states sent from CM and understood by the Telecaster station - */ -static const value_string skinny_stationCallStates[] = { - {1 , "OffHook"}, - {2 , "OnHook"}, - {3 , "RingOut"}, - {4 , "RingIn"}, - {5 , "Connected"}, - {6 , "Busy"}, - {7 , "Congestion"}, - {8 , "Hold"}, - {9 , "CallWaiting"}, - {10 , "CallTransfer"}, - {11 , "CallPark"}, - {12 , "Proceed"}, - {13 , "CallRemoteMultiline"}, - {14 , "InvalidNumber"}, - {0 , NULL} -}; - -/* Defined Call Type */ -static const value_string skinny_callTypes[] = { - {1 , "InBoundCall"}, - {2 , "OutBoundCall"}, - {3 , "ForwardCall"}, - {0 , NULL} -}; - -/* - * define station-playable tones; - * for tone definitions see SR-TSV-002275, "BOC Notes on the LEC Networks -- 1994" - */ -static const value_string skinny_deviceTones[] = { - {0 , "Silence"}, - {1 , "Dtmf1"}, - {2 , "Dtmf2"}, - {3 , "Dtmf3"}, - {4 , "Dtmf4"}, - {5 , "Dtmf5"}, - {6 , "Dtmf6"}, - {7 , "Dtmf7"}, - {8 , "Dtmf8"}, - {9 , "Dtmf9"}, - {0xa , "Dtmf0"}, - {0xe , "DtmfStar"}, - {0xf , "DtmfPound"}, - {0x10 , "DtmfA"}, - {0x11 , "DtmfB"}, - {0x12 , "DtmfC"}, - {0x13 , "DtmfD"}, - {0x21 , "InsideDialTone"}, - {0x22 , "OutsideDialTone"}, - {0x23 , "LineBusyTone"}, - {0x24 , "AlertingTone"}, - {0x25 , "ReorderTone"}, - {0x26 , "RecorderWarningTone"}, - {0x27 , "RecorderDetectedTone"}, - {0x28 , "RevertingTone"}, - {0x29 , "ReceiverOffHookTone"}, - {0x2a , "PartialDialTone"}, - {0x2b , "NoSuchNumberTone"}, - {0x2c , "BusyVerificationTone"}, - {0x2d , "CallWaitingTone"}, - {0x2e , "ConfirmationTone"}, - {0x2f , "CampOnIndicationTone"}, - {0x30 , "RecallDialTone"}, - {0x31 , "ZipZip"}, - {0x32 , "Zip"}, - {0x33 , "BeepBonk"}, - {0x34 , "MusicTone"}, - {0x35 , "HoldTone"}, - {0x36 , "TestTone"}, - {0x37 , "DtMoniterWarningTone"}, - {0x40 , "AddCallWaiting"}, - {0x41 , "PriorityCallWait"}, - {0x42 , "RecallDial"}, - {0x43 , "BargIn"}, - {0x44 , "DistinctAlert"}, - {0x45 , "PriorityAlert"}, - {0x46 , "ReminderRing"}, - {0x47 , "PrecedenceRingBack"}, - {0x48 , "PreemptionTone"}, - {0x50 , "MF1"}, - {0x51 , "MF2"}, - {0x52 , "MF3"}, - {0x53 , "MF4"}, - {0x54 , "MF5"}, - {0x55 , "MF6"}, - {0x56 , "MF7"}, - {0x57 , "MF8"}, - {0x58 , "MF9"}, - {0x59 , "MF0"}, - {0x5a , "MFKP1"}, - {0x5b , "MFST"}, - {0x5c , "MFKP2"}, - {0x5d , "MFSTP"}, - {0x5e , "MFST3P"}, - {0x5f , "MILLIWATT"}, - {0x60 , "MILLIWATTTEST"}, - {0x61 , "HIGHTONE"}, - {0x62 , "FLASHOVERRIDE"}, - {0x63 , "FLASH"}, - {0x64 , "PRIORITY"}, - {0x65 , "IMMEDIATE"}, - {0x66 , "PREAMPWARN"}, - {0x67 , "2105HZ"}, - {0x68 , "2600HZ"}, - {0x69 , "440HZ"}, - {0x6a , "300HZ"}, - {0x77 , "MLPP_PALA"}, - {0x78 , "MLPP_ICA"}, - {0x79 , "MLPP_VCA"}, - {0x7A , "MLPP_BPA"}, - {0x7B , "MLPP_BNEA"}, - {0x7C , "MLPP_UPA"}, - {0x7f , "NoTone"}, - {0 , NULL} -}; - -/* define ring types */ -static const value_string skinny_ringTypes[] = { - {0x1 , "RingOff"}, - {0x2 , "InsideRing"}, - {0x3 , "OutsideRing"}, - {0x4 , "FeatureRing"}, - {0x5 , "FlashOnly"}, - {0x6 , "PrecedenceRing"}, - {0 , NULL} -}; - -static const value_string skinny_speakerModes[] = { - {1 , "SpeakerOn"}, - {2 , "SpeakerOff"}, - {0 , NULL} -}; - -static const value_string skinny_silenceSuppressionModes[] = { - {0 , "Media_SilenceSuppression_Off"}, - {1 , "Media_SilenceSuppression_On"}, - {0 , NULL} -}; - -static const value_string skinny_g723BitRates[] = { - {1 , "Media_G723BRate_5_3"}, - {2 , "Media_G723BRate_6_4"}, - {0 , NULL} -}; - -/* define device reset types */ -static const value_string skinny_deviceResetTypes[] = { - {1 , "DEVICE_RESET"}, - {2 , "DEVICE_RESTART"}, - {0 , NULL} -}; - -static const value_string skinny_echoCancelTypes[] = { - {0 , "Media_EchoCancellation_Off"}, - {1 , "Media_EchoCancellation_On"}, - {0 , NULL} -}; - -static const value_string skinny_deviceUnregisterStatusTypes[] = { - {0 , "Ok"}, - {1 , "Error"}, - {2 , "NAK"}, /* Unregister request is rejected for reaso n such as existence of a call */ - {0 , NULL} -}; - -static const value_string skinny_createConfResults[] = { - {0 , "Ok"}, - {1 , "ResourceNotAvailable"}, - {2 , "ConferenceAlreadyExist"}, - {3 , "SystemErr"}, - {0 , NULL} -}; - -static const value_string skinny_modifyConfResults[] = { - {0 , "Ok"}, - {1 , "ResourceNotAvailable"}, - {2 , "ConferenceNotExist"}, - {3 , "InvalidParameter"}, - {4 , "MoreActiveCallsThanReserved"}, - {5 , "InvalidResourceType"}, - {6 , "SystemErr"}, - {0 , NULL} -}; - -static const value_string skinny_deleteConfResults[] = { - {0 , "Ok"}, - {1 , "ConferenceNotExist"}, - {2 , "SystemErr"}, - {0 , NULL} -}; - -static const value_string skinny_addParticipantResults[] = { - {0 , "Ok"}, - {1 , "ResourceNotAvailable"}, - {2 , "ConferenceNotExist"}, - {3 , "DuplicateCallRef"}, - {4 , "SystemErr"}, - {0 , NULL} -}; - -static const value_string skinny_auditParticipantResults[] = { - {0 , "Ok"}, - {1 , "ConferenceNotExist"}, - {0 , NULL} -}; - -/* define hook flash detection mode */ -static const value_string skinny_hookFlashDetectModes[] = { - {1 , "HookFlashOn"}, - {2 , "HookFlashOff"}, - {0 , NULL} -}; - -/* define headset mode */ -static const value_string skinny_headsetModes[] = { - {1 , "HeadsetOn"}, - {2 , "HeadsetOff"}, - {0 , NULL} -}; - -/* define station microphone modes; - * Mic On - The speakerphone's microphone is turned on ONLY if the phone is in the "Speaker On (Off Hook)" - * state (see above). - * Mic Off - The microphone is turned off or, if it's not on, the command is ignored. - */ -static const value_string skinny_microphoneModes[] = { - {1 , "MicOn"}, - {2 , "MicOff"}, - {0 , NULL} -}; - -/* define the session request types */ -static const value_string skinny_sessionTypes[] = { - {1 , "Chat"}, - {2 , "Whiteboard"}, - {4 , "ApplicationSharing"}, - {8 , "FileTransfer"}, - {10 , "Video"}, - {0 , NULL} -}; - -static const value_string skinny_mediaEnunciationTypes[] = { - {1 , "None"}, - {2 , "CallPark"}, - {0 , NULL} -}; - -static const value_string skinny_resourceTypes[] = { - {1 , "Conference"}, - {2 , "IVR"}, - {0 , NULL} -}; - -static const value_string skinny_sequenceFlags[] = { - {0 , "StationSequenceFirst"}, - {1 , "StationSequenceMore"}, - {2 , "StationSequenceLast"}, - {0 , NULL} -}; - -static const value_string skinny_Layouts[] = { - {0 , "NoLayout"}, - {1 , "OneByOne"}, - {2 , "OneByTwo"}, - {3 , "TwoByTwo"}, - {4 , "TwoByTwo3Alt1"}, - {5 , "TwoByTwo3Alt2"}, - {6 , "ThreeByThree"}, - {7 , "ThreeByThree6Alt1"}, - {8 , "ThreeByThree6Alt2"}, - {9 , "ThreeByThree4Alt1"}, - {10 , "ThreeByThree4Alt2"}, - {0 , NULL} -}; - -static const value_string skinny_transmitOrReceive[] = { - {1 , "Station_Receive_only"}, - {2 , "Station_Transmit_only"}, - {3 , "Station_Receive_Transmit"}, - {0 , NULL} -}; - -static const value_string skinny_endOfAnnAck[] = { - {0 , "NoAnnAckRequired"}, - {1 , "AnnAckRequired"}, - {0 , NULL} -}; - -static const value_string skinny_annPlayMode[] = { - {0 , "AnnXmlConfigMode"}, - {1 , "AnnOneShotMode"}, - {2 , "AnnContinuousMode"}, - {0 , NULL} -}; - -static const value_string skinny_annPlayStatus[] = { - {0 , "PlayToneOK"}, - {1 , "PlayToneErr"}, - {0 , NULL} -}; - -static const value_string skinny_miscCommandType[] = { - {0 , "videoFreezePicture"}, - {1 , "videoFastUpdatePicture"}, - {2 , "videoFastUpdateGOB"}, - {3 , "videoFastUpdateMB"}, - {4 , "lostPicture"}, - {5 , "lostPartialPicture"}, - {6 , "recoveryReferencePicture"}, - {7 , "temporalSpatialTradeOff"}, - {0 , NULL} -}; - -static const value_string skinny_formatTypes[] = { - {1 , "sqcif (128x96)"}, - {2 , "qcif (176x144)"}, - {3 , "cif (352x288)"}, - {4 , "4cif (704x576)"}, - {5 , "16cif (1408x1152)"}, - {6 , "custom_base"}, - {0 , NULL} -}; - -static const value_string cast_callSecurityStatusTypes[] = { - {0 , "CallSecurityStatusUnknown"}, - {1 , "CallSecurityStatusNotAuthenticated"}, - {2 , "CallSecurityStatusAuthenticated"}, - {0 , NULL} -}; - -#define StationMaxDirnumSize 24 /* max size of calling or called party dirnum */ -#define StationMaxNameSize 40 /* max size of calling party's name */ -#define StationMaxDeviceNameSize 16 /* max size of station's IP name */ -#define StationMaxSpeedDials 10 /* max number of speed dial numbers allowed on a station */ -#define StationMaxVersionSize 16 /* max chars in version string */ -#define StationMaxButtonTemplateSize 42 /* max button template size */ -#define StationMaxDisplayTextSize 33 /* max text size in DisplayText message */ -#define StationMaxPorts 10 /* max number of ports on one device */ -#define StationDateTemplateSize 6 /* date template in the form M/D/Y, D/M/Y, ... */ -#define StationMaxServerNameSize 48 /* max size of server name */ -#define StationMaxServers 5 /* max servers */ -#define StationMaxDeviceDirnums 1024 /* max dir numbers per SCM device */ -#define StationMaxDirnums 64 /* max dir numbers per physical station (also used in db request msg); */ -#define StationMaxSoftKeyLabelSize 16 /* max label size in the message */ -#define StationMaxSoftKeyDefinition 32 /* max number of soft key definition in the message */ -#define StationMaxSoftKeySetDefinition 16 /* max number of soft key set definition in the message */ -#define StationMaxSoftKeyIndex 16 /* max number of soft key indices in a station soft key set */ -#define StationMaxDisplayPromptStatusSize 32 /* max status text size in the display status message */ -#define StationMaxDisplayNotifySize 32 /* max prompt text size in the display prompt message */ -#define StationMaxAlarmMessageSize 80 /* max size for an alarm message */ -#define StationMaxUserDeviceDataSize 2000 /* max size of user data between application and device */ -#define StationMaxConference 32 -#define AppConferenceIDSize 32 -#define AppDataSize 24 -#define MAX_CUSTOM_PICTURES 6 -#define MAX_LAYOUT_WITH_SAME_SERVICE 5 -#define MAX_SERVICE_TYPE 4 -#define DeviceMaxCapabilities 18 /* max capabilities allowed in Cap response message */ -#define StationMaxCapabilities DeviceMaxCapabilities -#define StationMaxVideoCapabilities 10 -#define StationMaxDataCapabilities 5 -#define MAX_LEVEL_PREFERENCE 4 -#define MaxAnnouncementList 32 -#define StationMaxMonitorParties 16 /* Max Monitor Bridge whisper matrix parties, rm, M&R in Parche */ -#define StationMaxServiceURLSize 256 /* max number of service URLs length */ -#define MAX_PICTURE_FORMAT 5 -#define MAX_REFERENCE_PICTURE 4 - -static void dissect_skinny(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); - -/* Initialize the protocol and registered fields */ -static int proto_skinny = -1; -static int hf_skinny_data_length = -1; -static int hf_skinny_reserved = -1; -static int hf_skinny_messageid = -1; -static int hf_skinny_deviceName = -1; -static int hf_skinny_stationUserId = -1; -static int hf_skinny_stationInstance = -1; -static int hf_skinny_deviceType = -1; -static int hf_skinny_maxStreams = -1; -static int hf_skinny_stationIpPort = -1; -static int hf_skinny_stationKeypadButton = -1; -static int hf_skinny_calledParty = -1; -static int hf_skinny_stimulus = -1; -static int hf_skinny_stimulusInstance = -1; -static int hf_skinny_lineNumber = -1; -static int hf_skinny_speedDialNumber = -1; -static int hf_skinny_capCount = -1; -static int hf_skinny_payloadCapability = -1; -static int hf_skinny_maxFramesPerPacket = -1; -static int hf_skinny_alarmSeverity = -1; -static int hf_skinny_alarmParam1 = -1; -static int hf_skinny_alarmParam2 = -1; -static int hf_skinny_receptionStatus = -1; -static int hf_skinny_passThruPartyID = -1; -static int hf_skinny_ORCStatus = -1; -static int hf_skinny_ipAddress = -1; -static int hf_skinny_portNumber = -1; -static int hf_skinny_statsProcessingType = -1; -static int hf_skinny_callIdentifier = -1; -static int hf_skinny_packetsSent = -1; -static int hf_skinny_octetsSent = -1; -static int hf_skinny_packetsRecv = -1; -static int hf_skinny_octetsRecv = -1; -static int hf_skinny_packetsLost = -1; -static int hf_skinny_latency = -1; -static int hf_skinny_jitter = -1; -static int hf_skinny_directoryNumber = -1; -static int hf_skinny_softKeyEvent = -1; -static int hf_skinny_lineInstance = -1; -static int hf_skinny_keepAliveInterval = -1; -static int hf_skinny_dateTemplate = -1; -static int hf_skinny_secondaryKeepAliveInterval = -1; -static int hf_skinny_buttonOffset = -1; -static int hf_skinny_buttonCount = -1; -static int hf_skinny_totalButtonCount = -1; -static int hf_skinny_buttonInstanceNumber = -1; -static int hf_skinny_buttonDefinition = -1; -static int hf_skinny_softKeyOffset = -1; -static int hf_skinny_softKeyCount = -1; -static int hf_skinny_totalSoftKeyCount = -1; -static int hf_skinny_softKeyLabel = -1; -static int hf_skinny_softKeySetOffset = -1; -static int hf_skinny_softKeySetCount = -1; -static int hf_skinny_totalSoftKeySetCount = -1; -static int hf_skinny_softKeyTemplateIndex = -1; -static int hf_skinny_softKeyInfoIndex = -1; -static int hf_skinny_softKeySetDescription = -1; -static int hf_skinny_softKeyMap = -1; -static int hf_skinny_softKey0 = -1; -static int hf_skinny_softKey1 = -1; -static int hf_skinny_softKey2 = -1; -static int hf_skinny_softKey3 = -1; -static int hf_skinny_softKey4 = -1; -static int hf_skinny_softKey5 = -1; -static int hf_skinny_softKey6 = -1; -static int hf_skinny_softKey7 = -1; -static int hf_skinny_softKey8 = -1; -static int hf_skinny_softKey9 = -1; -static int hf_skinny_softKey10 = -1; -static int hf_skinny_softKey11 = -1; -static int hf_skinny_softKey12 = -1; -static int hf_skinny_softKey13 = -1; -static int hf_skinny_softKey14 = -1; -static int hf_skinny_softKey15 = -1; -static int hf_skinny_lampMode = -1; -static int hf_skinny_messageTimeOutValue = -1; -static int hf_skinny_displayMessage = -1; -static int hf_skinny_lineDirNumber = -1; -static int hf_skinny_lineFullyQualifiedDisplayName = -1; -static int hf_skinny_speedDialDirNumber = -1; -static int hf_skinny_speedDialDisplayName = -1; -static int hf_skinny_dateYear = -1; -static int hf_skinny_dateMonth = -1; -static int hf_skinny_dayOfWeek = -1; -static int hf_skinny_dateDay = -1; -static int hf_skinny_dateHour = -1; -static int hf_skinny_dateMinute = -1; -static int hf_skinny_dateSeconds = -1; -static int hf_skinny_dateMilliseconds = -1; -static int hf_skinny_timeStamp = -1; -static int hf_skinny_callState = -1; -static int hf_skinny_deviceTone = -1; -static int hf_skinny_callingPartyName = -1; -static int hf_skinny_callingParty = -1; -static int hf_skinny_calledPartyName = -1; -static int hf_skinny_callType = -1; -static int hf_skinny_originalCalledPartyName = -1; -static int hf_skinny_originalCalledParty = -1; -static int hf_skinny_ringType = -1; -static int hf_skinny_speakerMode = -1; -static int hf_skinny_remoteIpAddr = -1; -static int hf_skinny_remotePortNumber = -1; -static int hf_skinny_millisecondPacketSize = -1; -static int hf_skinny_precedenceValue = -1; -static int hf_skinny_silenceSuppression = -1; -static int hf_skinny_g723BitRate = -1; -static int hf_skinny_conferenceID = -1; -static int hf_skinny_deviceResetType = -1; -static int hf_skinny_echoCancelType = -1; -static int hf_skinny_deviceUnregisterStatus = -1; -static int hf_skinny_hookFlashDetectMode = -1; -static int hf_skinny_detectInterval = -1; -static int hf_skinny_microphoneMode = -1; -static int hf_skinny_headsetMode = -1; -static int hf_skinny_unknown = -1; -static int hf_skinny_data = -1; -static int hf_skinny_activeForward = -1; -static int hf_skinny_forwardAllActive = -1; -static int hf_skinny_forwardBusyActive = -1; -static int hf_skinny_forwardNoAnswerActive = -1; -static int hf_skinny_forwardNumber = -1; -static int hf_skinny_serverName = -1; -static int hf_skinny_numberLines = -1; -static int hf_skinny_numberSpeedDials = -1; -static int hf_skinny_userName = -1; -static int hf_skinny_sessionType = -1; -static int hf_skinny_version = -1; -static int hf_skinny_mediaEnunciationType = -1; -static int hf_skinny_serverIdentifier = -1; -static int hf_skinny_serverListenPort = -1; -static int hf_skinny_serverIpAddress = -1; -static int hf_skinny_multicastIpAddress = -1; -static int hf_skinny_multicastPort = -1; -static int hf_skinny_tokenRejWaitTime = -1; -static int hf_skinny_numberOfInServiceStreams = -1; -static int hf_skinny_maxStreamsPerConf = -1; -static int hf_skinny_numberOfOutOfServiceStreams = -1; -static int hf_skinny_applicationID = -1; -static int hf_skinny_serviceNum = -1; -static int hf_skinny_serviceURLIndex = -1; -static int hf_skinny_featureIndex = -1; -static int hf_skinny_createConfResults = -1; -static int hf_skinny_modifyConfResults = -1; -static int hf_skinny_deleteConfResults = -1; -static int hf_skinny_addParticipantResults = -1; -static int hf_skinny_passThruData = -1; -static int hf_skinny_last = -1; -static int hf_skinny_numberOfEntries = -1; -static int hf_skinny_auditParticipantResults = -1; -static int hf_skinny_participantEntry = -1; -static int hf_skinny_resourceTypes = -1; -static int hf_skinny_numberOfReservedParticipants = -1; -static int hf_skinny_numberOfActiveParticipants = -1; -static int hf_skinny_appID = -1; -static int hf_skinny_appData = -1; -static int hf_skinny_appConfID = -1; -static int hf_skinny_sequenceFlag = -1; -static int hf_skinny_displayPriority = -1; -static int hf_skinny_appInstanceID = -1; -static int hf_skinny_routingID = -1; -static int hf_skinny_audioCapCount = -1; -static int hf_skinny_videoCapCount = -1; -static int hf_skinny_dataCapCount = -1; -static int hf_skinny_RTPPayloadFormat = -1; -static int hf_skinny_customPictureFormatCount = -1; -static int hf_skinny_pictureWidth = -1; -static int hf_skinny_pictureHeight = -1; -static int hf_skinny_pixelAspectRatio = -1; -static int hf_skinny_clockConversionCode = -1; -static int hf_skinny_clockDivisor = -1; -static int hf_skinny_activeStreamsOnRegistration = -1; -static int hf_skinny_maxBW = -1; -static int hf_skinny_serviceResourceCount = -1; -static int hf_skinny_layoutCount = -1; -static int hf_skinny_layout = -1; -static int hf_skinny_maxConferences = -1; -static int hf_skinny_activeConferenceOnRegistration = -1; -static int hf_skinny_transmitOrReceive = -1; -static int hf_skinny_levelPreferenceCount = -1; -static int hf_skinny_transmitPreference = -1; -static int hf_skinny_format = -1; -static int hf_skinny_maxBitRate = -1; -static int hf_skinny_minBitRate = -1; -static int hf_skinny_MPI = -1; -static int hf_skinny_serviceNumber = -1; -static int hf_skinny_temporalSpatialTradeOffCapability = -1; -static int hf_skinny_stillImageTransmission = -1; -static int hf_skinny_h263_capability_bitfield = -1; -static int hf_skinny_annexNandWFutureUse = -1; -static int hf_skinny_modelNumber = -1; -static int hf_skinny_bandwidth = -1; -static int hf_skinny_protocolDependentData = -1; -static int hf_skinny_priority = -1; -static int hf_skinny_payloadDtmf = -1; -static int hf_skinny_featureID = -1; -static int hf_skinny_featureTextLabel = -1; -static int hf_skinny_featureStatus = -1; -static int hf_skinny_notify = -1; -static int hf_skinny_endOfAnnAck = -1; -static int hf_skinny_annPlayMode = -1; -static int hf_skinny_annPlayStatus = -1; -static int hf_skinny_locale = -1; -static int hf_skinny_country = -1; -static int hf_skinny_matrixConfPartyID = -1; -static int hf_skinny_hearingConfPartyMask = -1; -static int hf_skinny_serviceURL = -1; -static int hf_skinny_serviceURLDisplayName = -1; -static int hf_skinny_callSelectStat = -1; -static int hf_skinny_isConferenceCreator = -1; -static int hf_skinny_payload_rfc_number = -1; -static int hf_skinny_payloadType = -1; -static int hf_skinny_bitRate = -1; -static int hf_skinny_pictureFormatCount = -1; -static int hf_skinny_confServiceNum = -1; -static int hf_skinny_DSCPValue = -1; -static int hf_skinny_miscCommandType = -1; -static int hf_skinny_temporalSpatialTradeOff = -1; -static int hf_skinny_firstGOB = -1; -static int hf_skinny_numberOfGOBs = -1; -static int hf_skinny_firstMB = -1; -static int hf_skinny_numberOfMBs = -1; -static int hf_skinny_pictureNumber = -1; -static int hf_skinny_longTermPictureIndex = -1; -static int hf_skinny_recoveryReferencePictureCount = -1; -static int hf_skinny_transactionID = -1; -static int hf_cast_lastRedirectingPartyName = -1; -static int hf_cast_lastRedirectingParty = -1; -static int hf_cast_cgpnVoiceMailbox = -1; -static int hf_cast_cdpnVoiceMailbox = -1; -static int hf_cast_originalCdpnVoiceMailbox = -1; -static int hf_cast_lastRedirectingVoiceMailbox = -1; -static int hf_cast_originalCdpnRedirectReason = -1; -static int hf_cast_lastRedirectingReason = -1; -static int hf_cast_callInstance = -1; -static int hf_cast_callSecurityStatus = -1; - - -/* Initialize the subtree pointers */ -static gint ett_skinny = -1; -static gint ett_skinny_tree = -1; -static gint ett_skinny_softKeyMap = -1; - -/* desegmentation of SCCP */ -static gboolean skinny_desegment = TRUE; - -static dissector_handle_t data_handle; -static dissector_handle_t rtp_handle=NULL; - -/* Get the length of a single SCCP PDU */ -static guint get_skinny_pdu_len(tvbuff_t *tvb, int offset) -{ - guint32 hdr_data_length; - - /* - * Get the length of the SCCP packet. - */ - hdr_data_length = tvb_get_letohl(tvb, offset); - - /* - * That length doesn't include the length of the header itself; - * add that in. - */ - return hdr_data_length + 8; -} - -/* Dissect a single SCCP PDU */ -static void dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) -{ - int offset = 0; - - /* Header fields */ - guint32 hdr_data_length; - guint32 hdr_reserved; - guint32 data_messageid; - gchar *messageid_str; - /* guint32 data_size; */ - - guint i = 0; - guint t = 0; - int j = 0; - guint count; - int val; - - guint32 capCount; - guint32 softKeyCount; - guint32 softKeySetCount; - guint16 validKeyMask; - - /* Set up structures we will need to add the protocol subtree and manage it */ - proto_item *ti; - proto_tree *skinny_tree = NULL; - proto_item *ti_sub; - proto_tree *skinny_sub_tree; - proto_tree *skinny_sub_tree_sav; - proto_tree *skinny_sub_tree_sav_sav; - - proto_item *skm = NULL; - proto_item *skm_tree = NULL; - - hdr_data_length = tvb_get_letohl(tvb, offset); - hdr_reserved = tvb_get_letohl(tvb, offset+4); - data_messageid = tvb_get_letohl(tvb, offset+8); - - /* In the interest of speed, if "tree" is NULL, don't do any work not - * necessary to generate protocol tree items. */ - if (tree) { - ti = proto_tree_add_item(tree, proto_skinny, tvb, offset, hdr_data_length+8, FALSE); - skinny_tree = proto_item_add_subtree(ti, ett_skinny); - proto_tree_add_uint(skinny_tree, hf_skinny_data_length, tvb, offset, 4, hdr_data_length); - proto_tree_add_uint(skinny_tree, hf_skinny_reserved, tvb, offset+4, 4, hdr_reserved); - } - - messageid_str = val_to_str(data_messageid, message_id, "0x%08X (Unknown)"); - - if (check_col(pinfo->cinfo, COL_INFO)) { - col_add_str(pinfo->cinfo, COL_INFO, messageid_str); - } - - if (tree) { - proto_tree_add_uint(skinny_tree, hf_skinny_messageid, tvb,offset+8, 4, data_messageid ); - } - - if (tree) { - switch(data_messageid) { - - /* cases that do not need to be decoded */ - case 0x0 : /* keepAlive */ - break; - - case 0x6 : /* offHook */ - break; - - case 0x7 : /* onHook */ - break; - - case 0x8 : /* hookFlash */ - break; - - case 0xc : /* configStateReqMessage */ - break; - - case 0xd : /* timeDateReqMessage */ - break; - - case 0xe : /* buttoneTemplateReqMessage */ - break; - - case 0xf : /* stationVersionReqMessage */ - break; - - case 0x12 : /* stationServerReqMessage */ - break; - - case 0x25 : /* softKeySetReqMessage */ - break; - - case 0x27 : /* unregisterMessage */ - break; - - case 0x28 : /* softKeyTemplateRequest */ - break; - - case 0x83 : /* stopTone */ - break; - - case 0x9a : /* clearDisplay */ - break; - - case 0x9b : /* capabilitiesReqMessage */ - break; - - case 0x100 : /* keepAliveAck */ - break; - - case 0x115 : /* clearNotifyDisplay */ - break; - - case 0x117 : /* deactivateCallPlane */ - break; - - case 0x11a : /* registerTokenAck */ - break; - - case 0x13C : /* AuditConferenceReqMessage */ - break; - - /* - ** cases that need decode - ** - */ - - case 0x1 : /* register message */ - proto_tree_add_item(skinny_tree, hf_skinny_deviceName, tvb, offset+12, StationMaxDeviceNameSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_stationUserId, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_stationInstance, tvb, offset+32, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_ipAddress, tvb, offset+36, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_deviceType, tvb, offset+40, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_maxStreams, tvb, offset+44, 4, TRUE); - break; - - case 0x2 : /* ipPortMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_stationIpPort, tvb, offset+12, 2, FALSE); - break; - - case 0x3 : /* keyPadButtonMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_stationKeypadButton, tvb, offset+12, 4, TRUE); - break; - - case 0x4 : /* stationEnblocCallMessage -- This decode NOT verified*/ - proto_tree_add_item(skinny_tree, hf_skinny_calledParty, tvb, offset+12, StationMaxDirnumSize, TRUE); - break; - - case 0x5 : /* stationStimulusMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_stimulus, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_stimulusInstance, tvb, offset+16, 4, TRUE); - break; - - case 0x9 : /* stationForwardStatReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_lineNumber, tvb, offset+12, 4, TRUE); - break; - - case 0xa : /* speedDialStatReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_speedDialNumber, tvb, offset+12, 4, TRUE); - break; - - case 0xb : /* LineStatReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_lineNumber, tvb, offset+12, 4, TRUE); - break; - - case 0x10 : /* capabilitiesResMessage - VERIFIED AS IS*/ - /* FIXME -- we are only going to decode the first 7 protocol fields for now cuz that's all it sent me - * on the phone i was working with. I should probably skip the struct decode and use a more piece - * type method using the capCount definition to control the decode loop - * - * basically changing StationMaxCapabilities definition - * - */ - capCount = tvb_get_letohl(tvb, offset+12); - proto_tree_add_uint(skinny_tree, hf_skinny_capCount, tvb, offset+12, 4, capCount); - for (i = 0; i < capCount; i++) { - proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+(i*16)+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_maxFramesPerPacket, tvb, offset+(i*16)+20, 2, TRUE); - /* FIXME -- decode the union under here as required, is always 0 on my equipment */ - } - break; - - case 0x11 : /* mediaPortList */ - break; - - case 0x20 : /* stationAlarmMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_alarmSeverity, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_displayMessage, tvb, offset+16, StationMaxAlarmMessageSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_alarmParam1, tvb, offset+96, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_alarmParam2, tvb, offset+100, 4, TRUE); - break; - - case 0x21 : /* stationMulticastMediaReceptionAck - This decode NOT verified*/ - proto_tree_add_item(skinny_tree, hf_skinny_receptionStatus, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - break; - - case 0x22 : /* stationOpenReceiveChannelAck */ - proto_tree_add_item(skinny_tree, hf_skinny_ORCStatus, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_ipAddress, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_portNumber, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+24, 4, TRUE); - if((!pinfo->fd->flags.visited) && rtp_handle){ - guint32 ipv4_address; - tvb_memcpy(tvb, (char*)&ipv4_address, offset+16, 4); - rtp_add_address(pinfo, (char *)&ipv4_address, tvb_get_letohl(tvb, offset+20), 0, "Skinny", pinfo->fd->num); - } - break; - - case 0x23 : /* stationConnectionStatisticsRes */ - proto_tree_add_item(skinny_tree, hf_skinny_directoryNumber, tvb, offset+12, StationMaxDirnumSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+36, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_statsProcessingType, tvb, offset+40, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_packetsSent, tvb, offset+44, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_octetsSent, tvb, offset+48, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_packetsRecv, tvb, offset+52, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_octetsRecv, tvb, offset+56, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_packetsLost, tvb, offset+60, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_jitter, tvb, offset+64, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_latency, tvb, offset+68, 4, TRUE); - break; - - case 0x24 : /* offHookWithCgpn */ - proto_tree_add_item(skinny_tree, hf_skinny_calledParty, tvb, offset+12,StationMaxDirnumSize, TRUE); - break; - - case 0x26 : /* softKeyEventMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_softKeyEvent, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - break; - - case 0x29 : /* registerTokenREq */ - proto_tree_add_item(skinny_tree, hf_skinny_deviceName, tvb, offset+12, 4, TRUE); - i = offset+12+StationMaxDeviceNameSize; - proto_tree_add_item(skinny_tree, hf_skinny_stationUserId, tvb, i, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_stationInstance, tvb, i+4, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_ipAddress, tvb, i+8, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_deviceType, tvb, i+12, 4, TRUE); - break; - - case 0x2A : /* MediaTransmissionFailure */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_ipAddress, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_portNumber, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+28, 4, TRUE); - break; - - case 0x2B : /* HeadsetStatusMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_headsetMode, tvb, offset+12, 4, TRUE); - break; - - case 0x2C : /* MediaResourceNotification */ - proto_tree_add_item(skinny_tree, hf_skinny_deviceType, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_numberOfInServiceStreams, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_maxStreamsPerConf, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_numberOfOutOfServiceStreams, tvb, offset+24, 4, TRUE); - break; - - case 0x2D : /* RegisterAvailableLinesMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_numberLines, tvb, offset+12, 4, TRUE); - break; - - case 0x2E : /* DeviceToUserDataMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_applicationID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_transactionID, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_data_length, tvb, offset+28, 4, TRUE); - count = tvb_get_letohl( tvb, offset+28); - proto_tree_add_uint(skinny_tree, hf_skinny_data, tvb, offset+30, 1, count); - break; - - case 0x2F : /* DeviceToUserDataResponseMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_applicationID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_transactionID, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_data_length, tvb, offset+28, 4, TRUE); - count = tvb_get_letohl( tvb, offset+28); - proto_tree_add_uint(skinny_tree, hf_skinny_data, tvb, offset+30, 1, count); - break; - - case 0x30 : /* UpdateCapabilitiesMessage */ - /* to do - this message is very large and will span multiple packets, it would be nice to someday */ - /* find out a way to join the next packet and get the complete message to decode */ - proto_tree_add_item(skinny_tree, hf_skinny_audioCapCount, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_videoCapCount, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_dataCapCount, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_RTPPayloadFormat, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_customPictureFormatCount, tvb, offset+28, 4, TRUE); - count = offset+32; - for ( i = 0; i < MAX_CUSTOM_PICTURES; i++ ) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "customPictureFormat[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureWidth, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureHeight, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_pixelAspectRatio, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_clockConversionCode, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_clockDivisor, tvb, count, 4, TRUE); - count+= 4; - } - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "confResources"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_activeStreamsOnRegistration, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBW, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_serviceResourceCount, tvb, count, 4, TRUE); - count+= 4; - skinny_sub_tree_sav = skinny_sub_tree; - for ( i = 0; i < MAX_SERVICE_TYPE; i++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 20, "serviceResource[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_layoutCount, tvb, count, 4, TRUE); - count+= 4; - skinny_sub_tree_sav_sav = skinny_sub_tree_sav; - for ( t = 0; t < MAX_LAYOUT_WITH_SAME_SERVICE; t++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 20, "layouts[%d]", t); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_layout, tvb, count, 4, TRUE); - count+= 4; - } - skinny_sub_tree = skinny_sub_tree_sav_sav; - proto_tree_add_item(skinny_sub_tree, hf_skinny_serviceNum, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_maxStreams, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_maxConferences, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_activeConferenceOnRegistration, tvb, count, 4, TRUE); - count+= 4; - } - for ( i = 0; i < StationMaxCapabilities; i++ ) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "audiocaps[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_payloadCapability, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_maxFramesPerPacket, tvb, count, 2, TRUE); - count+= 4; - /* skip past union it is only for G723 */ - count+= 8; - } - for ( i = 0; i < StationMaxVideoCapabilities; i++ ) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "vidCaps[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_payloadCapability, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_transmitOrReceive, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_levelPreferenceCount, tvb, count, 4, TRUE); - count+= 4; - skinny_sub_tree_sav = skinny_sub_tree; - for ( t = 0; t < MAX_LEVEL_PREFERENCE; t++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 20, "levelPreference[%d]", t); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_transmitPreference, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_format, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBitRate, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_minBitRate, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_MPI, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_serviceNumber, tvb, count, 4, TRUE); - count+= 4; - } - val = count; - - /* H.261 */ - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, TRUE); - count+= 4; - - /* H.263 */ - count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, TRUE); - count+= 4; - - /* Video */ - count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, TRUE); - count+= 4; - } - for ( i = 0; i < StationMaxDataCapabilities; i++ ) { - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 20, "dataCaps[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_payloadCapability, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_transmitOrReceive, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_protocolDependentData, tvb, count, 4, TRUE); - count+= 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBitRate, tvb, count, 4, TRUE); - count+= 4; - } - break; - - case 0x31 : /* OpenMultiMediaReceiveChannelAckMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_ORCStatus, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_ipAddress, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_portNumber, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+28, 4, TRUE); - break; - - case 0x32 : /* ClearConferenceMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_serviceNum, tvb, offset+16, 4, TRUE); - break; - - case 0x33 : /* ServiceURLStatReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_serviceURLIndex, tvb, offset+12, 4, TRUE); - break; - - case 0x34 : /* FeatureStatReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_featureIndex, tvb, offset+12, 4, TRUE); - break; - - case 0x35 : /* CreateConferenceResMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_createConfResults, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_data_length, tvb, offset+20, 4, TRUE); - count = tvb_get_letohl( tvb, offset+20); - proto_tree_add_uint(skinny_tree, hf_skinny_passThruData, tvb, offset+24, 1, count); - break; - - case 0x36 : /* DeleteConferenceResMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_deleteConfResults, tvb, offset+16, 4, TRUE); - break; - - case 0x37 : /* ModifyConferenceResMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_createConfResults, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_data_length, tvb, offset+20, 4, TRUE); - count = tvb_get_letohl( tvb, offset+20); - proto_tree_add_uint(skinny_tree, hf_skinny_passThruData, tvb, offset+24, 1, count); - break; - - case 0x38 : /* AddParticipantResMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_addParticipantResults, tvb, offset+20, 4, TRUE); - break; - - case 0x39 : /* AuditConferenceResMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_last, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_numberOfEntries, tvb, offset+16, 4, TRUE); - count = offset+20; - for ( i = 0; i < StationMaxConference; i++ ) { - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_tree, hf_skinny_resourceTypes, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_tree, hf_skinny_numberOfReservedParticipants, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_tree, hf_skinny_numberOfActiveParticipants, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_tree, hf_skinny_appID, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_uint(skinny_tree, hf_skinny_appConfID, tvb, count, 1, AppConferenceIDSize); - count += AppConferenceIDSize; - proto_tree_add_uint(skinny_tree, hf_skinny_appData, tvb, count, 1, AppDataSize); - count += AppDataSize; - } - break; - - case 0x40 : /* AuditParticipantResMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_auditParticipantResults, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_last, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_numberOfEntries, tvb, offset+24, 4, TRUE); - count = tvb_get_letohl( tvb, offset+24); - for ( i = 0; i < count; i++ ) { - proto_tree_add_item(skinny_tree, hf_skinny_participantEntry, tvb, offset+28+(i*4), 4, TRUE); - } - break; - - case 0x41 : /* DeviceToUserDataVersion1Message */ - proto_tree_add_item(skinny_tree, hf_skinny_applicationID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_transactionID, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_data_length, tvb, offset+28, 4, TRUE); - count = tvb_get_letohl( tvb, offset+28); - proto_tree_add_item(skinny_tree, hf_skinny_sequenceFlag, tvb, offset+30, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_displayPriority, tvb, offset+34, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+38, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_appInstanceID, tvb, offset+42, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_routingID, tvb, offset+46, 4, TRUE); - proto_tree_add_uint(skinny_tree, hf_skinny_data, tvb, offset+50, 1, count); - break; - - case 0x42 : /* DeviceToUserDataResponseVersion1Message */ - proto_tree_add_item(skinny_tree, hf_skinny_applicationID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_transactionID, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_data_length, tvb, offset+28, 4, TRUE); - count = tvb_get_letohl( tvb, offset+28); - proto_tree_add_item(skinny_tree, hf_skinny_sequenceFlag, tvb, offset+30, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_displayPriority, tvb, offset+34, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+38, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_appInstanceID, tvb, offset+42, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_routingID, tvb, offset+46, 4, TRUE); - proto_tree_add_uint(skinny_tree, hf_skinny_data, tvb, offset+50, 1, count); - break; - - - /* - * - * Call manager -> client messages start here(ish) - * - */ - case 0x81 : /* registerAck */ - proto_tree_add_item(skinny_tree, hf_skinny_keepAliveInterval, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_dateTemplate, tvb, offset+16, StationDateTemplateSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_secondaryKeepAliveInterval, tvb, offset+24, 4, TRUE); - break; - - case 0x82 : /* startTone */ - proto_tree_add_item(skinny_tree, hf_skinny_deviceTone, tvb, offset+12, 4, TRUE); - break; - - case 0x85 : /* setRingerMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_ringType, tvb, offset+12, 4, TRUE); - break; - - case 0x86 : /* setLampMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_stimulus, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_stimulusInstance, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lampMode, tvb, offset+20, 4, TRUE); - break; - - case 0x87 : /* stationHookFlashDetectMode */ - proto_tree_add_item(skinny_tree, hf_skinny_hookFlashDetectMode, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_detectInterval, tvb, offset+16, 4, TRUE); - break; - - case 0x88 : /* setSpeakerMode */ - - proto_tree_add_item(skinny_tree, hf_skinny_speakerMode, tvb, offset+12, 4, TRUE); - break; - - case 0x89 : /* setMicroMode */ - proto_tree_add_item(skinny_tree, hf_skinny_microphoneMode, tvb, offset+12, 4, TRUE); - break; - - case 0x8a : /* startMediaTransmistion */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_remoteIpAddr, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_remotePortNumber, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_millisecondPacketSize, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+32, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_precedenceValue, tvb, offset+36, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_silenceSuppression, tvb, offset+40, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_maxFramesPerPacket, tvb, offset+44, 2, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_g723BitRate, tvb, offset+48, 4, TRUE); - if((!pinfo->fd->flags.visited) && rtp_handle){ - guint32 ipv4_address; - tvb_memcpy(tvb, (char*)&ipv4_address, offset+20, 4); - rtp_add_address(pinfo, (char *)&ipv4_address, tvb_get_letohl(tvb, offset+24), 0, "Skinny", pinfo->fd->num); - } - break; - - case 0x8b : /* stopMediaTransmission */ - - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - break; - - case 0x8c : /* startMediaReception */ - break; - - case 0x8d : /* stopMediaReception */ - break; - - case 0x8e : /* reservered */ - break; - - case 0x8f : /* callInfo */ - i = offset+12; - proto_tree_add_item(skinny_tree, hf_skinny_callingPartyName, tvb, i, StationMaxNameSize, TRUE); - i += StationMaxNameSize; - proto_tree_add_item(skinny_tree, hf_skinny_callingParty, tvb, i, StationMaxDirnumSize, TRUE); - i += StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_skinny_calledPartyName, tvb, i, StationMaxNameSize, TRUE); - i += StationMaxNameSize; - proto_tree_add_item(skinny_tree, hf_skinny_calledParty, tvb, i, StationMaxDirnumSize, TRUE); - i += StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, i, 4, TRUE); - i += 4; - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, i, 4, TRUE); - i += 4; - proto_tree_add_item(skinny_tree, hf_skinny_callType, tvb, i, 4, TRUE); - i += 4; - proto_tree_add_item(skinny_tree, hf_skinny_originalCalledPartyName, tvb, i, StationMaxNameSize, TRUE); - i += StationMaxNameSize; - proto_tree_add_item(skinny_tree, hf_skinny_originalCalledParty, tvb, i, StationMaxDirnumSize, TRUE); - i += StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_cast_lastRedirectingPartyName, tvb, i, StationMaxNameSize, TRUE); - i += StationMaxNameSize; - proto_tree_add_item(skinny_tree, hf_cast_lastRedirectingParty, tvb, i, StationMaxDirnumSize, TRUE); - i += StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_cast_originalCdpnRedirectReason, tvb, i, 4, TRUE); - i += 4; - proto_tree_add_item(skinny_tree, hf_cast_lastRedirectingReason, tvb, i, 4, TRUE); - i += 4; - proto_tree_add_item(skinny_tree, hf_cast_cgpnVoiceMailbox, tvb, i, StationMaxDirnumSize, TRUE); - i += StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_cast_cdpnVoiceMailbox, tvb, i, StationMaxDirnumSize, TRUE); - i += StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_cast_originalCdpnVoiceMailbox, tvb, i, StationMaxDirnumSize, TRUE); - i += StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_cast_lastRedirectingVoiceMailbox, tvb, i, StationMaxDirnumSize, TRUE); - i += StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_cast_callInstance, tvb, i, 4, TRUE); - i += 4; - proto_tree_add_item(skinny_tree, hf_cast_callSecurityStatus, tvb, i, 4, TRUE); - i += 4; - val = tvb_get_letohl( tvb, i); - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "partyPIRestrictionBits"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_text(skinny_sub_tree, tvb, i, 4, - decode_boolean_bitfield( val, 0x01, 4*8, "Does RestrictCallingPartyName", "Doesn't RestrictCallingPartyName")); - proto_tree_add_text(skinny_sub_tree, tvb, i, 4, - decode_boolean_bitfield( val, 0x02, 4*8, "Does RestrictCallingPartyNumber", "Doesn't RestrictCallingPartyNumber")); - proto_tree_add_text(skinny_sub_tree, tvb, i, 4, - decode_boolean_bitfield( val, 0x04, 4*8, "Does RestrictCalledPartyName", "Doesn't RestrictCalledPartyName")); - proto_tree_add_text(skinny_sub_tree, tvb, i, 4, - decode_boolean_bitfield( val, 0x08, 4*8, "Does RestrictCalledPartyNumber", "Doesn't RestrictCalledPartyNumber")); - proto_tree_add_text(skinny_sub_tree, tvb, i, 4, - decode_boolean_bitfield( val, 0x10, 4*8, "Does RestrictOriginalCalledPartyName", "Doesn't RestrictOriginalCalledPartyName")); - proto_tree_add_text(skinny_sub_tree, tvb, i, 4, - decode_boolean_bitfield( val, 0x20, 4*8, "Does RestrictOriginalCalledPartyNumber", "Doesn't RestrictOriginalCalledPartyNumber")); - proto_tree_add_text(skinny_sub_tree, tvb, i, 4, - decode_boolean_bitfield( val, 0x40, 4*8, "Does RestrictLastRedirectPartyName", "Doesn't RestrictLastRedirectPartyName")); - proto_tree_add_text(skinny_sub_tree, tvb, i, 4, - decode_boolean_bitfield( val, 0x80, 4*8, "Does RestrictLastRedirectPartyNumber", "Doesn't RestrictLastRedirectPartyNumber")); - break; - - case 0x90 : /* forwardStat */ - proto_tree_add_item(skinny_tree, hf_skinny_activeForward, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineNumber, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_forwardAllActive, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_forwardNumber, tvb, offset+24, StationMaxDirnumSize, TRUE); - i = offset+24+StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_skinny_forwardBusyActive, tvb, i, 4, TRUE); - i += 4; - proto_tree_add_item(skinny_tree, hf_skinny_forwardNumber, tvb, i, StationMaxDirnumSize, TRUE); - i += StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_skinny_forwardNoAnswerActive, tvb, i, 4, TRUE); - i += 4; - proto_tree_add_item(skinny_tree, hf_skinny_forwardNumber, tvb, i, StationMaxDirnumSize, TRUE); - break; - - case 0x91 : /* speedDialStatMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_speedDialNumber, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_speedDialDirNumber, tvb, offset+16, StationMaxDirnumSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_speedDialDisplayName, tvb, offset+40, StationMaxNameSize, TRUE); - break; - - case 0x92 : /* lineStatMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_lineNumber, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineDirNumber, tvb, offset+16, StationMaxDirnumSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineFullyQualifiedDisplayName, tvb, offset+16+StationMaxDirnumSize, StationMaxNameSize, TRUE); - break; - - case 0x93 : /* configStat */ - proto_tree_add_item(skinny_tree, hf_skinny_deviceName, tvb, offset+12, StationMaxDeviceNameSize, TRUE); - i = offset+12+StationMaxDeviceNameSize; - proto_tree_add_item(skinny_tree, hf_skinny_stationUserId, tvb, i, 4, TRUE); - i += 4; - proto_tree_add_item(skinny_tree, hf_skinny_stationInstance, tvb, i, 4, TRUE); - i += 4; - proto_tree_add_item(skinny_tree, hf_skinny_userName, tvb, i, StationMaxNameSize, TRUE); - i += StationMaxNameSize; - proto_tree_add_item(skinny_tree, hf_skinny_serverName, tvb, i, StationMaxNameSize, TRUE); - i += StationMaxNameSize; - proto_tree_add_item(skinny_tree, hf_skinny_numberLines, tvb, i, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_numberSpeedDials, tvb, i+4, 4, TRUE); - break; - - case 0x94 : /* stationDefineTimeDate */ - proto_tree_add_item(skinny_tree, hf_skinny_dateYear, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_dateMonth, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_dayOfWeek, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_dateDay, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_dateHour, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_dateMinute, tvb, offset+32, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_dateSeconds,tvb, offset+36, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_dateMilliseconds,tvb, offset+40, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_timeStamp, tvb, offset+44, 4, TRUE); - break; - - case 0x95 : /* startSessionTransmission */ - proto_tree_add_item(skinny_tree, hf_skinny_remoteIpAddr, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_sessionType, tvb, offset+16, 4, TRUE); - break; - - case 0x96 : /* stopSessionTransmission */ - proto_tree_add_item(skinny_tree, hf_skinny_remoteIpAddr, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_sessionType, tvb, offset+16, 4, TRUE); - break; - - case 0x97 : /* buttonTemplateMessage */ - /* - * FIXME - * This decode prints out oogly subtree maybe? or something besides the VALS... - * note to self: uint8 != 4 kk thx info ^_^ - * - */ - proto_tree_add_item(skinny_tree, hf_skinny_buttonOffset, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_buttonCount, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_totalButtonCount, tvb, offset+20, 4, TRUE); - for (i = 0; i < StationMaxButtonTemplateSize; i++) { - proto_tree_add_item(skinny_tree, hf_skinny_buttonInstanceNumber, tvb, offset+(i*2)+24, 1, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_buttonDefinition, tvb, offset+(i*2)+25, 1, TRUE); - } - break; - - case 0x98 : /* version */ - proto_tree_add_item(skinny_tree, hf_skinny_version, tvb, offset+12, StationMaxVersionSize, TRUE); - break; - - case 0x99 : /* displayTextMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_displayMessage, tvb, offset+12, StationMaxDisplayTextSize, TRUE); - break; - - case 0x9c : /* enunciatorCommand */ - proto_tree_add_item(skinny_tree, hf_skinny_mediaEnunciationType, tvb, offset+12, 4, TRUE); - for (i = 0; i < StationMaxDirnumSize; i++) { - proto_tree_add_item(skinny_tree, hf_skinny_unknown, tvb, offset+16+(i*4), 4, TRUE); - } - i = offset+16+StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_skinny_mediaEnunciationType, tvb, i, 4, TRUE); - break; - - case 0x9d : /* stationRegisterReject */ - proto_tree_add_item(skinny_tree, hf_skinny_displayMessage, tvb, offset+12, StationMaxDisplayTextSize, TRUE); - break; - - case 0x9e : /* serverRes */ - for (i = 0; i < StationMaxServers; i++) { - proto_tree_add_item(skinny_tree, hf_skinny_serverIdentifier, tvb, offset+12+(i*StationMaxServers), StationMaxServerNameSize, TRUE); - } - j = offset+12+(i*StationMaxServers); - for (i = 0; i < StationMaxServers; i++) { - proto_tree_add_item(skinny_tree, hf_skinny_serverListenPort, tvb, j+(i*4), 4, TRUE); - } - j = j+(i*4); - for (i = 0; i < StationMaxServers; i++) { - proto_tree_add_item(skinny_tree, hf_skinny_serverIpAddress, tvb, j+(i*4), 4, TRUE); - } - break; - - case 0x9f : /* reset */ - proto_tree_add_item(skinny_tree, hf_skinny_deviceResetType, tvb, offset+12, 4, TRUE); - break; - - case 0x101 : /* startMulticastMediaReception*/ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_multicastIpAddress, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_multicastPort, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_millisecondPacketSize, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+32, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_echoCancelType, tvb, offset+36, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_g723BitRate, tvb, offset+40, 4, TRUE); - break; - - case 0x102 : /* startMulticateMediaTermination*/ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_multicastIpAddress, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_multicastPort, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_millisecondPacketSize, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+32, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_precedenceValue, tvb, offset+36, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_silenceSuppression, tvb, offset+40, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_maxFramesPerPacket, tvb, offset+44, 2, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_g723BitRate, tvb, offset+48, 4, TRUE); - break; - - case 0x103 : /* stopMulticastMediaReception*/ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - break; - - case 0x104 : /* stopMulticastMediaTermination*/ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - break; - - case 0x105 : /* open receive channel */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_millisecondPacketSize, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_echoCancelType, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_g723BitRate, tvb, offset+32, 4, TRUE); - break; - - case 0x106 : /* closeReceiveChannel */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - break; - - case 0x107 : /* connectionStatisticsReq */ - - i = 12; - proto_tree_add_item(skinny_tree, hf_skinny_directoryNumber, tvb, i, StationMaxDirnumSize, TRUE); - i = 12 + StationMaxDirnumSize; - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, i, 4, TRUE); - i = i+4; - proto_tree_add_item(skinny_tree, hf_skinny_statsProcessingType, tvb, i, 4, TRUE); - break; - - case 0x108 : /* softkeyTemplateResMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_softKeyOffset, tvb, offset+12, 4, TRUE); - softKeyCount = tvb_get_letohl(tvb, offset+16); - proto_tree_add_uint(skinny_tree, hf_skinny_softKeyCount, tvb, offset+16, 4, softKeyCount); - proto_tree_add_item(skinny_tree, hf_skinny_totalSoftKeyCount, tvb, offset+20, 4, TRUE); - for (i = 0; ((i < StationMaxSoftKeyDefinition) && (i < softKeyCount)); i++){ - proto_tree_add_item(skinny_tree, hf_skinny_softKeyLabel, tvb, offset+(i*20)+24, StationMaxSoftKeyLabelSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_softKeyEvent, tvb, offset+(i*20)+40, 4, TRUE); - } - /* there is more data here, but it doesn't make a whole lot of sense, I imagine - * it's just some not zero'd out stuff in the packet or... - */ - break; - - case 0x109 : /* softkeysetres */ - proto_tree_add_item(skinny_tree, hf_skinny_softKeySetOffset, tvb, offset+12, 4, TRUE); - softKeySetCount = tvb_get_letohl(tvb, offset+16); - proto_tree_add_uint(skinny_tree, hf_skinny_softKeySetCount, tvb, offset+16, 4, softKeySetCount); - proto_tree_add_item(skinny_tree, hf_skinny_totalSoftKeySetCount, tvb, offset+20, 4, TRUE); - for (i = 0; ((i < StationMaxSoftKeySetDefinition) && (i < softKeySetCount)); i++) { - proto_tree_add_uint(skinny_tree, hf_skinny_softKeySetDescription, tvb, offset+24+(i*48) , 1, i); - for (j = 0; j < StationMaxSoftKeyIndex; j++) { - proto_tree_add_item(skinny_tree, hf_skinny_softKeyTemplateIndex, tvb, offset+24+(i*48)+j, 1, TRUE); - } - for (j = 0; j < StationMaxSoftKeyIndex; j++) { - proto_tree_add_item(skinny_tree, hf_skinny_softKeyInfoIndex, tvb, offset+24+(i*48)+StationMaxSoftKeyIndex+(j*2), 2, TRUE); - } - } - break; - - case 0x110 : /* selectSoftKeys */ - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_softKeySetDescription, tvb, offset+20, 4, TRUE); - validKeyMask = tvb_get_letohs(tvb, offset + 24); - skm = proto_tree_add_uint(skinny_tree, hf_skinny_softKeyMap, tvb, offset + 24, 1, validKeyMask); - skm_tree = proto_item_add_subtree(skm, ett_skinny_softKeyMap); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey0, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey1, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey2, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey3, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey4, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey5, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey6, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey7, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey8, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey9, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey10, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey11, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey12, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey13, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey14, tvb, offset + 24, 1, validKeyMask); - proto_tree_add_boolean(skm_tree, hf_skinny_softKey15, tvb, offset + 24, 1, validKeyMask); - break; - - case 0x111 : /* callState */ - proto_tree_add_item(skinny_tree, hf_skinny_callState, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - break; - - case 0x112 : /* displayPromptStatus */ - proto_tree_add_item(skinny_tree, hf_skinny_messageTimeOutValue, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_displayMessage, tvb, offset+16, StationMaxDisplayPromptStatusSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+48, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+52, 4, TRUE); - break; - - case 0x113: /* clearPrompt */ - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance , tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, TRUE); - break; - - case 0x114 : /* displayNotify */ - proto_tree_add_item(skinny_tree, hf_skinny_messageTimeOutValue, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_displayMessage, tvb, offset+16, StationMaxDisplayNotifySize , TRUE); - break; - - case 0x116 : /* activateCallPlane */ - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+12, 4, TRUE); - break; - - case 0x118 : /* unregisterAckMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_deviceUnregisterStatus, tvb, offset+12, 4, TRUE); - break; - - case 0x119 : /* backSpaceReq */ - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, TRUE); - break; - - case 0x11B : /* registerTokenReject */ - proto_tree_add_item(skinny_tree, hf_skinny_tokenRejWaitTime, tvb, offset+12, 4, TRUE); - break; - - case 0x11C : /* StartMediaFailureDetection */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_millisecondPacketSize, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_echoCancelType, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_g723BitRate, tvb, offset+32, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+34, 4, TRUE); - break; - - case 0x11D : /* DialedNumberMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_calledParty, tvb, offset+12, StationMaxDirnumSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+16+StationMaxDirnumSize, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20+StationMaxDirnumSize, 4, TRUE); - break; - - case 0x11E : /* UserToDeviceDataMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_applicationID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_transactionID, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_data_length, tvb, offset+28, 4, TRUE); - count = tvb_get_letohl( tvb, offset+28); - proto_tree_add_uint(skinny_tree, hf_skinny_data, tvb, offset+30, 1, count); - break; - - case 0x11F : /* FeatureStatMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_featureIndex, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_featureID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_featureTextLabel, tvb, offset+20, StationMaxNameSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_featureStatus, tvb, offset+20+StationMaxNameSize, 4, TRUE); - break; - - case 0x120 : /* DisplayPriNotifyMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_messageTimeOutValue, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_priority, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_notify, tvb, offset+16, StationMaxDisplayNotifySize, TRUE); - break; - - case 0x121 : /* ClearPriNotifyMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_priority, tvb, offset+12, 4, TRUE); - break; - - case 0x122 : /* StartAnnouncementMessage */ - count = offset+12; - for ( i = 0; i < MaxAnnouncementList; i++ ) { - proto_tree_add_item(skinny_tree, hf_skinny_locale, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_tree, hf_skinny_country, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_tree, hf_skinny_deviceTone, tvb, count, 4, TRUE); - count += 4; - } - proto_tree_add_item(skinny_tree, hf_skinny_endOfAnnAck, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, count, 4, TRUE); - count += 4; - - for ( i = 0; i < StationMaxMonitorParties; i++ ) { - proto_tree_add_item(skinny_tree, hf_skinny_matrixConfPartyID, tvb, count, 4, TRUE); - count += 4; - } - proto_tree_add_item(skinny_tree, hf_skinny_hearingConfPartyMask, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_tree, hf_skinny_annPlayMode, tvb, count, 4, TRUE); - break; - - case 0x123 : /* StopAnnouncementMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - break; - - case 0x124 : /* AnnouncementFinishMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_annPlayStatus, tvb, offset+16, 4, TRUE); - break; - - case 0x127 : /* NotifyDtmfToneMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_deviceTone, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+20, 4, TRUE); - break; - - case 0x128 : /* SendDtmfToneMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_deviceTone, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+20, 4, TRUE); - break; - - case 0x129 : /* SubscribeDtmfPayloadReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_payloadDtmf, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+20, 4, TRUE); - break; - - case 0x12A : /* SubscribeDtmfPayloadResMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_payloadDtmf, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+20, 4, TRUE); - break; - - case 0x12B : /* SubscribeDtmfPayloadErrMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_payloadDtmf, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+20, 4, TRUE); - break; - - case 0x12C : /* UnSubscribeDtmfPayloadReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_payloadDtmf, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+20, 4, TRUE); - break; - - case 0x12D : /* UnSubscribeDtmfPayloadResMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_payloadDtmf, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+20, 4, TRUE); - break; - - case 0x12E : /* UnSubscribeDtmfPayloadErrMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_payloadDtmf, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+20, 4, TRUE); - break; - - case 0x12F : /* ServiceURLStatMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_serviceURLIndex, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_serviceURL, tvb, offset+12, StationMaxServiceURLSize, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_serviceURLDisplayName, tvb, offset+12, StationMaxNameSize, TRUE); - break; - - case 0x130 : /* CallSelectStatMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_callSelectStat, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+20, 4, TRUE); - break; - - case 0x131 : /* OpenMultiMediaChannelMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payload_rfc_number, tvb, offset+32, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payloadType, tvb, offset+36, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_isConferenceCreator, tvb, offset+40, 4, TRUE); - - /* add audio part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 12, "audioParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_millisecondPacketSize, tvb, offset+44, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_echoCancelType, tvb, offset+48, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_g723BitRate, tvb, offset+52, 4, TRUE); - - /* add video part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 30, "vidParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_bitRate, tvb, offset+44, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureFormatCount, tvb, offset+48, 4, TRUE); - skinny_sub_tree_sav = skinny_sub_tree; - count = offset+52; - for ( i = 0; i < MAX_PICTURE_FORMAT; i++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, "pictureFormat[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_format, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_MPI, tvb, count, 4, TRUE); - count += 4; - } - skinny_sub_tree = skinny_sub_tree_sav; - proto_tree_add_item(skinny_sub_tree, hf_skinny_confServiceNum, tvb, count, 4, TRUE); - count += 4; - - val = count; - /* add H261 part of union */ - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, TRUE); - - /* add H263 part of union */ - count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, TRUE); - - /* add Vieo part of union */ - count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, TRUE); - - /* add data part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "dataParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_protocolDependentData, tvb, offset+44, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBitRate, tvb, offset+48, 4, TRUE); - break; - - case 0x132 : /* StartMultiMediaTransmission */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payloadCapability, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_ipAddress, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_portNumber, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+32, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payload_rfc_number, tvb, offset+36, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_payloadType, tvb, offset+40, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_DSCPValue, tvb, offset+44, 4, TRUE); - - /* add audio part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 12, "audioParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_millisecondPacketSize, tvb, offset+48, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_echoCancelType, tvb, offset+52, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_g723BitRate, tvb, offset+56, 4, TRUE); - - /* add video part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 30, "vidParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_bitRate, tvb, offset+48, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureFormatCount, tvb, offset+52, 4, TRUE); - skinny_sub_tree_sav = skinny_sub_tree; - count = offset+56; - for ( i = 0; i < MAX_PICTURE_FORMAT; i++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8 * MAX_PICTURE_FORMAT, "pictureFormat[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_format, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_MPI, tvb, count, 4, TRUE); - count += 4; - } - skinny_sub_tree = skinny_sub_tree_sav; - proto_tree_add_item(skinny_sub_tree, hf_skinny_confServiceNum, tvb, count, 4, TRUE); - count += 4; - - val = count; - /* add H261 part of union */ - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h261VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOffCapability, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_stillImageTransmission, tvb, count, 4, TRUE); - - /* add H263 part of union */ - count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "h263VideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_h263_capability_bitfield, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_annexNandWFutureUse, tvb, count, 4, TRUE); - - /* add Vieo part of union */ - count = val; - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "vieoVideoCapability"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_modelNumber, tvb, count, 4, TRUE); - count += 4; - proto_tree_add_item(skinny_sub_tree, hf_skinny_bandwidth, tvb, count, 4, TRUE); - - /* add data part of union */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "dataParameters"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_protocolDependentData, tvb, offset+48, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_maxBitRate, tvb, offset+52, 4, TRUE); - break; - - case 0x133 : /* StopMultiMediaTransmission */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - break; - - case 0x134 : /* MiscellaneousCommandMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_miscCommandType, tvb, offset+24, 4, TRUE); - - /* show videoFreezePicture */ - /* not sure of format */ - - /* show videoFastUpdatePicture */ - /* not sure of format */ - - /* show videoFastUpdateGOB */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "videoFastUpdateGOB"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_firstGOB, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_numberOfGOBs, tvb, offset+32, 4, TRUE); - - /* show videoFastUpdateMB */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "videoFastUpdateGOB"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_firstGOB, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_firstMB, tvb, offset+32, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_numberOfMBs, tvb, offset+36, 4, TRUE); - - /* show lostPicture */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "lostPicture"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureNumber, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_longTermPictureIndex, tvb, offset+32, 4, TRUE); - - /* show lostPartialPicture */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "lostPartialPicture"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureNumber, tvb, offset+28, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_longTermPictureIndex, tvb, offset+32, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_firstMB, tvb, offset+36, 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_numberOfMBs, tvb, offset+40, 4, TRUE); - - /* show recoveryReferencePicture */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 8, "recoveryReferencePicture"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_recoveryReferencePictureCount, tvb, offset+28, 4, TRUE); - skinny_sub_tree_sav = skinny_sub_tree; - for ( i = 0; i < MAX_REFERENCE_PICTURE; i++ ) { - ti_sub = proto_tree_add_text(skinny_sub_tree_sav, tvb, offset, 8, "recoveryReferencePicture[%d]", i); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_pictureNumber, tvb, offset+32+(i*8), 4, TRUE); - proto_tree_add_item(skinny_sub_tree, hf_skinny_longTermPictureIndex, tvb, offset+36+(i*8), 4, TRUE); - } - - /* show temporalSpatialTradeOff */ - ti_sub = proto_tree_add_text(skinny_tree, tvb, offset, 4, "temporalSpatialTradeOff"); - skinny_sub_tree = proto_item_add_subtree(ti_sub, ett_skinny_tree); - proto_tree_add_item(skinny_sub_tree, hf_skinny_temporalSpatialTradeOff, tvb, offset+28, 4, TRUE); - break; - - case 0x135 : /* FlowControlCommandMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_maxBitRate, tvb, offset+24, 4, TRUE); - break; - - case 0x136 : /* CloseMultiMediaReceiveChannel */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_passThruPartyID, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - break; - - case 0x137 : /* CreateConferenceReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_numberOfReservedParticipants, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_resourceTypes, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_appID, tvb, offset+20, 4, TRUE); - count = offset+24; - proto_tree_add_uint(skinny_tree, hf_skinny_appConfID, tvb, count, 1, AppConferenceIDSize); - count += AppConferenceIDSize; - proto_tree_add_uint(skinny_tree, hf_skinny_appData, tvb, count, 1, AppDataSize); - count += AppDataSize; - proto_tree_add_item(skinny_tree, hf_skinny_data_length, tvb, count, 4, TRUE); - val = tvb_get_letohl( tvb, count); - count += 4; - proto_tree_add_uint(skinny_tree, hf_skinny_passThruData, tvb, count, 1, val); - break; - - case 0x138 : /* DeleteConferenceReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - break; - - case 0x139 : /* ModifyConferenceReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_numberOfReservedParticipants, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_appID, tvb, offset+20, 4, TRUE); - count = offset+24; - proto_tree_add_uint(skinny_tree, hf_skinny_appConfID, tvb, count, 1, AppConferenceIDSize); - count += AppConferenceIDSize; - proto_tree_add_uint(skinny_tree, hf_skinny_appData, tvb, count, 1, AppDataSize); - count += AppDataSize; - proto_tree_add_item(skinny_tree, hf_skinny_data_length, tvb, count, 4, TRUE); - val = tvb_get_letohl( tvb, count); - count += 4; - proto_tree_add_uint(skinny_tree, hf_skinny_passThruData, tvb, count, 1, val); - break; - - case 0x13A : /* AddParticipantReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, TRUE); - break; - - case 0x13B : /* DropParticipantReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+16, 4, TRUE); - break; - - case 0x13D : /* AuditParticipantReqMessage */ - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+12, 4, TRUE); - break; - - case 0x13F : /* UserToDeviceDataVersion1Message */ - proto_tree_add_item(skinny_tree, hf_skinny_applicationID, tvb, offset+12, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+16, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_transactionID, tvb, offset+24, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_data_length, tvb, offset+28, 4, TRUE); - count = tvb_get_letohl( tvb, offset+28); - proto_tree_add_item(skinny_tree, hf_skinny_sequenceFlag, tvb, offset+30, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_displayPriority, tvb, offset+34, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_conferenceID, tvb, offset+38, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_appInstanceID, tvb, offset+42, 4, TRUE); - proto_tree_add_item(skinny_tree, hf_skinny_routingID, tvb, offset+46, 4, TRUE); - proto_tree_add_uint(skinny_tree, hf_skinny_data, tvb, offset+50, 1, count); - break; - - - default: - break; - } - } -} - -/* Code to actually dissect the packets */ -static void dissect_skinny(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) -{ - /* The general structure of a packet: {IP-Header|TCP-Header|n*SKINNY} - * SKINNY-Packet: {Header(Size, Reserved)|Data(MessageID, Message-Data)} - */ - /* Header fields */ - volatile guint32 hdr_data_length; - guint32 hdr_reserved; - - /* check, if this is really an SKINNY packet, they start with a length + 0 */ - - /* get relevant header information */ - hdr_data_length = tvb_get_letohl(tvb, 0); - hdr_reserved = tvb_get_letohl(tvb, 4); - - /* data_size = MIN(8+hdr_data_length, tvb_length(tvb)) - 0xC; */ - - if (hdr_data_length < 4 || hdr_reserved != 0) { - /* Not an SKINNY packet, just happened to use the same port */ - call_dissector(data_handle,tvb, pinfo, tree); - return; - } - - /* Make entries in Protocol column and Info column on summary display */ - if (check_col(pinfo->cinfo, COL_PROTOCOL)) { - col_set_str(pinfo->cinfo, COL_PROTOCOL, "SKINNY"); - } - - if (check_col(pinfo->cinfo, COL_INFO)) { - 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); -} - -/* Register the protocol with Ethereal */ -void -proto_register_skinny(void) -{ - - /* Setup list of header fields */ - static hf_register_info hf[] = { - { &hf_skinny_data_length, - { "Data Length", "skinny.data_length", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Number of bytes in the data portion.", - HFILL } - }, - { &hf_skinny_reserved, - { "Reserved", "skinny.reserved", - FT_UINT32, BASE_HEX, NULL, 0x0, - "Reserved for future(?) use.", - HFILL } - }, - /* FIXME: Enable use of message name ??? */ - { &hf_skinny_messageid, - { "Message ID", "skinny.messageid", - FT_UINT32, BASE_HEX, VALS(message_id), 0x0, - "The function requested/done with this message.", - HFILL } - }, - - { &hf_skinny_deviceName, - { "DeviceName", "skinny.deviceName", - FT_STRING, BASE_NONE, NULL, 0x0, - "The device name of the phone.", - HFILL } - }, - - { &hf_skinny_stationUserId, - { "StationUserId", "skinny.stationUserId", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The station user id.", - HFILL } - }, - - { &hf_skinny_stationInstance, - { "StationInstance", "skinny.stationInstance", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The stations instance.", - HFILL } - }, - - { &hf_skinny_deviceType, - { "DeviceType", "skinny.deviceType", - FT_UINT32, BASE_DEC, VALS(deviceTypes), 0x0, - "DeviceType of the station.", - HFILL } - }, - - { &hf_skinny_maxStreams, - { "MaxStreams", "skinny.maxStreams", - FT_UINT32, BASE_DEC, NULL, 0x0, - "32 bit unsigned integer indicating the maximum number of simultansous RTP duplex streams that the client can handle.", - HFILL } - }, - - { &hf_skinny_stationIpPort, - { "StationIpPort", "skinny.stationIpPort", - FT_UINT16, BASE_DEC, NULL, 0x0, - "The station IP port", - HFILL } - }, - - { &hf_skinny_stationKeypadButton, - { "KeypadButton", "skinny.stationKeypadButton", - FT_UINT32, BASE_HEX, VALS(keypadButtons), 0x0, - "The button pressed on the phone.", - HFILL } - }, - - { &hf_skinny_calledParty, - { "CalledParty", "skinny.calledParty", - FT_STRING, BASE_NONE, NULL, 0x0, - "The number called.", - HFILL } - }, - - { &hf_skinny_stimulus, - { "Stimulus", "skinny.stimulus", - FT_UINT32, BASE_HEX, VALS(deviceStimuli), 0x0, - "Reason for the device stimulus message.", - HFILL } - }, - - { &hf_skinny_stimulusInstance, - { "StimulusInstance", "skinny.stimulusInstance", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The instance of the stimulus", - HFILL } - }, - - { &hf_skinny_lineNumber, - { "LineNumber", "skinny.lineNumber", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Line Number", - HFILL } - }, - - { &hf_skinny_speedDialNumber, - { "SpeedDialNumber", "skinny.speedDialNumber", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Which speed dial number", - HFILL } - }, - - { &hf_skinny_capCount, - { "CapCount", "skinny.capCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "How many capabilities", - HFILL } - }, - - { &hf_skinny_payloadCapability, - { "PayloadCapability", "skinny.payloadCapability", - FT_UINT32, BASE_DEC, VALS(mediaPayloads), 0x0, - "The payload capability for this media capability structure.", - HFILL } - }, - - { &hf_skinny_maxFramesPerPacket, - { "MaxFramesPerPacket", "skinny.maxFramesPerPacket", - FT_UINT16, BASE_DEC, NULL, 0x0, - "Max frames per packet", - HFILL } - }, - - { &hf_skinny_alarmSeverity, - { "AlarmSeverity", "skinny.alarmSeverity", - FT_UINT32, BASE_DEC, VALS(alarmSeverities), 0x0, - "The severity of the reported alarm.", - HFILL } - }, - - { &hf_skinny_alarmParam1, - { "AlarmParam1", "skinny.alarmParam1", - FT_UINT32, BASE_HEX, NULL, 0x0, - "An as yet undecoded param1 value from the alarm message", - HFILL } - }, - - { &hf_skinny_alarmParam2, - { "AlarmParam2", "skinny.alarmParam2", - FT_IPv4, BASE_NONE, NULL, 0x0, - "This is the second alarm parameter i think it's an ip address", - HFILL } - }, - - { &hf_skinny_receptionStatus, - { "ReceptionStatus", "skinny.receptionStatus", - FT_UINT32, BASE_DEC, VALS(multicastMediaReceptionStatus), 0x0, - "The current status of the multicast media.", - HFILL } - }, - - { &hf_skinny_passThruPartyID, - { "PassThruPartyID", "skinny.passThruPartyID", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The pass thru party id", - HFILL } - }, - - { &hf_skinny_ORCStatus, - { "OpenReceiveChannelStatus", "skinny.openReceiveChannelStatus", - FT_UINT32, BASE_DEC, VALS(openReceiveChanStatus), 0x0, - "The status of the opened receive channel.", - HFILL } - }, - - { &hf_skinny_ipAddress, - { "IP Address", "skinny.ipAddress", - FT_IPv4, BASE_NONE, NULL, 0x0, - "An IP address", - HFILL } - }, - - { &hf_skinny_portNumber, - { "Port Number", "skinny.portNumber", - FT_UINT32, BASE_DEC, NULL, 0x0, - "A port number", - HFILL } - }, - - { &hf_skinny_statsProcessingType, - { "StatsProcessingType", "skinny.statsProcessingType", - FT_UINT32, BASE_DEC, VALS(statsProcessingTypes), 0x0, - "What do do after you send the stats.", - HFILL } - }, - - { &hf_skinny_callIdentifier, - { "Call Identifier", "skinny.callIdentifier", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Call identifier for this call.", - HFILL } - }, - - { &hf_skinny_packetsSent, - { "Packets Sent", "skinny.packetsSent", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Packets Sent during the call.", - HFILL } - }, - - { &hf_skinny_octetsSent, - { "Octets Sent", "skinny.octetsSent", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Octets sent during the call.", - HFILL } - }, - - { &hf_skinny_packetsRecv, - { "Packets Received", "skinny.packetsRecv", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Packets received during the call.", - HFILL } - }, - - { &hf_skinny_octetsRecv, - { "Octets Received", "skinny.octetsRecv", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Octets received during the call.", - HFILL } - }, - - { &hf_skinny_packetsLost, - { "Packets Lost", "skinny.packetsLost", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Packets lost during the call.", - HFILL } - }, - - { &hf_skinny_latency, - { "Latency(ms)", "skinny.latency", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Average packet latency during the call.", - HFILL } - }, - - { &hf_skinny_jitter, - { "Jitter", "skinny.jitter", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Average jitter during the call.", - HFILL } - }, - - { &hf_skinny_directoryNumber, - { "Directory Number", "skinny.directoryNumber", - FT_STRING, BASE_NONE, NULL, 0x0, - "The number we are reporting statistics for.", - HFILL } - }, - - { &hf_skinny_lineInstance, - { "Line Instance", "skinny.lineInstance", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The display call plane associated with this call.", - HFILL } - }, - - { &hf_skinny_softKeyEvent, - { "SoftKeyEvent", "skinny.softKeyEvent", - FT_UINT32, BASE_DEC, VALS(softKeyEvents), 0x0, - "Which softkey event is being reported.", - HFILL } - }, - - { &hf_skinny_keepAliveInterval, - { "KeepAliveInterval", "skinny.keepAliveInterval", - FT_UINT32, BASE_DEC, NULL, 0x0, - "How often are keep alives exchanges between the client and the call manager.", - HFILL } - }, - - { &hf_skinny_secondaryKeepAliveInterval, - { "SecondaryKeepAliveInterval", "skinny.secondaryKeepAliveInterval", - FT_UINT32, BASE_DEC, NULL, 0x0, - "How often are keep alives exchanges between the client and the secondary call manager.", - HFILL } - }, - - { &hf_skinny_dateTemplate, - { "DateTemplate", "skinny.dateTemplate", - FT_STRING, BASE_NONE, NULL, 0x0, - "The display format for the date/time on the phone.", - HFILL } - }, - - { &hf_skinny_buttonOffset, - { "ButtonOffset", "skinny.buttonOffset", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Offset is the number of the first button referenced by this message.", - HFILL } - }, - - { &hf_skinny_buttonCount, - { "ButtonCount", "skinny.buttonCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Number of (VALID) button definitions in this message.", - HFILL } - }, - - { &hf_skinny_totalButtonCount, - { "TotalButtonCount", "skinny.totalButtonCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The total number of buttons defined for this phone.", - HFILL } - }, - - { &hf_skinny_buttonInstanceNumber, - { "InstanceNumber", "skinny.buttonInstanceNumber", - FT_UINT8, BASE_HEX, VALS(keypadButtons), 0x0, - "The button instance number for a button or the StationKeyPad value, repeats allowed.", - HFILL } - }, - - { &hf_skinny_buttonDefinition, - { "ButtonDefinition", "skinny.buttonDefinition", - FT_UINT8, BASE_HEX, VALS(buttonDefinitions), 0x0, - "The button type for this instance (ie line, speed dial, ....", - HFILL } - }, - - { &hf_skinny_softKeyOffset, - { "SoftKeyOffset", "skinny.softKeyOffset", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The offset for the first soft key in this message.", - HFILL } - }, - - { &hf_skinny_softKeyCount, - { "SoftKeyCount", "skinny.softKeyCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The number of valid softkeys in this message.", - HFILL } - }, - - { &hf_skinny_totalSoftKeyCount, - { "TotalSoftKeyCount", "skinny.totalSoftKeyCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The total number of softkeys for this device.", - HFILL } - }, - - { &hf_skinny_softKeyLabel, - { "SoftKeyLabel", "skinny.softKeyLabel", - FT_STRING, BASE_NONE, NULL, 0x0, - "The text label for this soft key.", - HFILL } - }, - - { &hf_skinny_softKeySetOffset, - { "SoftKeySetOffset", "skinny.softKeySetOffset", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The offset for the first soft key set in this message.", - HFILL } - }, - - { &hf_skinny_softKeySetCount, - { "SoftKeySetCount", "skinny.softKeySetCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The number of valid softkey sets in this message.", - HFILL } - }, - - { &hf_skinny_totalSoftKeySetCount, - { "TotalSoftKeySetCount", "skinny.totalSoftKeySetCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The total number of softkey sets for this device.", - HFILL } - }, - - { &hf_skinny_softKeyTemplateIndex, - { "SoftKeyTemplateIndex", "skinny.softKeyTemplateIndex", - FT_UINT8, BASE_DEC, VALS(softKeyEvents), 0x0, - "Array of size 16 8-bit unsigned ints containing an index into the softKeyTemplate.", - HFILL } - }, - - { &hf_skinny_softKeyInfoIndex, - { "SoftKeyInfoIndex", "skinny.softKeyInfoIndex", - FT_UINT16, BASE_DEC, VALS(softKeyIndexes), 0x0, - "Array of size 16 16-bit unsigned integers containing an index into the soft key description information.", - HFILL } - }, - - { &hf_skinny_softKeySetDescription, - { "SoftKeySet", "skinny.softKeySetDescription", - FT_UINT8, BASE_DEC, VALS(keySetNames), 0x0, - "A text description of what this softkey when this softkey set is displayed", - HFILL } - }, - - { &hf_skinny_softKeyMap, - { "SoftKeyMap","skinny.softKeyMap", - FT_UINT16, BASE_HEX, NULL, 0x0, - "", - HFILL } - }, - - { &hf_skinny_softKey0, - { "SoftKey0", "skinny.softKeyMap.0", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY0, - "", - HFILL } - }, - - { &hf_skinny_softKey1, - { "SoftKey1", "skinny.softKeyMap.1", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY1, - "", - HFILL } - }, - - { &hf_skinny_softKey2, - { "SoftKey2", "skinny.softKeyMap.2", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY2, - "", - HFILL } - }, - - { &hf_skinny_softKey3, - { "SoftKey3", "skinny.softKeyMap.3", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY3, - "", - HFILL } - }, - - { &hf_skinny_softKey4, - { "SoftKey4", "skinny.softKeyMap.4", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY4, - "", - HFILL } - }, - - { &hf_skinny_softKey5, - { "SoftKey5", "skinny.softKeyMap.5", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY5, - "", - HFILL } - }, - - { &hf_skinny_softKey6, - { "SoftKey6", "skinny.softKeyMap.6", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY6, - "", - HFILL } - }, - - { &hf_skinny_softKey7, - { "SoftKey7", "skinny.softKeyMap.7", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY7, - "", - HFILL } - }, - - { &hf_skinny_softKey8, - { "SoftKey8", "skinny.softKeyMap.8", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY8, - "", - HFILL } - }, - - { &hf_skinny_softKey9, - { "SoftKey9", "skinny.softKeyMap.9", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY9, - "", - HFILL } - }, - - { &hf_skinny_softKey10, - { "SoftKey10", "skinny.softKeyMap.10", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY10, - "", - HFILL } - }, - - { &hf_skinny_softKey11, - { "SoftKey11", "skinny.softKeyMap.11", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY11, - "", - HFILL } - }, - - { &hf_skinny_softKey12, - { "SoftKey12", "skinny.softKeyMap.12", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY12, - "", - HFILL } - }, - - { &hf_skinny_softKey13, - { "SoftKey13", "skinny.softKeyMap.13", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY13, - "", - HFILL } - }, - - { &hf_skinny_softKey14, - { "SoftKey14", "skinny.softKeyMap.14", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY14, - "", - HFILL } - }, - - { &hf_skinny_softKey15, - { "SoftKey15", "skinny.softKeyMap.15", - FT_BOOLEAN, 16, TFS(&softKeyMapValues), SKINNY_SOFTKEY15, - "", - HFILL } - }, - - { &hf_skinny_lampMode, - { "LampMode", "skinny.lampMode", - FT_UINT32, BASE_DEC, VALS(stationLampModes), 0x0, - "The lamp mode", - HFILL } - }, - - { &hf_skinny_messageTimeOutValue, - { "Message Timeout", "skinny.messageTimeOutValue", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The timeout in seconds for this message", - HFILL } - }, - - { &hf_skinny_displayMessage, - { "DisplayMessage", "skinny.displayMessage", - FT_STRING, BASE_NONE, NULL, 0x0, - "The message displayed on the phone.", - HFILL } - }, - - { &hf_skinny_lineDirNumber, - { "Line Dir Number", "skinny.lineDirNumber", - FT_STRING, BASE_NONE, NULL, 0x0, - "The directory number for this line.", - HFILL } - }, - - { &hf_skinny_lineFullyQualifiedDisplayName, - { "DisplayName", "skinny.fqdn", - FT_STRING, BASE_NONE, NULL, 0x0, - "The full display name for this line.", - HFILL } - }, - - { &hf_skinny_speedDialDirNumber, - { "SpeedDial Number", "skinny.speedDialDirNum", - FT_STRING, BASE_NONE, NULL, 0x0, - "the number to dial for this speed dial.", - HFILL } - }, - - { &hf_skinny_speedDialDisplayName, - { "SpeedDial Display", "skinny.speedDialDisplay", - FT_STRING, BASE_NONE, NULL, 0x0, - "The text to display for this speed dial.", - HFILL } - }, - - { &hf_skinny_dateYear, - { "Year", "skinny.year", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The current year", - HFILL } - }, - - { &hf_skinny_dateMonth, - { "Month", "skinny.month", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The current month", - HFILL } - }, - - { &hf_skinny_dayOfWeek, - { "DayOfWeek", "skinny.dayOfWeek", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The day of the week", - HFILL } - }, - - { &hf_skinny_dateDay, - { "Day", "skinny.day", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The day of the current month", - HFILL } - }, - - { &hf_skinny_dateHour, - { "Hour", "skinny.hour", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Hour of the day", - HFILL } - }, - - { &hf_skinny_dateMinute, - { "Minute", "skinny.minute", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Minute", - HFILL } - }, - - { &hf_skinny_dateSeconds, - { "Seconds", "skinny.dateSeconds", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Seconds", - HFILL } - }, - - { &hf_skinny_dateMilliseconds, - { "Milliseconds", "skinny.dateMilliseconds", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Milliseconds", - HFILL } - }, - - { &hf_skinny_timeStamp, - { "Timestamp", "skinny.timeStamp", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Time stamp for the call reference", - HFILL } - }, - { &hf_skinny_callState, - { "CallState", "skinny.callState", - FT_UINT32, BASE_DEC, VALS(skinny_stationCallStates), 0x0, - "The D channel call state of the call", - HFILL } - }, - - { &hf_skinny_deviceTone, - { "Tone", "skinny.deviceTone", - FT_UINT32, BASE_HEX, VALS(skinny_deviceTones), 0x0, - "Which tone to play", - HFILL } - }, - - { &hf_skinny_callingPartyName, - { "Calling Party Name", "skinny.callingPartyName", - FT_STRING, BASE_NONE, NULL, 0x0, - "The passed name of the calling party.", - HFILL } - }, - - { &hf_skinny_callingParty, - { "Calling Party", "skinny.callingPartyName", - FT_STRING, BASE_NONE, NULL, 0x0, - "The passed number of the calling party.", - HFILL } - }, - - { &hf_skinny_calledPartyName, - { "Called Party Name", "skinny.calledPartyName", - FT_STRING, BASE_NONE, NULL, 0x0, - "The name of the party we are calling.", - HFILL } - }, - - { &hf_skinny_callType, - { "Call Type", "skinny.callType", - FT_UINT32, BASE_DEC, VALS(skinny_callTypes), 0x0, - "What type of call, in/out/etc", - HFILL } - }, - - { &hf_skinny_originalCalledPartyName, - { "Original Called Party Name", "skinny.originalCalledPartyName", - FT_STRING, BASE_NONE, NULL, 0x0, - "name of the original person who placed the call.", - HFILL } - }, - - { &hf_skinny_originalCalledParty, - { "Original Called Party", "skinny.originalCalledParty", - FT_STRING, BASE_NONE, NULL, 0x0, - "The number of the original calling party.", - HFILL } - }, - - { &hf_skinny_ringType, - { "Ring Type", "skinny.ringType", - FT_UINT32, BASE_HEX, VALS(skinny_ringTypes), 0x0, - "What type of ring to play", - HFILL } - }, - - { &hf_skinny_speakerMode, - { "Speaker", "skinny.speakerMode", - FT_UINT32, BASE_HEX, VALS(skinny_speakerModes), 0x0, - "This message sets the speaker mode on/off", - HFILL } - }, - - { &hf_skinny_remoteIpAddr, - { "Remote Ip Address", "skinny.remoteIpAddr", - FT_IPv4, BASE_NONE, NULL, 0x0, - "The remote end ip address for this stream", - HFILL } - }, - - { &hf_skinny_remotePortNumber, - { "Remote Port", "skinny.remotePortNumber", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The remote port number listening for this stream", - HFILL } - }, - - { &hf_skinny_millisecondPacketSize, - { "MS/Packet", "skinny.millisecondPacketSize", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The number of milliseconds of conversation in each packet", - HFILL } - }, - - { &hf_skinny_precedenceValue, - { "Precedence", "skinny.precedenceValue", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Precedence value", - HFILL } - }, - - { &hf_skinny_silenceSuppression, - { "Silence Suppression", "skinny.silenceSuppression", - FT_UINT32, BASE_HEX, VALS(skinny_silenceSuppressionModes), 0x0, - "Mode for silence suppression", - HFILL } - }, - - { &hf_skinny_g723BitRate, - { "G723 BitRate", "skinny.g723BitRate", - FT_UINT32, BASE_DEC, VALS(skinny_g723BitRates), 0x0, - "The G723 bit rate for this stream/JUNK if not g723 stream", - HFILL } - }, - - { &hf_skinny_conferenceID, - { "Conference ID", "skinny.conferenceID", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The conference ID", - HFILL } - }, - - { &hf_skinny_deviceResetType, - { "Reset Type", "skinny.deviceResetType", - FT_UINT32, BASE_DEC, VALS(skinny_deviceResetTypes), 0x0, - "How the devices it to be reset (reset/restart)", - HFILL } - }, - - { &hf_skinny_echoCancelType, - { "Echo Cancel Type", "skinny.echoCancelType", - FT_UINT32, BASE_DEC, VALS(skinny_echoCancelTypes), 0x0, - "Is echo cancelling enabled or not", - HFILL } - }, - - { &hf_skinny_deviceUnregisterStatus, - { "Unregister Status", "skinny.deviceUnregisterStatus", - FT_UINT32, BASE_DEC, VALS(skinny_deviceUnregisterStatusTypes), 0x0, - "The status of the device unregister request (*CAN* be refused)", - HFILL } - }, - - { &hf_skinny_hookFlashDetectMode, - { "Hook Flash Mode", "skinny.hookFlashDetectMode", - FT_UINT32, BASE_DEC, VALS(skinny_hookFlashDetectModes), 0x0, - "Which method to use to detect that a hook flash has occured", - HFILL } - }, - - { &hf_skinny_detectInterval, - { "HF Detect Interval", "skinny.detectInterval", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The number of milliseconds that determines a hook flash has occured", - HFILL } - }, - - { &hf_skinny_headsetMode, - { "Headset Mode", "skinny.headsetMode", - FT_UINT32, BASE_DEC, VALS(skinny_headsetModes), 0x0, - "Turns on and off the headset on the set", - HFILL } - }, - - { &hf_skinny_microphoneMode, - { "Microphone Mode", "skinny.microphoneMode", - FT_UINT32, BASE_DEC, VALS(skinny_microphoneModes), 0x0, - "Turns on and off the microphone on the set", - HFILL } - }, - - { &hf_skinny_activeForward, - { "Active Forward", "skinny.activeForward", - FT_UINT32, BASE_DEC, NULL, 0x0, - "This is non zero to indicate that a forward is active on the line", - HFILL } - }, - - { &hf_skinny_forwardAllActive, - { "Forward All", "skinny.forwardAllActive", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Forward all calls", - HFILL } - }, - - { &hf_skinny_forwardBusyActive, - { "Forward Busy", "skinny.forwardBusyActive", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Forward calls when busy", - HFILL } - }, - - { &hf_skinny_forwardNoAnswerActive, - { "Forward NoAns", "skinny.forwardNoAnswerActive", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Forward only when no answer", - HFILL } - }, - - { &hf_skinny_forwardNumber, - { "Forward Number", "skinny.forwardNumber", - FT_STRING, BASE_NONE, NULL, 0x0, - "The number to forward calls to.", - HFILL } - }, - - { &hf_skinny_userName, - { "Username", "skinny.userName", - FT_STRING, BASE_NONE, NULL, 0x0, - "Username for this device.", - HFILL } - }, - - { &hf_skinny_serverName, - { "Server Name", "skinny.serverName", - FT_STRING, BASE_NONE, NULL, 0x0, - "The server name for this device.", - HFILL } - }, - - { &hf_skinny_numberLines, - { "Number of Lines", "skinny.numberLines", - FT_UINT32, BASE_DEC, NULL, 0x0, - "How many lines this device has", - HFILL } - }, - - { &hf_skinny_numberSpeedDials, - { "Number of SpeedDials", "skinny.numberSpeedDials", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The number of speed dials this device has", - HFILL } - }, - - { &hf_skinny_sessionType, - { "Session Type", "skinny.sessionType", - FT_UINT32, BASE_DEC, VALS(skinny_sessionTypes), 0x0, - "The type of this session.", - HFILL } - }, - - { &hf_skinny_version, - { "Version", "skinny.version", - FT_STRING, BASE_NONE, NULL, 0x0, - "Version.", - HFILL } - }, - - { &hf_skinny_mediaEnunciationType, - { "Enunciation Type", "skinny.mediaEnunciationType", - FT_UINT32, BASE_DEC, VALS(skinny_mediaEnunciationTypes), 0x0, - "No clue.", - HFILL } - }, - - { &hf_skinny_serverIdentifier, - { "Server Identifier", "skinny.serverIdentifier", - FT_STRING, BASE_NONE, NULL, 0x0, - "Server Identifier.", - HFILL } - }, - - { &hf_skinny_serverListenPort, - { "Server Port", "skinny.serverListenPort", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The port the server listens on.", - HFILL } - }, - - { &hf_skinny_serverIpAddress, - { "Server Ip Address", "skinny.serverIpAddress", - FT_IPv4, BASE_NONE, NULL, 0x0, - "The IP address for this server", - HFILL } - }, - - { &hf_skinny_multicastPort, - { "Multicast Port", "skinny.multicastPort", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The multicast port the to listens on.", - HFILL } - }, - - { &hf_skinny_multicastIpAddress, - { "Multicast Ip Address", "skinny.multicastIpAddress", - FT_IPv4, BASE_NONE, NULL, 0x0, - "The multicast address for this conference", - HFILL } - }, - - { &hf_skinny_tokenRejWaitTime, - { "Retry Wait Time", "skinny.tokenRejWaitTime", - FT_UINT32, BASE_DEC, NULL, 0x0, - "The time to wait before retrying this token request.", - HFILL } - }, - - { &hf_skinny_unknown, - { "Data", "skinny.unknown", - FT_UINT32, BASE_HEX, NULL, 0x0, - "Place holder for unknown data.", - HFILL } - }, - - { &hf_skinny_data, - { "Data", "skinny.data", - FT_UINT8, BASE_HEX, NULL, 0x0, - "dataPlace holder for unknown data.", - HFILL } - }, - - { &hf_skinny_numberOfInServiceStreams, - { "NumberOfInServiceStreams", "skinny.numberOfInServiceStreams", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Number of in service streams.", - HFILL } - }, - - { &hf_skinny_maxStreamsPerConf, - { "MaxStreamsPerConf", "skinny.maxStreamsPerConf", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Maximum number of streams per conference.", - HFILL } - }, - - { &hf_skinny_numberOfOutOfServiceStreams, - { "NumberOfOutOfServiceStreams", "skinny.numberOfOutOfServiceStreams", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Number of out of service streams.", - HFILL } - }, - - { &hf_skinny_applicationID, - { "ApplicationID", "skinny.applicationID", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Application ID.", - HFILL } - }, - - { &hf_skinny_transactionID, - { "TransactionID", "skinny.transactionID", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Transaction ID.", - HFILL } - }, - - { &hf_skinny_serviceNum, - { "ServiceNum", "skinny.serviceNum", - FT_UINT32, BASE_DEC, NULL, 0x0, - "ServiceNum.", - HFILL } - }, - - { &hf_skinny_serviceURLIndex, - { "serviceURLIndex", "skinny.serviceURLIndex", - FT_UINT32, BASE_DEC, NULL, 0x0, - "serviceURLIndex.", - HFILL } - }, - - { &hf_skinny_featureIndex, - { "FeatureIndex", "skinny.featureIndex", - FT_UINT32, BASE_DEC, NULL, 0x0, - "FeatureIndex.", - HFILL } - }, - - { &hf_skinny_createConfResults, - { "CreateConfResults", "skinny.createConfResults", - FT_UINT32, BASE_DEC, VALS(skinny_createConfResults), 0x0, - "The create conference results", - HFILL } - }, - - { &hf_skinny_modifyConfResults, - { "ModifyConfResults", "skinny.modifyConfResults", - FT_UINT32, BASE_DEC, VALS(skinny_modifyConfResults), 0x0, - "The modify conference results", - HFILL } - }, - - { &hf_skinny_deleteConfResults, - { "DeleteConfResults", "skinny.deleteConfResults", - FT_UINT32, BASE_DEC, VALS(skinny_deleteConfResults), 0x0, - "The delete conference results", - HFILL } - }, - - { &hf_skinny_addParticipantResults, - { "AddParticipantResults", "skinny.addParticipantResults", - FT_UINT32, BASE_DEC, VALS(skinny_addParticipantResults), 0x0, - "The add conference participant results", - HFILL } - }, - - { &hf_skinny_passThruData, - { "PassThruData", "skinny.passThruData", - FT_UINT8, BASE_HEX, NULL, 0x0, - "Pass Through data.", - HFILL } - }, - - { &hf_skinny_auditParticipantResults, - { "AuditParticipantResults", "skinny.auditParticipantResults", - FT_UINT32, BASE_DEC, VALS(skinny_auditParticipantResults), 0x0, - "The audit participant results", - HFILL } - }, - - { &hf_skinny_last, - { "Last", "skinny.last", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Last.", - HFILL } - }, - - { &hf_skinny_numberOfEntries, - { "NumberOfEntries", "skinny.numberOfEntries", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Number of entries in list.", - HFILL } - }, - - { &hf_skinny_participantEntry, - { "ParticipantEntry", "skinny.participantEntry", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Participant Entry.", - HFILL } - }, - - { &hf_skinny_resourceTypes, - { "ResourceType", "skinny.resourceTypes", - FT_UINT32, BASE_DEC, VALS(skinny_resourceTypes), 0x0, - "Resource Type", - HFILL } - }, - - { &hf_skinny_numberOfReservedParticipants, - { "NumberOfReservedParticipants", "skinny.numberOfReservedParticipants", - FT_UINT32, BASE_DEC, NULL, 0x0, - "numberOfReservedParticipants.", - HFILL } - }, - - { &hf_skinny_numberOfActiveParticipants, - { "NumberOfActiveParticipants", "skinny.numberOfActiveParticipants", - FT_UINT32, BASE_DEC, NULL, 0x0, - "numberOfActiveParticipants.", - HFILL } - }, - - { &hf_skinny_appID, - { "AppID", "skinny.appID", - FT_UINT32, BASE_DEC, NULL, 0x0, - "AppID.", - HFILL } - }, - - { &hf_skinny_appData, - { "AppData", "skinny.appData", - FT_UINT8, BASE_HEX, NULL, 0x0, - "App data.", - HFILL } - }, - - { &hf_skinny_appConfID, - { "AppConfID", "skinny.appConfID", - FT_UINT8, BASE_HEX, NULL, 0x0, - "App Conf ID Data.", - HFILL } - }, - - { &hf_skinny_sequenceFlag, - { "SequenceFlag", "skinny.sequenceFlag", - FT_UINT32, BASE_DEC, VALS(skinny_sequenceFlags), 0x0, - "Sequence Flag", - HFILL } - }, - - { &hf_skinny_displayPriority, - { "DisplayPriority", "skinny.displayPriority", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Display Priority.", - HFILL } - }, - - { &hf_skinny_appInstanceID, - { "AppInstanceID", "skinny.appInstanceID", - FT_UINT32, BASE_DEC, NULL, 0x0, - "appInstanceID.", - HFILL } - }, - - { &hf_skinny_routingID, - { "routingID", "skinny.routingID", - FT_UINT32, BASE_DEC, NULL, 0x0, - "routingID.", - HFILL } - }, - - { &hf_skinny_audioCapCount, - { "AudioCapCount", "skinny.audioCapCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "AudioCapCount.", - HFILL } - }, - - { &hf_skinny_videoCapCount, - { "VideoCapCount", "skinny.videoCapCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "VideoCapCount.", - HFILL } - }, - - { &hf_skinny_dataCapCount, - { "DataCapCount", "skinny.dataCapCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "DataCapCount.", - HFILL } - }, - - { &hf_skinny_RTPPayloadFormat, - { "RTPPayloadFormat", "skinny.RTPPayloadFormat", - FT_UINT32, BASE_DEC, NULL, 0x0, - "RTPPayloadFormat.", - HFILL } - }, - - { &hf_skinny_customPictureFormatCount, - { "CustomPictureFormatCount", "skinny.customPictureFormatCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "CustomPictureFormatCount.", - HFILL } - }, - - { &hf_skinny_pictureWidth, - { "PictureWidth", "skinny.pictureWidth", - FT_UINT32, BASE_DEC, NULL, 0x0, - "PictureWidth.", - HFILL } - }, - - { &hf_skinny_pictureHeight, - { "PictureHeight", "skinny.pictureHeight", - FT_UINT32, BASE_DEC, NULL, 0x0, - "PictureHeight.", - HFILL } - }, - - { &hf_skinny_pixelAspectRatio, - { "PixelAspectRatio", "skinny.pixelAspectRatio", - FT_UINT32, BASE_DEC, NULL, 0x0, - "PixelAspectRatio.", - HFILL } - }, - - { &hf_skinny_clockConversionCode, - { "ClockConversionCode", "skinny.clockConversionCode", - FT_UINT32, BASE_DEC, NULL, 0x0, - "ClockConversionCode.", - HFILL } - }, - - { &hf_skinny_clockDivisor, - { "ClockDivisor", "skinny.clockDivisor", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Clock Divisor.", - HFILL } - }, - - { &hf_skinny_activeStreamsOnRegistration, - { "ActiveStreamsOnRegistration", "skinny.activeStreamsOnRegistration", - FT_UINT32, BASE_DEC, NULL, 0x0, - "ActiveStreamsOnRegistration.", - HFILL } - }, - - { &hf_skinny_maxBW, - { "MaxBW", "skinny.maxBW", - FT_UINT32, BASE_DEC, NULL, 0x0, - "MaxBW.", - HFILL } - }, - - { &hf_skinny_serviceResourceCount, - { "ServiceResourceCount", "skinny.serviceResourceCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "ServiceResourceCount.", - HFILL } - }, - - { &hf_skinny_layoutCount, - { "LayoutCount", "skinny.layoutCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "LayoutCount.", - HFILL } - }, - - { &hf_skinny_layout, - { "Layout", "skinny.layout", - FT_UINT32, BASE_DEC, VALS(skinny_Layouts), 0x0, - "Layout", - HFILL } - }, - - { &hf_skinny_maxConferences, - { "MaxConferences", "skinny.maxConferences", - FT_UINT32, BASE_DEC, NULL, 0x0, - "MaxConferences.", - HFILL } - }, - - { &hf_skinny_activeConferenceOnRegistration, - { "ActiveConferenceOnRegistration", "skinny.activeConferenceOnRegistration", - FT_UINT32, BASE_DEC, NULL, 0x0, - "ActiveConferenceOnRegistration.", - HFILL } - }, - - { &hf_skinny_transmitOrReceive, - { "TransmitOrReceive", "skinny.transmitOrReceive", - FT_UINT32, BASE_DEC, VALS(skinny_transmitOrReceive), 0x0, - "TransmitOrReceive", - HFILL } - }, - - { &hf_skinny_levelPreferenceCount, - { "LevelPreferenceCount", "skinny.levelPreferenceCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "LevelPreferenceCount.", - HFILL } - }, - - { &hf_skinny_transmitPreference, - { "TransmitPreference", "skinny.transmitPreference", - FT_UINT32, BASE_DEC, NULL, 0x0, - "TransmitPreference.", - HFILL } - }, - - { &hf_skinny_format, - { "Format", "skinny.format", - FT_UINT32, BASE_DEC, VALS(skinny_formatTypes), 0x0, - "Format.", - HFILL } - }, - - { &hf_skinny_maxBitRate, - { "MaxBitRate", "skinny.maxBitRate", - FT_UINT32, BASE_DEC, NULL, 0x0, - "MaxBitRate.", - HFILL } - }, - - { &hf_skinny_minBitRate, - { "MinBitRate", "skinny.minBitRate", - FT_UINT32, BASE_DEC, NULL, 0x0, - "MinBitRate.", - HFILL } - }, - - { &hf_skinny_MPI, - { "MPI", "skinny.MPI", - FT_UINT32, BASE_DEC, NULL, 0x0, - "MPI.", - HFILL } - }, - - { &hf_skinny_serviceNumber, - { "ServiceNumber", "skinny.serviceNumber", - FT_UINT32, BASE_DEC, NULL, 0x0, - "ServiceNumber.", - HFILL } - }, - - { &hf_skinny_temporalSpatialTradeOffCapability, - { "TemporalSpatialTradeOffCapability", "skinny.temporalSpatialTradeOffCapability", - FT_UINT32, BASE_DEC, NULL, 0x0, - "TemporalSpatialTradeOffCapability.", - HFILL } - }, - - { &hf_skinny_stillImageTransmission, - { "StillImageTransmission", "skinny.stillImageTransmission", - FT_UINT32, BASE_DEC, NULL, 0x0, - "StillImageTransmission.", - HFILL } - }, - - { &hf_skinny_h263_capability_bitfield, - { "H263_capability_bitfield", "skinny.h263_capability_bitfield", - FT_UINT32, BASE_DEC, NULL, 0x0, - "H263_capability_bitfield.", - HFILL } - }, - - { &hf_skinny_annexNandWFutureUse, - { "AnnexNandWFutureUse", "skinny.annexNandWFutureUse", - FT_UINT32, BASE_DEC, NULL, 0x0, - "AnnexNandWFutureUse.", - HFILL } - }, - - { &hf_skinny_modelNumber, - { "ModelNumber", "skinny.modelNumber", - FT_UINT32, BASE_DEC, NULL, 0x0, - "ModelNumber.", - HFILL } - }, - - { &hf_skinny_bandwidth, - { "Bandwidth", "skinny.bandwidth", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Bandwidth.", - HFILL } - }, - - { &hf_skinny_protocolDependentData, - { "ProtocolDependentData", "skinny.protocolDependentData", - FT_UINT32, BASE_DEC, NULL, 0x0, - "ProtocolDependentData.", - HFILL } - }, - - { &hf_skinny_priority, - { "Priority", "skinny.priority", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Priority.", - HFILL } - }, - - { &hf_skinny_payloadDtmf, - { "PayloadDtmf", "skinny.payloadDtmf", - FT_UINT32, BASE_DEC, NULL, 0x0, - "RTP payload type.", - HFILL } - }, - - { &hf_skinny_featureID, - { "FeatureID", "skinny.featureID", - FT_UINT32, BASE_DEC, NULL, 0x0, - "FeatureID.", - HFILL } - }, - - { &hf_skinny_featureTextLabel, - { "FeatureTextLabel", "skinny.featureTextLabel", - FT_STRING, BASE_NONE, NULL, 0x0, - "The feature lable text that is displayed on the phone.", - HFILL } - }, - - { &hf_skinny_featureStatus, - { "FeatureStatus", "skinny.featureStatus", - FT_UINT32, BASE_DEC, NULL, 0x0, - "FeatureStatus.", - HFILL } - }, - - { &hf_skinny_notify, - { "Notify", "skinny.notify", - FT_STRING, BASE_NONE, NULL, 0x0, - "The message notify text that is displayed on the phone.", - HFILL } - }, - - { &hf_skinny_endOfAnnAck, - { "EndOfAnnAck", "skinny.endOfAnnAck", - FT_UINT32, BASE_DEC, VALS(skinny_endOfAnnAck), 0x0, - "EndOfAnnAck", - HFILL } - }, - - { &hf_skinny_annPlayMode, - { "annPlayMode", "skinny.annPlayMode", - FT_UINT32, BASE_DEC, VALS(skinny_annPlayMode), 0x0, - "AnnPlayMode", - HFILL } - }, - - { &hf_skinny_annPlayStatus, - { "AnnPlayStatus", "skinny.annPlayStatus", - FT_UINT32, BASE_DEC, VALS(skinny_annPlayStatus), 0x0, - "AnnPlayStatus", - HFILL } - }, - - { &hf_skinny_locale, - { "Locale", "skinny.locale", - FT_UINT32, BASE_DEC, NULL, 0x0, - "User locale ID.", - HFILL } - }, - - { &hf_skinny_country, - { "Country", "skinny.country", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Country ID (Network locale).", - HFILL } - }, - - { &hf_skinny_matrixConfPartyID, - { "MatrixConfPartyID", "skinny.matrixConfPartyID", - FT_UINT32, BASE_DEC, NULL, 0x0, - "existing conference parties.", - HFILL } - }, - - { &hf_skinny_hearingConfPartyMask, - { "HearingConfPartyMask", "skinny.hearingConfPartyMask", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Bit mask of conference parties to hear media received on this stream. Bit0 = matrixConfPartyID[0], Bit1 = matrixConfPartiID[1].", - HFILL } - }, - - { &hf_skinny_serviceURL, - { "ServiceURL", "skinny.serviceURL", - FT_STRING, BASE_NONE, NULL, 0x0, - "ServiceURL.", - HFILL } - }, - - { &hf_skinny_serviceURLDisplayName, - { "ServiceURLDisplayName", "skinny.serviceURLDisplayName", - FT_STRING, BASE_NONE, NULL, 0x0, - "ServiceURLDisplayName.", - HFILL } - }, - - { &hf_skinny_callSelectStat, - { "CallSelectStat", "skinny.callSelectStat", - FT_UINT32, BASE_DEC, NULL, 0x0, - "CallSelectStat.", - HFILL } - }, - - { &hf_skinny_isConferenceCreator, - { "IsConferenceCreator", "skinny.isConferenceCreator", - FT_UINT32, BASE_DEC, NULL, 0x0, - "IsConferenceCreator.", - HFILL } - }, - - { &hf_skinny_payload_rfc_number, - { "Payload_rfc_number", "skinny.payload_rfc_number", - FT_UINT32, BASE_DEC, NULL, 0x0, - "Payload_rfc_number.", - HFILL } - }, - - { &hf_skinny_payloadType, - { "PayloadType", "skinny.payloadType", - FT_UINT32, BASE_DEC, NULL, 0x0, - "PayloadType.", - HFILL } - }, - - { &hf_skinny_bitRate, - { "BitRate", "skinny.bitRate", - FT_UINT32, BASE_DEC, NULL, 0x0, - "BitRate.", - HFILL } - }, - - { &hf_skinny_pictureFormatCount, - { "PictureFormatCount", "skinny.pictureFormatCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "PictureFormatCount.", - HFILL } - }, - - { &hf_skinny_confServiceNum, - { "ConfServiceNum", "skinny.confServiceNum", - FT_UINT32, BASE_DEC, NULL, 0x0, - "ConfServiceNum.", - HFILL } - }, - - { &hf_skinny_DSCPValue, - { "DSCPValue", "skinny.DSCPValue", - FT_UINT32, BASE_DEC, NULL, 0x0, - "DSCPValue.", - HFILL } - }, - - { &hf_skinny_miscCommandType, - { "MiscCommandType", "skinny.miscCommandType", - FT_UINT32, BASE_DEC, VALS(skinny_miscCommandType), 0x0, - "MiscCommandType", - HFILL } - }, - - { &hf_skinny_temporalSpatialTradeOff, - { "TemporalSpatialTradeOff", "skinny.temporalSpatialTradeOff", - FT_UINT32, BASE_DEC, NULL, 0x0, - "TemporalSpatialTradeOff.", - HFILL } - }, - - { &hf_skinny_firstGOB, - { "FirstGOB", "skinny.firstGOB", - FT_UINT32, BASE_DEC, NULL, 0x0, - "FirstGOB.", - HFILL } - }, - - { &hf_skinny_numberOfGOBs, - { "NumberOfGOBs", "skinny.numberOfGOBs", - FT_UINT32, BASE_DEC, NULL, 0x0, - "NumberOfGOBs.", - HFILL } - }, - - { &hf_skinny_firstMB, - { "FirstMB", "skinny.firstMB", - FT_UINT32, BASE_DEC, NULL, 0x0, - "FirstMB.", - HFILL } - }, - - { &hf_skinny_numberOfMBs, - { "NumberOfMBs", "skinny.numberOfMBs", - FT_UINT32, BASE_DEC, NULL, 0x0, - "NumberOfMBs.", - HFILL } - }, - - { &hf_skinny_pictureNumber, - { "PictureNumber", "skinny.pictureNumber", - FT_UINT32, BASE_DEC, NULL, 0x0, - "PictureNumber.", - HFILL } - }, - - { &hf_skinny_longTermPictureIndex, - { "LongTermPictureIndex", "skinny.longTermPictureIndex", - FT_UINT32, BASE_DEC, NULL, 0x0, - "LongTermPictureIndex.", - HFILL } - }, - - { &hf_skinny_recoveryReferencePictureCount, - { "RecoveryReferencePictureCount", "skinny.recoveryReferencePictureCount", - FT_UINT32, BASE_DEC, NULL, 0x0, - "RecoveryReferencePictureCount.", - HFILL } - }, - - { &hf_cast_lastRedirectingPartyName, - { "LastRedirectingPartyName", "cast.lastRedirectingPartyName", - FT_STRING, BASE_NONE, NULL, 0x0, - "LastRedirectingPartyName.", - HFILL } - }, - - { &hf_cast_lastRedirectingParty, - { "LastRedirectingParty", "cast.lastRedirectingParty", - FT_STRING, BASE_NONE, NULL, 0x0, - "LastRedirectingParty.", - HFILL } - }, - - { &hf_cast_cgpnVoiceMailbox, - { "CgpnVoiceMailbox", "cast.cgpnVoiceMailbox", - FT_STRING, BASE_NONE, NULL, 0x0, - "CgpnVoiceMailbox.", - HFILL } - }, - - { &hf_cast_cdpnVoiceMailbox, - { "CdpnVoiceMailbox", "cast.cdpnVoiceMailbox", - FT_STRING, BASE_NONE, NULL, 0x0, - "CdpnVoiceMailbox.", - HFILL } - }, - - { &hf_cast_originalCdpnVoiceMailbox, - { "OriginalCdpnVoiceMailbox", "cast.originalCdpnVoiceMailbox", - FT_STRING, BASE_NONE, NULL, 0x0, - "OriginalCdpnVoiceMailbox.", - HFILL } - }, - - { &hf_cast_lastRedirectingVoiceMailbox, - { "LastRedirectingVoiceMailbox", "cast.lastRedirectingVoiceMailbox", - FT_STRING, BASE_NONE, NULL, 0x0, - "LastRedirectingVoiceMailbox.", - HFILL } - }, - - { &hf_cast_originalCdpnRedirectReason, - { "OriginalCdpnRedirectReason", "cast.originalCdpnRedirectReason", - FT_UINT32, BASE_DEC, NULL, 0x0, - "OriginalCdpnRedirectReason.", - HFILL } - }, - - { &hf_cast_lastRedirectingReason, - { "LastRedirectingReason", "cast.lastRedirectingReason", - FT_UINT32, BASE_DEC, NULL, 0x0, - "LastRedirectingReason.", - HFILL } - }, - - { &hf_cast_callInstance, - { "CallInstance", "cast.callInstance", - FT_UINT32, BASE_DEC, NULL, 0x0, - "CallInstance.", - HFILL } - }, - - { &hf_cast_callSecurityStatus, - { "CallSecurityStatus", "cast.callSecurityStatus", - FT_UINT32, BASE_DEC, VALS(cast_callSecurityStatusTypes), 0x0, - "CallSecurityStatus.", - HFILL } - }, - - }; - - /* Setup protocol subtree array */ - static gint *ett[] = { - &ett_skinny, - &ett_skinny_tree, - &ett_skinny_softKeyMap, - }; - - module_t *skinny_module; - - /* Register the protocol name and description */ - proto_skinny = proto_register_protocol("Skinny Client Control Protocol", - "SKINNY", "skinny"); - - /* Required function calls to register the header fields and subtrees used */ - proto_register_field_array(proto_skinny, hf, array_length(hf)); - proto_register_subtree_array(ett, array_length(ett)); - - skinny_module = prefs_register_protocol(proto_skinny, NULL); - prefs_register_bool_preference(skinny_module, "desegment", - "Desegment all SCCP messages spanning multiple TCP segments", - "Whether the SCCP dissector should desegment all messages spanning multiple TCP segments", - &skinny_desegment); -} - -void -proto_reg_handoff_skinny(void) -{ - dissector_handle_t skinny_handle; - - data_handle = find_dissector("data"); - rtp_handle = find_dissector("rtp"); - skinny_handle = create_dissector_handle(dissect_skinny, proto_skinny); - dissector_add("tcp.port", TCP_PORT_SKINNY, skinny_handle); -} - -/* - * FIXME: - * - * This is the status of this decode. - * Items marked as N/A in the decode field have no params to test - * implemented for N/A means they exist in the switch statement - * S = stubbed - * - * id message implemented decode tested (via capture) - * --------------------------------------------------------------------------- - * 0x0 keepAlive Y N/A - * 0x1 register Y Y - * 0x2 ipPort Y Y - * 0x3 keypadButton Y Y - * 0x4 enblocCall Y N - * 0x5 stimulus Y N - * 0x6 offHook Y N/A - * 0x7 onHook Y N/A - * 0x8 hookFlash Y N/A - * 0x9 forwardStatReq Y N - * 0xa speedDialStatReq Y Y - * 0xb lineStatReq Y Y - * 0xc configStatReq Y N/A - * 0xd timeDateReq Y N/A - * 0xe buttonTemplateReq Y N/A - * 0xf versionReq Y N/A - * 0x10 capabilitiesRes Y Y -- would like more decodes - * 0x11 mediaPortList S N -- no info - * 0x12 serverReq Y N/A - * 0x20 alarmMessage Y Y - * 0x21 multicastMediaReceptionAck Y N - * 0x22 openReceiveChannelAck Y Y - * 0x23 connectionStatisticsRes Y Y - * 0x24 offHookWithCgpn Y N - * 0x25 softKeySetReq Y N/A - * 0x26 softKeyEvent Y Y - * 0x27 unregister Y N/A - * 0x28 softKeytemplateReq Y N/A - * 0x29 registerTokenReq Y N - * 0x2A mediaTransmissionFailure - * 0x2B headsetStatus - * 0x2C mediaResourceNotification - * 0x2D registerAvailableLines - * 0x2E deviceToUserData - * 0x2F deviceToUserDataResponse - * 0x30 updateCapabilities - * 0x31 openMultiMediaReceiveChannelAck - * 0x32 clearConference - * 0x33 serviceURLStatReq - * 0x34 featureStatReq - * 0x35 createConferenceRes - * 0x36 deleteConferenceRes - * 0x37 modifyConferenceRes - * 0x38 addParticipantRes - * 0x39 auditConferenceRes - * 0x40 auditParticipantRes - * 0x41 deviceToUserDataVersion1 - * 0x42 deviceToUserDataResponseVersion1 - * 0x81 registerAck Y Y - * 0x82 startTone Y Y - * 0x83 stopTone Y N/A - * 0x85 setRinger Y Y - * 0x86 setLamp Y Y - * 0x87 setHkFDetect Y N - * 0x88 setSpeakerMode Y Y - * 0x89 setMicroMode Y N - * 0x8A startMediaTransmission Y Y - * 0x8B stopMediaTransmission Y Y - * 0x8C startMediaReception S N - * 0x8D stopMediaReception S N - * 0x8E *reserved* S * - * 0x8F callInfo Y Y - * 0x90 forwardStat Y N - * 0x91 speedDialStat Y Y - * 0x92 lineStat Y Y - * 0x93 configStat Y N - * 0x94 defineTimeDate Y Y - * 0x95 startSessionTransmission Y N - * 0x96 stopSessionTransmission Y N - * 0x97 buttonTemplate Y Y -- ugly =) - * 0x98 version Y N - * 0x99 displayText Y Y - * 0x9A clearDisplay Y N/A - * 0x9B capabilitiesReq Y N/A - * 0x9C enunciatorCommand Y N (inner loop unknown) - * 0x9D registerReject Y N - * 0x9E serverRes Y N - * 0x9F reset Y Y - * 0x100 keepAliveAck Y N/A - * 0x101 startMulticastMediaReception Y N - * 0x102 startMulticastMediaTransmission Y N - * 0x103 stopMulticastMediaReception Y N - * 0x104 stopMulticastMediaTransmission Y N - * 0x105 openreceiveChannel Y Y - * 0x106 closeReceiveChannel Y Y - * 0x107 connectionStatisticsReq Y Y - * 0x108 softKeyTemplateRes Y Y - * 0x109 softKeySetRes Y Y - * 0x110 selectSoftKeys Y Y - * 0x111 callState Y Y - * 0x112 displayPromptStatus Y Y - * 0x113 clearPromptStatus Y Y - * 0x114 displayNotify Y Y - * 0x115 clearNotify Y Y - * 0x116 activateCallPlane Y Y - * 0x117 deactivateCallPlane Y N/A - * 0x118 unregisterAck Y Y - * 0x119 backSpaceReq Y Y - * 0x11A registerTokenAck Y N - * 0x11B registerTokenReject Y N - * 0x11C startMediaFailureDetection - * 0x11D dialedNumber - * 0x11E userToDeviceData - * 0x11F featureStat - * 0x120 displayPriNotify - * 0x121 clearPriNotify - * 0x122 startAnnouncement - * 0x123 stopAnnouncement - * 0x124 announcementFinish - * 0x127 notifyDtmfTone - * 0x128 sendDtmfTone - * 0x129 subscribeDtmfPayloadReq - * 0x12A subscribeDtmfPayloadRes - * 0x12B subscribeDtmfPayloadErr - * 0x12C unSubscribeDtmfPayloadReq - * 0x12D unSubscribeDtmfPayloadRes - * 0x12E unSubscribeDtmfPayloadErr - * 0x12F serviceURLStat - * 0x130 callSelectStat - * 0x131 openMultiMediaChannel - * 0x132 startMultiMediaTransmission - * 0x133 stopMultiMediaTransmission - * 0x134 miscellaneousCommand - * 0x135 flowControlCommand - * 0x136 closeMultiMediaReceiveChannel - * 0x137 createConferenceReq - * 0x138 deleteConferenceReq - * 0x139 modifyConferenceReq - * 0x13A addParticipantReq - * 0x13B dropParticipantReq - * 0x13C auditConferenceReq - * 0x13D auditParticipantReq - * 0x13F userToDeviceDataVersion1 - * - * - */ |