aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-skinny.c
diff options
context:
space:
mode:
authorDiederik de Groot <dkgroot@talon.nl>2016-05-14 14:05:30 +0200
committerMichael Mann <mmann78@netscape.net>2016-05-17 18:18:21 +0000
commit149822017a169259a2d8c0b523556383af52b2bd (patch)
tree896abd372fb6538bf88a7c1eaa68bc078101b485 /epan/dissectors/packet-skinny.c
parentba3f4f991cf4341dcd6191c0949bfa19f20c7304 (diff)
[skinny] Update message definitions
- Deal with short EnblocCallMessage coming from 7936 - SubscriptionStatReqMessage is shorter than previously known - Use buttonType enum in FeatureStatV2Message and FeatureStatMessage Change-Id: I0c4db5a0199ebb95bf807c858971d763faeef016 Reviewed-on: https://code.wireshark.org/review/15427 Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com> Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-skinny.c')
-rw-r--r--epan/dissectors/packet-skinny.c71
1 files changed, 64 insertions, 7 deletions
diff --git a/epan/dissectors/packet-skinny.c b/epan/dissectors/packet-skinny.c
index 9241a0ee7d..354f12a8d3 100644
--- a/epan/dissectors/packet-skinny.c
+++ b/epan/dissectors/packet-skinny.c
@@ -252,6 +252,7 @@ static const value_string message_id[] = {
{ 0x0156, "CallHistoryInfo" },
{ 0x0156, "LocationInfo" },
{ 0x0158, "MwiResponse" },
+ { 0x0159, "AddOnDeviceCapabilities" },
{ 0x015a, "EnhancedAlarm" },
{ 0x015e, "CallCountReq" },
{ 0x015f, "CallCountResp" },
@@ -2142,7 +2143,10 @@ static int hf_skinny_stimulusInstance = -1;
static int hf_skinny_stimulusStatus = -1;
static int hf_skinny_streamPassThroughID = -1;
static int hf_skinny_subAppID = -1;
+static int hf_skinny_subcriptionFeatureID = -1;
+static int hf_skinny_subscriptionFeatureID = -1;
static int hf_skinny_subscriptionID = -1;
+static int hf_skinny_subscriptionoFeatureID = -1;
static int hf_skinny_systemTime = -1;
static int hf_skinny_temporalSpatialTradeOff = -1;
static int hf_skinny_temporalSpatialTradeOffCapability = -1;
@@ -2163,6 +2167,10 @@ static int hf_skinny_transmitPort = -1;
static int hf_skinny_transmitPreference = -1;
static int hf_skinny_unRegReasonCode = -1;
static int hf_skinny_unknown = -1;
+static int hf_skinny_unknown1_0159 = -1;
+static int hf_skinny_unknown2_0159 = -1;
+static int hf_skinny_unknown3_0159 = -1;
+static int hf_skinny_unknownString_0159 = -1;
static int hf_skinny_userName = -1;
static int hf_skinny_v150sprt = -1;
static int hf_skinny_vendor = -1;
@@ -2449,12 +2457,16 @@ handle_KeypadButtonMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
static void
handle_EnblocCallMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
{
+ guint32 hdr_data_length = tvb_get_letohl(ptvcursor_tvbuff(cursor), 0);
guint32 hdr_version = tvb_get_letohl(ptvcursor_tvbuff(cursor), 4);
guint32 VariableDirnumSize = (hdr_version >= V18_MSG_TYPE) ? 25 : 24;
+
si->calledParty = g_strdup(tvb_format_stringzpad(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor), VariableDirnumSize));
ptvcursor_add(cursor, hf_skinny_calledParty, VariableDirnumSize, ENC_ASCII|ENC_NA);
- si->lineId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
- ptvcursor_add(cursor, hf_skinny_lineInstance, 4, ENC_LITTLE_ENDIAN);
+ if (hdr_data_length > 28) {
+ si->lineId = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
+ ptvcursor_add(cursor, hf_skinny_lineInstance, 4, ENC_LITTLE_ENDIAN);
+ }
}
/*
@@ -4226,9 +4238,9 @@ static void
handle_SubscriptionStatReqMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
{
ptvcursor_add(cursor, hf_skinny_transactionID, 4, ENC_LITTLE_ENDIAN);
- ptvcursor_add(cursor, hf_skinny_featureID, 4, ENC_LITTLE_ENDIAN);
+ ptvcursor_add(cursor, hf_skinny_subcriptionFeatureID, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_timer, 4, ENC_LITTLE_ENDIAN);
- ptvcursor_add(cursor, hf_skinny_subscriptionID, 256, ENC_ASCII|ENC_NA);
+ ptvcursor_add(cursor, hf_skinny_subscriptionID, 64, ENC_ASCII|ENC_NA);
}
/*
@@ -7379,7 +7391,7 @@ static void
handle_SubscriptionStatMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
{
ptvcursor_add(cursor, hf_skinny_transactionID, 4, ENC_LITTLE_ENDIAN);
- ptvcursor_add(cursor, hf_skinny_featureID, 4, ENC_LITTLE_ENDIAN);
+ ptvcursor_add(cursor, hf_skinny_subscriptionoFeatureID, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_timer, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_cause, 4, ENC_LITTLE_ENDIAN);
}
@@ -7395,7 +7407,7 @@ static void
handle_NotificationMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
{
ptvcursor_add(cursor, hf_skinny_transactionID, 4, ENC_LITTLE_ENDIAN);
- ptvcursor_add(cursor, hf_skinny_featureID, 4, ENC_LITTLE_ENDIAN);
+ ptvcursor_add(cursor, hf_skinny_subscriptionFeatureID, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_status, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_skinny_text, 97, ENC_ASCII|ENC_NA);
}
@@ -7485,6 +7497,22 @@ handle_MwiResponseMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
}
/*
+ * Message: AddOnDeviceCapabilitiesMessage
+ * Opcode: 0x0159
+ * Type: RegistrationAndManagement
+ * Direction: dev2pbx
+ * VarLength: no
+ */
+static void
+handle_AddOnDeviceCapabilitiesMessage(ptvcursor_t *cursor, packet_info * pinfo _U_)
+{
+ ptvcursor_add(cursor, hf_skinny_unknown1_0159, 4, ENC_LITTLE_ENDIAN);
+ ptvcursor_add(cursor, hf_skinny_unknown2_0159, 4, ENC_LITTLE_ENDIAN);
+ ptvcursor_add(cursor, hf_skinny_unknown3_0159, 4, ENC_LITTLE_ENDIAN);
+ ptvcursor_add(cursor, hf_skinny_unknownString_0159, 152, ENC_ASCII|ENC_NA);
+}
+
+/*
* Message: EnhancedAlarmMessage
* Opcode: 0x015a
* Type: RegistrationAndManagement
@@ -7767,6 +7795,7 @@ static const struct opcode2handler {
{0x0156, handle_CallHistoryInfoMessage , "CallHistoryInfoMessage"},
{0x0156, handle_LocationInfoMessage , "LocationInfoMessage"},
{0x0158, handle_MwiResponseMessage , "MwiResponseMessage"},
+ {0x0159, handle_AddOnDeviceCapabilitiesMessage , "AddOnDeviceCapabilitiesMessage"},
{0x015a, handle_EnhancedAlarmMessage , "EnhancedAlarmMessage"},
{0x015e, NULL , "CallCountReqMessage"},
{0x015f, handle_CallCountRespMessage , "CallCountRespMessage"},
@@ -9143,6 +9172,18 @@ proto_register_skinny(void)
{
"unknown", "skinny.unknown", FT_UINT8, BASE_DEC, NULL, 0x0,
"unknown (Part of ProtocolVer)", HFILL }},
+ { &hf_skinny_unknown1_0159,
+ {
+ "unknown1_0159", "skinny.unknown1.0159", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_skinny_unknown2_0159,
+ {
+ "unknown2_0159", "skinny.unknown2.0159", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_skinny_unknown3_0159,
+ {
+ "unknown3_0159", "skinny.unknown3.0159", FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
{ &hf_skinny_v150sprt,
{
"v150sprt", "skinny.v150sprt", FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -9373,7 +9414,7 @@ proto_register_skinny(void)
NULL, HFILL }},
{&hf_skinny_featureID,
{
- "featureID", "skinny.featureID", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &SubscriptionFeatureID_ext, 0x0,
+ "featureID", "skinny.featureID", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &ButtonType_ext, 0x0,
NULL, HFILL }},
{&hf_skinny_featureTextLabel,
{
@@ -9663,10 +9704,22 @@ proto_register_skinny(void)
{
"subAppID", "skinny.subAppID", FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
+ {&hf_skinny_subcriptionFeatureID,
+ {
+ "subcriptionFeatureID", "skinny.subcriptionFeatureID", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &SubscriptionFeatureID_ext, 0x0,
+ NULL, HFILL }},
+ {&hf_skinny_subscriptionFeatureID,
+ {
+ "subscriptionFeatureID", "skinny.subscriptionFeatureID", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &SubscriptionFeatureID_ext, 0x0,
+ NULL, HFILL }},
{&hf_skinny_subscriptionID,
{
"subscriptionID", "skinny.subscriptionID", FT_STRING, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
+ {&hf_skinny_subscriptionoFeatureID,
+ {
+ "subscriptionoFeatureID", "skinny.subscriptionoFeatureID", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &SubscriptionFeatureID_ext, 0x0,
+ NULL, HFILL }},
{&hf_skinny_text,
{
"text", "skinny.text", FT_STRING, BASE_NONE, NULL, 0x0,
@@ -9687,6 +9740,10 @@ proto_register_skinny(void)
{
"unRegReasonCode", "skinny.unRegReasonCode", FT_UINT32, BASE_HEX | BASE_EXT_STRING, &UnRegReasonCode_ext, 0x0,
NULL, HFILL }},
+ {&hf_skinny_unknownString_0159,
+ {
+ "unknownString_0159", "skinny.unknownString.0159", FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
{&hf_skinny_userName,
{
"userName", "skinny.userName", FT_STRING, BASE_NONE, NULL, 0x0,