aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-skinny.c
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2010-05-06 19:16:45 +0000
committerJaap Keuter <jaap.keuter@xs4all.nl>2010-05-06 19:16:45 +0000
commit9892b8f6f413efb798932b20c1a3932936b703ab (patch)
treebba3fa86c48574fd9a1b1b6d638197b030550fd1 /epan/dissectors/packet-skinny.c
parent56dcd99d0756268966b9f2421023718d7a560ccb (diff)
From Mathieu Parent:
* Added LineInstance and CallId to keypadButton-, stimulus-, offHook-, onHook-, startTone-, stopTone-, setRingerMessage * Added RingMode to setRingerMessage * Added displayName to LineStatMessage svn path=/trunk/; revision=32692
Diffstat (limited to 'epan/dissectors/packet-skinny.c')
-rw-r--r--epan/dissectors/packet-skinny.c93
1 files changed, 79 insertions, 14 deletions
diff --git a/epan/dissectors/packet-skinny.c b/epan/dissectors/packet-skinny.c
index b9c0d2f25f..1361bc84a7 100644
--- a/epan/dissectors/packet-skinny.c
+++ b/epan/dissectors/packet-skinny.c
@@ -677,6 +677,11 @@ static const value_string skinny_ringTypes[] = {
{0x6 , "PrecedenceRing"},
{0 , NULL}
};
+static const value_string skinny_ringModes[] = {
+ {0x1 , "RingForever"},
+ {0x2 , "RingOnce"},
+ {0 , NULL}
+};
static const value_string skinny_speakerModes[] = {
{1 , "SpeakerOn"},
@@ -883,6 +888,7 @@ static const value_string cast_callSecurityStatusTypes[] = {
#define StationMaxDirnumSize 24 /* max size of calling or called party dirnum */
#define StationMaxNameSize 40 /* max size of calling party's name */
+#define StationMaxDisplayNameSize 44 /* max size of display 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 */
@@ -999,6 +1005,7 @@ 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_lineDisplayName = -1;
static int hf_skinny_speedDialDirNumber = -1;
static int hf_skinny_speedDialDisplayName = -1;
static int hf_skinny_dateYear = -1;
@@ -1019,6 +1026,7 @@ 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_ringMode = -1;
static int hf_skinny_speakerMode = -1;
static int hf_skinny_remoteIpAddr = -1;
static int hf_skinny_remotePortNumber = -1;
@@ -1276,12 +1284,6 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case 0x0 : /* keepAlive */
break;
- case 0x6 : /* offHook */
- break;
-
- case 0x7 : /* onHook */
- break;
-
case 0x8 : /* hookFlash */
break;
@@ -1309,9 +1311,6 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case 0x28 : /* softKeyTemplateRequest */
break;
- case 0x83 : /* stopTone */
- break;
-
case 0x9a : /* clearDisplay */
break;
@@ -1353,6 +1352,12 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case 0x3 : /* keyPadButtonMessage */
proto_tree_add_item(skinny_tree, hf_skinny_stationKeypadButton, tvb, offset+12, 4, TRUE);
+ if (hdr_data_length > 8) {
+ 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);
+ si->lineId = tvb_get_letohl(tvb, offset+16);
+ si->callId = tvb_get_letohl(tvb, offset+20);
+ }
break;
case 0x4 : /* stationEnblocCallMessage -- This decode NOT verified*/
@@ -1362,6 +1367,28 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
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);
+ if (hdr_data_length > 12) {
+ proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+20, 4, TRUE);
+ si->callId = tvb_get_letohl(tvb, offset+20);
+ }
+ break;
+
+ case 0x6 : /* offHook */
+ if (hdr_data_length > 4) {
+ 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);
+ si->lineId = tvb_get_letohl(tvb, offset+12);
+ si->callId = tvb_get_letohl(tvb, offset+16);
+ }
+ break;
+
+ case 0x7 : /* onHook */
+ if (hdr_data_length > 4) {
+ 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);
+ si->lineId = tvb_get_letohl(tvb, offset+12);
+ si->callId = tvb_get_letohl(tvb, offset+16);
+ }
break;
case 0x9 : /* stationForwardStatReqMessage */
@@ -1775,10 +1802,33 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case 0x82 : /* startTone */
proto_tree_add_item(skinny_tree, hf_skinny_deviceTone, tvb, offset+12, 4, TRUE);
+ /* offset 16 to 19: reserved */
+ if (hdr_data_length > 12) {
+ proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+20, 4, TRUE);
+ proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+24, 4, TRUE);
+ si->lineId = tvb_get_letohl(tvb, offset+20);
+ si->callId = tvb_get_letohl(tvb, offset+24);
+ }
+ break;
+
+ case 0x83 : /* stopTone */
+ if (hdr_data_length > 4) {
+ 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);
+ si->lineId = tvb_get_letohl(tvb, offset+12);
+ si->callId = tvb_get_letohl(tvb, offset+16);
+ }
break;
case 0x85 : /* setRingerMessage */
proto_tree_add_item(skinny_tree, hf_skinny_ringType, tvb, offset+12, 4, TRUE);
+ proto_tree_add_item(skinny_tree, hf_skinny_ringMode, tvb, offset+16, 4, TRUE);
+ if (hdr_data_length > 12) {
+ proto_tree_add_item(skinny_tree, hf_skinny_lineInstance, tvb, offset+20, 4, TRUE);
+ proto_tree_add_item(skinny_tree, hf_skinny_callIdentifier, tvb, offset+24, 4, TRUE);
+ si->lineId = tvb_get_letohl(tvb, offset+20);
+ si->callId = tvb_get_letohl(tvb, offset+24);
+ }
break;
case 0x86 : /* setLampMessage */
@@ -1931,6 +1981,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
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);
+ proto_tree_add_item(skinny_tree, hf_skinny_lineDisplayName, tvb, offset+16+StationMaxDirnumSize+StationMaxNameSize, StationMaxDisplayNameSize, TRUE);
break;
case 0x93 : /* configStat */
@@ -3231,12 +3282,19 @@ proto_register_skinny(void)
},
{ &hf_skinny_lineFullyQualifiedDisplayName,
- { "DisplayName", "skinny.fqdn",
+ { "FullyQualifiedDisplayName", "skinny.fqdn",
FT_STRING, BASE_NONE, NULL, 0x0,
"The full display name for this line.",
HFILL }
},
+ { &hf_skinny_lineDisplayName,
+ { "DisplayName", "skinny.displayName",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ "The display name for this line.",
+ HFILL }
+ },
+
{ &hf_skinny_speedDialDirNumber,
{ "SpeedDial Number", "skinny.speedDialDirNum",
FT_STRING, BASE_NONE, NULL, 0x0,
@@ -3376,6 +3434,13 @@ proto_register_skinny(void)
HFILL }
},
+ { &hf_skinny_ringMode,
+ { "Ring Mode", "skinny.ringMode",
+ FT_UINT32, BASE_HEX, VALS(skinny_ringModes), 0x0,
+ "What mode of ring to play",
+ HFILL }
+ },
+
{ &hf_skinny_speakerMode,
{ "Speaker", "skinny.speakerMode",
FT_UINT32, BASE_HEX, VALS(skinny_speakerModes), 0x0,
@@ -4382,9 +4447,9 @@ proto_reg_handoff_skinny(void)
* 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
+ * 0x5 stimulus Y Y
+ * 0x6 offHook Y Y
+ * 0x7 onHook Y Y
* 0x8 hookFlash Y N/A
* 0x9 forwardStatReq Y N
* 0xa speedDialStatReq Y Y
@@ -4427,7 +4492,7 @@ proto_reg_handoff_skinny(void)
* 0x42 deviceToUserDataResponseVersion1
* 0x81 registerAck Y Y
* 0x82 startTone Y Y
- * 0x83 stopTone Y N/A
+ * 0x83 stopTone Y Y
* 0x85 setRinger Y Y
* 0x86 setLamp Y Y
* 0x87 setHkFDetect Y N