diff options
author | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2011-06-22 08:09:55 +0000 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2011-06-22 08:09:55 +0000 |
commit | ccd94a3e88cb3fe187cb11de56bfdbd32d465df3 (patch) | |
tree | c31ccc1db70f7c65b7b716319c68f4c69ea42e29 /epan/dissectors/packet-skinny.c | |
parent | a3f1389ae0d1455d91c948226783f5d77ad85436 (diff) |
From mtwire via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6041
Added party numbers and party names in message CM5CallInfoMessage
svn path=/trunk/; revision=37748
Diffstat (limited to 'epan/dissectors/packet-skinny.c')
-rw-r--r-- | epan/dissectors/packet-skinny.c | 89 |
1 files changed, 87 insertions, 2 deletions
diff --git a/epan/dissectors/packet-skinny.c b/epan/dissectors/packet-skinny.c index b6eb0e25c2..20ec14b6aa 100644 --- a/epan/dissectors/packet-skinny.c +++ b/epan/dissectors/packet-skinny.c @@ -1361,7 +1361,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) case 0x0003: /* 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_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); @@ -2801,10 +2801,95 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) break; case 0x014A: /* CM5CallInfoMessage */ - /* unknown uint32_t stuff */ + 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_callType, tvb, offset+20, 4, TRUE); + si->lineId = tvb_get_letohl(tvb, offset+12); /* 5x unknown uint32_t stuff */ + /* strings */ + { + i = offset+44; + if(hdr_version == BASIC_MSG_TYPE) + { + /* 8x party numbers */ + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_callingPartyNumber, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_calledPartyNumber, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_originalCalledParty, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_lastRedirectingParty, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_cgpnVoiceMailbox, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_cdpnVoiceMailbox, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_originalCdpnVoiceMailbox, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_lastRedirectingVoiceMailbox, tvb, i, count, TRUE); + i += count; + /* 4x party names */ + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_callingPartyName, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_calledPartyName, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_originalCalledPartyName, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_lastRedirectingPartyName, tvb, i, count, TRUE); + } + else if(hdr_version == CM7_MSG_TYPE_B || hdr_version == CM7_MSG_TYPE_A) + {/* I'm not sure. Not enough examples. */ + /* 8x party numbers */ + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_callingPartyNumber, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_cgpnVoiceMailbox, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_calledPartyNumber, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_originalCalledParty, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_lastRedirectingParty, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_cdpnVoiceMailbox, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_originalCdpnVoiceMailbox, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_lastRedirectingVoiceMailbox, tvb, i, count, TRUE); + i += count; + /* 4x party names */ + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_callingPartyName, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_calledPartyName, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_skinny_originalCalledPartyName, tvb, i, count, TRUE); + i += count; + count = tvb_strnlen(tvb, i, -1)+1; + proto_tree_add_item(skinny_tree, hf_cast_lastRedirectingPartyName, tvb, i, count, TRUE); + } + } break; case 0x0152: /* DialedPhoneBookAckMessage */ |