Ethereal-dev: Re: [Ethereal-dev] Cisco SM and isup patches
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Cvetan Ivanov <zezo@xxxxxxxxx>
Date: Sat, 02 Apr 2005 21:05:17 +0300
As ususal, I've forgotten the attachment. see the previous message for explanation Cvetan
Index: plugins/ciscosm/packet-sm.c =================================================================== --- plugins/ciscosm/packet-sm.c (revision 14003) +++ plugins/ciscosm/packet-sm.c (working copy) @@ -68,6 +68,65 @@ G_MODULE_EXPORT const gchar version[] = VERSION; #endif + +#define MESSAGE_TYPE_START 0 +#define MESSAGE_TYPE_STOP 1 +#define MESSAGE_TYPE_ACTIVE 2 +#define MESSAGE_TYPE_STANDBY 3 +#define MESSAGE_TYPE_Q_HOLD_INVOKE 4 +#define MESSAGE_TYPE_Q_HOLD_RESPONSE 5 +#define MESSAGE_TYPE_Q_RESUME_INVOKE 6 +#define MESSAGE_TYPE_Q_RESUME_RESPONSE 7 +#define MESSAGE_TYPE_Q_RESET_INVOKE 8 +#define MESSAGE_TYPE_Q_RESET_RESPONSE 9 +#define MESSAGE_TYPE_PDU 0x8000 + +const value_string sm_message_type_value[] = { + { MESSAGE_TYPE_START, "Start Message" }, + { MESSAGE_TYPE_STOP, "Stop Message" }, + { MESSAGE_TYPE_ACTIVE, "Active Message" }, + { MESSAGE_TYPE_STANDBY, "Standby Message" }, + { MESSAGE_TYPE_Q_HOLD_INVOKE, "Q_HOLD Invoke Message" }, + { MESSAGE_TYPE_Q_HOLD_RESPONSE, "Q_HOLD Response Message" }, + { MESSAGE_TYPE_Q_RESUME_INVOKE, "Q_RESUME Invoke Message" }, + { MESSAGE_TYPE_Q_RESUME_RESPONSE, "Q_RESUME Response Message" }, + { MESSAGE_TYPE_Q_RESET_INVOKE, "Q_RESET Invoke Message" }, + { MESSAGE_TYPE_Q_RESET_RESPONSE, "Q_RESET Response Message" }, + { MESSAGE_TYPE_PDU, "PDU Message" }, + { 0, NULL }}; + +const value_string sm_message_type_value_info[] = { + { MESSAGE_TYPE_START, "Start" }, + { MESSAGE_TYPE_STOP, "Stop" }, + { MESSAGE_TYPE_ACTIVE, "Active" }, + { MESSAGE_TYPE_STANDBY, "Standby" }, + { MESSAGE_TYPE_Q_HOLD_INVOKE, "Q_HOLD Invoke" }, + { MESSAGE_TYPE_Q_HOLD_RESPONSE, "Q_HOLD Response" }, + { MESSAGE_TYPE_Q_RESUME_INVOKE, "Q_RESUME Invoke" }, + { MESSAGE_TYPE_Q_RESUME_RESPONSE, "Q_RESUME Response" }, + { MESSAGE_TYPE_Q_RESET_INVOKE, "Q_RESET Invoke" }, + { MESSAGE_TYPE_Q_RESET_RESPONSE, "Q_RESET Response" }, + { MESSAGE_TYPE_PDU, "PDU" }, + { 0, NULL }}; + + +#define PDU_MTP3_TO_SLT 0x10 +#define PDU_MTP3_FROM_SLT 0x11 + +#define PDU_SET_STATE 0x44 +#define PDU_RETURN_STATE 0x45 + +const value_string sm_pdu_type_value[] = { + { PDU_MTP3_TO_SLT, "mtp3 to SLT"}, + { PDU_MTP3_FROM_SLT, "mtp3 from SLT"}, + { PDU_SET_STATE, "set session state"}, + { PDU_RETURN_STATE, "return session state"}, + { 0, NULL }}; + + + + + /* Initialize the protocol and registered fields */ static int proto_sm = -1; @@ -89,28 +148,42 @@ proto_item *ti; proto_tree *sm_tree; tvbuff_t *next_tvb = NULL; + guint32 sm_message_type; + guint16 msg_type; + sm_message_type = tvb_get_ntohl(tvb,0); + if (check_col(pinfo->cinfo, COL_PROTOCOL)) col_set_str(pinfo->cinfo, COL_PROTOCOL, "SM"); if (check_col(pinfo->cinfo, COL_INFO)) - col_set_str(pinfo->cinfo, COL_INFO, "Cisco SM Packet"); + col_add_fstr(pinfo->cinfo, COL_INFO, "Cisco SM Packet (%s)", + val_to_str(sm_message_type, sm_message_type_value_info,"reserved")); if (tree) { ti = proto_tree_add_item(tree, proto_sm, tvb, 0, 16, FALSE); sm_tree = proto_item_add_subtree(ti, ett_sm); - ti = proto_tree_add_item(sm_tree, hf_sm_sm_msg_type, tvb, 0, 4, FALSE); - ti = proto_tree_add_item(sm_tree, hf_sm_protocol, tvb, 4, 2, FALSE); - ti = proto_tree_add_item(sm_tree, hf_sm_msg_id, tvb, 6, 2, FALSE); - ti = proto_tree_add_item(sm_tree, hf_sm_msg_type, tvb, 8, 2, FALSE); - ti = proto_tree_add_item(sm_tree, hf_sm_channel, tvb, 10, 2, FALSE); - ti = proto_tree_add_item(sm_tree, hf_sm_bearer, tvb, 12, 2, FALSE); - ti = proto_tree_add_item(sm_tree, hf_sm_len, tvb, 14, 2, FALSE); + + ti = proto_tree_add_uint_format(sm_tree, hf_sm_sm_msg_type, tvb, 0, 4, sm_message_type, + "SM Message type: %s (0x%0x)", val_to_str(sm_message_type, sm_message_type_value, "reserved"), sm_message_type); + if (sm_message_type == MESSAGE_TYPE_PDU) { + ti = proto_tree_add_item(sm_tree, hf_sm_protocol, tvb, 4, 2, FALSE); + ti = proto_tree_add_item(sm_tree, hf_sm_msg_id, tvb, 6, 2, FALSE); + msg_type = tvb_get_ntohs(tvb,8); + ti = proto_tree_add_uint_format(sm_tree, hf_sm_msg_type, tvb, 0, 4, msg_type, + "Message type: %s (0x%0x)", val_to_str(msg_type, sm_pdu_type_value, "reserved"), msg_type); + ti = proto_tree_add_item(sm_tree, hf_sm_channel, tvb, 10, 2, FALSE); + ti = proto_tree_add_item(sm_tree, hf_sm_bearer, tvb, 12, 2, FALSE); + ti = proto_tree_add_item(sm_tree, hf_sm_len, tvb, 14, 2, FALSE); + } } - next_tvb = tvb_new_subset(tvb, 16, -1, -1); - if (tvb_length(next_tvb) && find_dissector("mtp3")) - call_dissector(find_dissector("mtp3"), next_tvb, pinfo, tree); + if (sm_message_type == MESSAGE_TYPE_PDU) { + msg_type = tvb_get_ntohs(tvb,8); + next_tvb = tvb_new_subset(tvb, 16, -1, -1); + if ((msg_type == PDU_MTP3_TO_SLT || msg_type == PDU_MTP3_FROM_SLT) && tvb_length(next_tvb) && find_dissector("mtp3")) + call_dissector(find_dissector("mtp3"), next_tvb, pinfo, tree); + } } void Index: epan/dissectors/packet-isup.c =================================================================== --- epan/dissectors/packet-isup.c (revision 14003) +++ epan/dissectors/packet-isup.c (working copy) @@ -3151,12 +3151,14 @@ proto_tree_add_uint(parameter_tree, hf_isup_screening_indicator, parameter_tvb, 1, 1, indicators2); offset = 2; + length = tvb_length_remaining(parameter_tvb, offset); + if (length == 0) + return; /* empty connected number */ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "Connected Number"); address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits); - length = tvb_length_remaining(parameter_tvb, offset); while(length > 0){ address_digit_pair = tvb_get_guint8(parameter_tvb, offset); proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
- Follow-Ups:
- [Ethereal-dev] Re: Cisco SM and isup patches
- From: ronnie sahlberg
- [Ethereal-dev] Re: Cisco SM and isup patches
- References:
- [Ethereal-dev] Cisco SM and isup patches
- From: Cvetan Ivanov
- [Ethereal-dev] Cisco SM and isup patches
- Prev by Date: [Ethereal-dev] Cisco SM and isup patches
- Next by Date: Re: [Ethereal-dev] Patch to fix DnD of files on X
- Previous by thread: [Ethereal-dev] Cisco SM and isup patches
- Next by thread: [Ethereal-dev] Re: Cisco SM and isup patches
- Index(es):