* Routines for ISUP dissection
* Copyright 2001, Martina Obermeier <martina.obermeier@icn.siemens.de>
*
- * $Id: packet-isup.c,v 1.2 2001/05/25 16:19:31 guy Exp $
+ * $Id: packet-isup.c,v 1.12 2002/05/02 09:52:20 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# include "snprintf.h"
#endif
-#include "packet.h"
+#include <epan/packet.h>
#include "packet-ip.h"
#define MTP3_ISUP_SERVICE_INDICATOR 5
/* ------------------------------------------------------------------
Dissector Parameter nature of connection flags
*/
-void
+static void
dissect_isup_nature_of_connection_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 nature_of_connection_ind;
/* ------------------------------------------------------------------
Dissector Parameter Forward Call Indicators
*/
-void
+static void
dissect_isup_forward_call_indicators_parameter(tvbuff_t *parameter_tvb,proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 forward_call_ind;
/* ------------------------------------------------------------------
Dissector Parameter Calling Party's Category
*/
-void
+static void
dissect_isup_calling_partys_category_parameter(tvbuff_t *parameter_tvb,proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 calling_partys_category;
/* ------------------------------------------------------------------
Dissector Parameter Transmission medium requirement
*/
-void
+static void
dissect_isup_transmission_medium_requirement_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 transmission_medium_requirement;
/* ------------------------------------------------------------------
Dissector Parameter Called party number
*/
-void dissect_isup_called_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
+static void
+dissect_isup_called_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree *address_digits_tree;
proto_tree_add_uint(parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, 1, 1, indicators2);
offset = 2;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Called Party Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter Subsequent number
*/
-void dissect_isup_subsequent_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
+static void
+dissect_isup_subsequent_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree *address_digits_tree;
proto_tree_add_boolean(parameter_tree, hf_isup_odd_even_indicator, parameter_tvb, 0, 1, indicators1);
offset = 1;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Subsequent Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter Information Request Indicators
*/
-void
+static void
dissect_isup_information_request_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 information_request_indicators;
/* ------------------------------------------------------------------
Dissector Parameter Information Indicators
*/
-void
+static void
dissect_isup_information_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 information_indicators;
proto_tree_add_boolean(parameter_tree, hf_isup_solicited_indicator, parameter_tvb, 0, INFO_IND_LENGTH, information_indicators);
- proto_item_set_text(parameter_item, "Information indicators: 0x%x", information_indicators);
+ proto_item_set_text(parameter_item, "Information indicators: 0x%x", information_indicators);
}
/* ------------------------------------------------------------------
Dissector Parameter Continuity Indicators
*/
-void
+static void
dissect_isup_continuity_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 continuity_indicators;
continuity_indicators = tvb_get_guint8(parameter_tvb, 0);
proto_tree_add_boolean(parameter_tree, hf_isup_continuity_indicator, parameter_tvb, 0, CONTINUITY_IND_LENGTH, continuity_indicators);
- proto_item_set_text(parameter_item, "Continuity indicators: 0x%x", continuity_indicators);
+ proto_item_set_text(parameter_item, "Continuity indicators: 0x%x", continuity_indicators);
}
/* ------------------------------------------------------------------
Dissector Parameter Backward Call Indicators
*/
-void
+static void
dissect_isup_backward_call_indicators_parameter(tvbuff_t *parameter_tvb,proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 backward_call_ind;
/* ------------------------------------------------------------------
Dissector Parameter Cause Indicators - no detailed dissection since defined in Rec. Q.850
*/
-void
+static void
dissect_isup_cause_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb,0, length, "Cause indicators (-> Q.850)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb,0, length, "Cause indicators (-> Q.850)");
proto_item_set_text(parameter_item, "Cause indicators, see Q.850 (%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Suspend/Resume Indicators
*/
-void
+static void
dissect_isup_suspend_resume_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 indicators;
/* ------------------------------------------------------------------
Dissector Parameter Range and Status Indicators
*/
-void
+static void
dissect_isup_range_and_status_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 range, actual_status_length;
/* ------------------------------------------------------------------
Dissector Parameter Circuit group supervision message type
*/
-void
+static void
dissect_isup_circuit_group_supervision_message_type_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 cgs_message_type;
/* ------------------------------------------------------------------
Dissector Parameter Facility indicator parameter
*/
-void
-dissect_isup_facility_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
+static void
+dissect_isup_facility_ind_parameter(tvbuff_t *parameter_tvb, proto_item *parameter_item)
{
guint8 indicator;
/* ------------------------------------------------------------------
Dissector Parameter Circuit state indicator
*/
-void
+static void
dissect_isup_circuit_state_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *circuit_state_item;
length = tvb_length_remaining(parameter_tvb, offset);
while(length > 0){
- circuit_state_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ circuit_state_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset,
+ tvb_length_remaining(parameter_tvb, offset),
+ "Circuit# CIC+%u state", i);
circuit_state_tree = proto_item_add_subtree(circuit_state_item, ett_isup_circuit_state_ind);
circuit_state = tvb_get_guint8(parameter_tvb, offset);
if ((circuit_state & DC_8BIT_MASK) == 0){
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
- }
+ }
proto_item_set_text(parameter_item, "Circuit state indicator (national use)");
}
/* ------------------------------------------------------------------
Dissector Parameter Event information
*/
-void
+static void
dissect_isup_event_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 indicators;
/* ------------------------------------------------------------------
Dissector Parameter User-to-user information- no detailed dissection since defined in Rec. Q.931
*/
-void
+static void
dissect_isup_user_to_user_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "User-to-user info (-> Q.931)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "User-to-user info (-> Q.931)");
proto_item_set_text(parameter_item, "User-to-user information, see Q.931 (%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Call Reference
*/
-void
+static void
dissect_isup_call_reference_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint32 call_id;
call_id = tvb_get_ntoh24(parameter_tvb, 0);
spc = tvb_get_letohs(parameter_tvb, CALL_ID_LENGTH) & 0x3FFF; /*since 1st 2 bits spare */
- proto_tree_add_text(parameter_item, parameter_tvb, 0, CALL_ID_LENGTH, "Call identity: %u", call_id);
- proto_tree_add_text(parameter_item, parameter_tvb, CALL_ID_LENGTH, SPC_LENGTH, "Signalling Point Code: %u", spc);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, CALL_ID_LENGTH, "Call identity: %u", call_id);
+ proto_tree_add_text(parameter_tree, parameter_tvb, CALL_ID_LENGTH, SPC_LENGTH, "Signalling Point Code: %u", spc);
proto_item_set_text(parameter_item, "Call Reference: Call ID = %u, SPC = %u", call_id, spc);
}
/* ------------------------------------------------------------------
Dissector Parameter Access Transport - no detailed dissection since defined in Rec. Q.931
*/
-void
+static void
dissect_isup_access_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Access transport parameter field (-> Q.931)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Access transport parameter field (-> Q.931)");
proto_item_set_text(parameter_item, "Access transport, see Q.931 (%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Optional Forward Call indicators
*/
-void
+static void
dissect_isup_optional_forward_call_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 indicators;
/* ------------------------------------------------------------------
Dissector Parameter calling party number
*/
-void
+static void
dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree_add_uint(parameter_tree, hf_isup_screening_indicator, parameter_tvb, 1, 1, indicators2);
offset = 2;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Calling Party Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter Original called number
*/
-void
+static void
dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree_add_uint(parameter_tree, hf_isup_address_presentation_restricted_indicator, parameter_tvb, 1, 1, indicators2);
offset = 2;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Original Called Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter Redirecting number
*/
-void
+static void
dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree_add_uint(parameter_tree, hf_isup_address_presentation_restricted_indicator, parameter_tvb, 1, 1, indicators2);
offset = 2;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Redirecting Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter Redirection number
*/
-void dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
+static void
+dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree *address_digits_tree;
proto_tree_add_uint(parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, 1, 1, indicators2);
offset = 2;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Redirection Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter Connection request
*/
-void
+static void
dissect_isup_connection_request_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint32 local_ref;
guint8 protocol_class, credit, offset=0;
local_ref = tvb_get_ntoh24(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, offset, LOCAL_REF_LENGTH, "Local Reference: %u", local_ref);
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, LOCAL_REF_LENGTH, "Local Reference: %u", local_ref);
offset = LOCAL_REF_LENGTH;
spc = tvb_get_letohs(parameter_tvb,offset) & 0x3FFF; /*since 1st 2 bits spare */
- proto_tree_add_text(parameter_item, parameter_tvb, offset, SPC_LENGTH, "Signalling Point Code: %u", spc);
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, SPC_LENGTH, "Signalling Point Code: %u", spc);
offset += SPC_LENGTH;
protocol_class = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_text(parameter_item, parameter_tvb, offset, PROTOCOL_CLASS_LENGTH, "Protocol Class: %u", protocol_class);
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, PROTOCOL_CLASS_LENGTH, "Protocol Class: %u", protocol_class);
offset += PROTOCOL_CLASS_LENGTH;
credit = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_text(parameter_item, parameter_tvb, offset, CREDIT_LENGTH, "Credit: %u", credit);
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, CREDIT_LENGTH, "Credit: %u", credit);
offset += CREDIT_LENGTH;
proto_item_set_text(parameter_item, "Connection request: Local Reference = %u, SPC = %u, Protocol Class = %u, Credit = %u", local_ref, spc, protocol_class, credit);
/* ------------------------------------------------------------------
Dissector Parameter Redirection information
*/
-void
+static void
dissect_isup_redirection_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
if (tvb_length(parameter_tvb) == 2){
/* ------------------------------------------------------------------
Dissector Parameter Closed user group interlock code
*/
-void dissect_isup_closed_user_group_interlock_code_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
+static void
+dissect_isup_closed_user_group_interlock_code_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
char NI_digits[5]="";
guint8 digit_pair;
NI_digits[2] = number_to_char((digit_pair & HGFE_8BIT_MASK) / 0x10);
NI_digits[3] = number_to_char(digit_pair & DCBA_8BIT_MASK);
NI_digits[4] = '\0';
- proto_tree_add_text(parameter_item, parameter_tvb, 0, 2, "Network Identity: %s", NI_digits);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, 2, "Network Identity: %s", NI_digits);
bin_code = tvb_get_ntohs(parameter_tvb, 2);
- proto_tree_add_text(parameter_item, parameter_tvb, 3, 2, "Binary Code: 0x%x", bin_code);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 3, 2, "Binary Code: 0x%x", bin_code);
proto_item_set_text(parameter_item, "Closed user group interlock code: NI = %s, Binary code = 0x%x", NI_digits, bin_code);
}
/* ------------------------------------------------------------------
Dissector Parameter User service information- no detailed dissection since defined in Rec. Q.931
*/
-void
+static void
dissect_isup_user_service_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "User service information (-> Q.931)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "User service information (-> Q.931)");
proto_item_set_text(parameter_item, "User service information, see Q.931 (%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Signalling point code
*/
-void
+static void
dissect_isup_signalling_point_code_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 spc;
spc = tvb_get_letohs(parameter_tvb, 0) & 0x3FFF; /*since 1st 2 bits spare */
- proto_tree_add_text(parameter_item, parameter_tvb, 0, SIGNALLING_POINT_CODE_LENGTH, "Signalling Point Code: %u", spc);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, SIGNALLING_POINT_CODE_LENGTH, "Signalling Point Code: %u", spc);
proto_item_set_text(parameter_item, "Signalling point code: %u", spc);
}
/* ------------------------------------------------------------------
Dissector Parameter Connected number
*/
-void
+static void
dissect_isup_connected_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree_add_uint(parameter_tree, hf_isup_screening_indicator, parameter_tvb, 1, 1, indicators2);
offset = 2;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ 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);
/* ------------------------------------------------------------------
Dissector Transit network selection
*/
-void
+static void
dissect_isup_transit_network_selection_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree_add_uint(parameter_tree, hf_isup_network_identification_plan, parameter_tvb, 0, 1, indicators);
offset = 1;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Network identification");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter Circuit assignment map
*/
-void
+static void
dissect_isup_circuit_assignment_map_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 map_type;
map_type = tvb_get_guint8(parameter_tvb, 0);
proto_tree_add_uint(parameter_tree, hf_isup_map_type, parameter_tvb, 0, 1, map_type);
- proto_tree_add_text(parameter_item, parameter_tvb, 1, 5, "Circuit assignment map (bit position indicates usage of corresponding circuit->3.69/Q.763)");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 1, 5, "Circuit assignment map (bit position indicates usage of corresponding circuit->3.69/Q.763)");
proto_item_set_text(parameter_item, "Circuit assignment map");
}
/* ------------------------------------------------------------------
Dissector Parameter Automatic congestion level
*/
-void
+static void
dissect_isup_automatic_congestion_level_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 congestion_level;
/* ------------------------------------------------------------------
Dissector Parameter Optional backward Call indicators
*/
-void
+static void
dissect_isup_optional_backward_call_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 indicators;
/* ------------------------------------------------------------------
Dissector Parameter User-to-user indicators
*/
-void
+static void
dissect_isup_user_to_user_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 indicators;
indicators = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, USER_TO_USER_IND_LENGTH, "User-to-user indicators: 0x%x (refer to 3.60/Q.763 for detailed decoding)", indicators );
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, USER_TO_USER_IND_LENGTH, "User-to-user indicators: 0x%x (refer to 3.60/Q.763 for detailed decoding)", indicators );
proto_item_set_text(parameter_item,"User-to-user indicators: 0x%x", indicators );
}
/* ------------------------------------------------------------------
Dissector Parameter Original ISC point code
*/
-void
+static void
dissect_isup_original_isc_point_code_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 spc;
spc = tvb_get_letohs(parameter_tvb, 0) & 0x3FFF; /*since 1st 2 bits spare */
- proto_tree_add_text(parameter_item, parameter_tvb, 0, ORIGINAL_ISC_POINT_CODE_LENGTH, "Origination ISC Point Code: %u", spc);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, ORIGINAL_ISC_POINT_CODE_LENGTH, "Origination ISC Point Code: %u", spc);
proto_item_set_text(parameter_item, "Origination ISC point code: %u", spc);
}
/* ------------------------------------------------------------------
Dissector Parameter Generic notification indicator
*/
-void
+static void
dissect_isup_generic_notification_indicator_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 indicators;
indicators = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, GENERIC_NOTIFICATION_IND_LENGTH, "Generic notification indicator: 0x%x (refer to 3.25/Q.763 for detailed decoding)", indicators );
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, GENERIC_NOTIFICATION_IND_LENGTH, "Generic notification indicator: 0x%x (refer to 3.25/Q.763 for detailed decoding)", indicators );
proto_item_set_text(parameter_item,"Generic notification indicator: 0x%x", indicators );
}
/* ------------------------------------------------------------------
Dissector Parameter Call history information
*/
-void
+static void
dissect_isup_call_history_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 info;
info = tvb_get_ntohs(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, CALL_HISTORY_INFO_LENGTH, "Call history info: propagation delay = %u ms", info);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, CALL_HISTORY_INFO_LENGTH, "Call history info: propagation delay = %u ms", info);
proto_item_set_text(parameter_item,"Call history info: propagation delay = %u ms", info);
}
/* ------------------------------------------------------------------
Dissector Parameter Access delivery information
*/
-void
+static void
dissect_isup_access_delivery_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
/* ------------------------------------------------------------------
Dissector Parameter Network specific facility
*/
-void
+static void
dissect_isup_network_specific_facility_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Network specific facility (refer to 3.36/Q.763 for detailed decoding)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Network specific facility (refer to 3.36/Q.763 for detailed decoding)");
proto_item_set_text(parameter_item, "Network specific facility (%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter User service information prime
*/
-void
+static void
dissect_isup_user_service_information_prime_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "User service information prime (-> Q.931)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "User service information prime (-> Q.931)");
proto_item_set_text(parameter_item, "User service information prime, see Q.931 (%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Propagation delay counter
*/
-void
+static void
dissect_isup_propagation_delay_counter_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 info;
info = tvb_get_ntohs(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, PROPAGATION_DELAY_COUNT_LENGTH, "Propagation delay counter = %u ms", info);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, PROPAGATION_DELAY_COUNT_LENGTH, "Propagation delay counter = %u ms", info);
proto_item_set_text(parameter_item,"Propagation delay counter = %u ms", info);
}
/* ------------------------------------------------------------------
Dissector Parameter Remote operations
*/
-void
+static void
dissect_isup_remote_operations_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Remote operations");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Remote operations");
proto_item_set_text(parameter_item, "Remote operations (%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Service activation
*/
-void
+static void
dissect_isup_service_activation_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- uint i;
+ guint i;
guint8 feature_code;
- uint length = tvb_length(parameter_tvb);
+ guint length = tvb_length(parameter_tvb);
for (i=0; i< length; i++){
feature_code = tvb_get_guint8(parameter_tvb, i);
- proto_tree_add_text(parameter_item, parameter_tvb, i, 1, "Feature Code %u: %u", i+1, feature_code);
+ proto_tree_add_text(parameter_tree, parameter_tvb, i, 1, "Feature Code %u: %u", i+1, feature_code);
}
proto_item_set_text(parameter_item, "Service Activation (%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter User service information prime - no detailed dissection since defined in Rec. Q.931
*/
-void
+static void
dissect_isup_user_teleservice_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_text(parameter_item, parameter_tvb, 0, USER_TELESERVICE_INFO_LENGTH, "User teleservice information (-> Q.931)");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, USER_TELESERVICE_INFO_LENGTH, "User teleservice information (-> Q.931)");
proto_item_set_text(parameter_item, "User teleservice information, see Q.931");
}
/* ------------------------------------------------------------------
Dissector Parameter Transmission medium requirement used
*/
-void
+static void
dissect_isup_transmission_medium_used_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 transmission_medium_requirement;
/* ------------------------------------------------------------------
Dissector Parameter Call diversion information
*/
-void
+static void
dissect_isup_call_diversion_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, CALL_DIV_INFO_LENGTH, "Call diversion information: 0x%x (refer to 3.6/Q.763 for detailed decoding)", indicator);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, CALL_DIV_INFO_LENGTH, "Call diversion information: 0x%x (refer to 3.6/Q.763 for detailed decoding)", indicator);
proto_item_set_text(parameter_item, "Call diversion information: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Dissector Parameter Echo control information
*/
-void
+static void
dissect_isup_echo_control_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, ECHO_CONTROL_INFO_LENGTH, "Echo control information: 0x%x (refer to 3.19/Q.763 for detailed decoding)", indicator);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, ECHO_CONTROL_INFO_LENGTH, "Echo control information: 0x%x (refer to 3.19/Q.763 for detailed decoding)", indicator);
proto_item_set_text(parameter_item, "Echo control information: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Dissector Parameter Message compatibility information
*/
-void
+static void
dissect_isup_message_compatibility_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Message compatibility information (refer to 3.33/Q.763 for detailed decoding)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Message compatibility information (refer to 3.33/Q.763 for detailed decoding)");
proto_item_set_text(parameter_item, "Message compatibility information (%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter compatibility information
*/
-void
+static void
dissect_isup_parameter_compatibility_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Parameter compatibility information (refer to 3.41/Q.763 for detailed decoding)");
+ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Parameter compatibility information (refer to 3.41/Q.763 for detailed decoding)");
proto_item_set_text(parameter_item, "Parameter compatibility information (%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter MLPP precedence
*/
-void dissect_isup_mlpp_precedence_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
+static void
+dissect_isup_mlpp_precedence_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
char NI_digits[5]="";
guint8 indicators, digit_pair;
guint32 bin_code;
indicators = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, 1, "LFB (Bits 6+7) and precedence level (Bits 1-4): 0x%x",indicators);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, 1, "LFB (Bits 6+7) and precedence level (Bits 1-4): 0x%x",indicators);
digit_pair = tvb_get_guint8(parameter_tvb, 1);
NI_digits[0] = number_to_char((digit_pair & HGFE_8BIT_MASK) / 0x10);
NI_digits[1] = number_to_char(digit_pair & DCBA_8BIT_MASK);
NI_digits[2] = number_to_char((digit_pair & HGFE_8BIT_MASK) / 0x10);
NI_digits[3] = number_to_char(digit_pair & DCBA_8BIT_MASK);
NI_digits[4] = '\0';
- proto_tree_add_text(parameter_item, parameter_tvb, 1, 2, "Network Identity: %s", NI_digits);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 1, 2, "Network Identity: %s", NI_digits);
bin_code = tvb_get_ntoh24(parameter_tvb, 3);
- proto_tree_add_text(parameter_item, parameter_tvb, 3, 3, "MLPP service domain: 0x%x", bin_code);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 3, 3, "MLPP service domain: 0x%x", bin_code);
proto_item_set_text(parameter_item, "MLPP precedence: NI = %s, MLPP service domain = 0x%x", NI_digits, bin_code);
}
/* ------------------------------------------------------------------
Dissector Parameter MCID request indicators
*/
-void
+static void
dissect_isup_mcid_request_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0,MCID_REQUEST_IND_LENGTH, "MCID request indicators: 0x%x (MCID requested by Bit1=1, Holding requested by Bit2=1 see 3.31/Q.763)", indicator);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0,MCID_REQUEST_IND_LENGTH, "MCID request indicators: 0x%x (MCID requested by Bit1=1, Holding requested by Bit2=1 see 3.31/Q.763)", indicator);
proto_item_set_text(parameter_item, "MCID request indicators: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Dissector Parameter MCID response indicators
*/
-void
+static void
dissect_isup_mcid_response_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0,MCID_RESPONSE_IND_LENGTH, "MCID response indicators: 0x%x (MCID included if Bit1=1, Holding provided if Bit2=1 see 3.32/Q.763)", indicator);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0,MCID_RESPONSE_IND_LENGTH, "MCID response indicators: 0x%x (MCID included if Bit1=1, Holding provided if Bit2=1 see 3.32/Q.763)", indicator);
proto_item_set_text(parameter_item, "MCID response indicators: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Dissector Parameter Hop counter
*/
-void
+static void
dissect_isup_hop_counter_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 counter;
counter = tvb_get_guint8(parameter_tvb, 0) & EDCBA_8BIT_MASK; /* since bits H,G and F are spare */
- proto_tree_add_text(parameter_item, parameter_tvb, 0, HOP_COUNTER_LENGTH, "Hop counter: %u", counter);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, HOP_COUNTER_LENGTH, "Hop counter: %u", counter);
proto_item_set_text(parameter_item, "Hop counter: %u", counter);
}
/* ------------------------------------------------------------------
Dissector Parameter Transmission medium requirement prime
*/
-void
+static void
dissect_isup_transmission_medium_requirement_prime_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 transmission_medium_requirement;
/* ------------------------------------------------------------------
Dissector Parameter location number
*/
-void
+static void
dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree_add_boolean(parameter_tree, hf_isup_inn_indicator, parameter_tvb, 1, 1, indicators2);
proto_tree_add_uint(parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, 1, 1, indicators2);
if ((indicators2 & GFE_8BIT_MASK) == 0x50)
- proto_tree_add_text(parameter_item, parameter_tvb, 1, 1, "Different meaning for Location Number: Numbering plan indicator = private numbering plan");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 1, 1, "Different meaning for Location Number: Numbering plan indicator = private numbering plan");
proto_tree_add_uint(parameter_tree, hf_isup_address_presentation_restricted_indicator, parameter_tvb, 1, 1, indicators2);
proto_tree_add_uint(parameter_tree, hf_isup_screening_indicator, parameter_tvb, 1, 1, indicators2);
offset = 2;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Location number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter Redirection number restiriction
*/
-void
+static void
dissect_isup_redirection_number_restriction_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
switch (indicator & BA_8BIT_MASK) {
case 0:
- proto_tree_add_text(parameter_item, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: Presentation allowed");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: Presentation allowed");
break;
case 1:
- proto_tree_add_text(parameter_item, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: Presentation restricted");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: Presentation restricted");
break;
default:
- proto_tree_add_text(parameter_item, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: spare");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: spare");
break;
}
proto_item_set_text(parameter_item, "Redirection number restriction: 0x%x ", indicator);
/* ------------------------------------------------------------------
Dissector Parameter Call transfer identity
*/
-void
+static void
dissect_isup_call_transfer_reference_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 id;
id = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, CALL_TRANSFER_REF_LENGTH, "Call transfer identity: %u", id);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, CALL_TRANSFER_REF_LENGTH, "Call transfer identity: %u", id);
proto_item_set_text(parameter_item, "Call transfer reference: %u", id);
}
/* ------------------------------------------------------------------
Dissector Parameter Loop prevention
*/
-void
+static void
dissect_isup_loop_prevention_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
if ((indicator & A_8BIT_MASK)==0) {
- proto_tree_add_text(parameter_item, parameter_tvb, 0, LOOP_PREVENTION_IND_LENGTH, "Type: Request");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, LOOP_PREVENTION_IND_LENGTH, "Type: Request");
proto_item_set_text(parameter_item, "Loop prevention indicators: Request (%u)", indicator);
}
else {
- proto_tree_add_text(parameter_item, parameter_tvb, 0, LOOP_PREVENTION_IND_LENGTH, "Type: Response");
- proto_tree_add_uint(parameter_item, hf_isup_loop_prevention_response_ind, parameter_tvb, 0, LOOP_PREVENTION_IND_LENGTH, indicator);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, LOOP_PREVENTION_IND_LENGTH, "Type: Response");
+ proto_tree_add_uint(parameter_tree, hf_isup_loop_prevention_response_ind, parameter_tvb, 0, LOOP_PREVENTION_IND_LENGTH, indicator);
proto_item_set_text(parameter_item, "Loop prevention indicators: Response (%u)", indicator);
}
}
/* ------------------------------------------------------------------
Dissector Parameter Call transfer number
*/
-void
+static void
dissect_isup_call_transfer_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
indicators2 = tvb_get_guint8(parameter_tvb, 1);
proto_tree_add_uint(parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, 1, 1, indicators2);
if ((indicators2 & GFE_8BIT_MASK) == 0x50)
- proto_tree_add_text(parameter_item, parameter_tvb, 1, 1, "Different meaning for Call Transfer Number: Numbering plan indicator = private numbering plan");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 1, 1, "Different meaning for Call Transfer Number: Numbering plan indicator = private numbering plan");
proto_tree_add_uint(parameter_tree, hf_isup_address_presentation_restricted_indicator, parameter_tvb, 1, 1, indicators2);
proto_tree_add_uint(parameter_tree, hf_isup_screening_indicator_enhanced, parameter_tvb, 1, 1, indicators2);
offset = 2;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Call transfer number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter CCSS
*/
-void
+static void
dissect_isup_ccss_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
if ((indicator & A_8BIT_MASK)==0) {
- proto_tree_add_text(parameter_item, parameter_tvb, 0, LOOP_PREVENTION_IND_LENGTH, "CCSS call indicator: no indication");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, LOOP_PREVENTION_IND_LENGTH, "CCSS call indicator: no indication");
proto_item_set_text(parameter_item, "CCSS call indicator: no indication (%u)", indicator);
}
else {
- proto_tree_add_text(parameter_item, parameter_tvb, 0, LOOP_PREVENTION_IND_LENGTH, "CCSS call indicator: CCSS call");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, LOOP_PREVENTION_IND_LENGTH, "CCSS call indicator: CCSS call");
proto_item_set_text(parameter_item, "CCSS call indicator: CCSS call (%u)", indicator);
}
}
/* ------------------------------------------------------------------
Parameter Forward GVNS
*/
-void
+static void
dissect_isup_forward_gvns_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Forward GVNS (refer to 3.66/Q.763 for detailed decoding)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Forward GVNS (refer to 3.66/Q.763 for detailed decoding)");
proto_item_set_text(parameter_item, "Forward GVNS (%u Byte%s)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Parameter Redirect capability
*/
-void
+static void
dissect_isup_redirect_capability_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Redirect capability (format is a national matter)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Redirect capability (format is a national matter)");
proto_item_set_text(parameter_item, "Redirect Capability (%u Byte%s)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Backward GVNS
*/
-void
+static void
dissect_isup_backward_gvns_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, BACKWARD_GVNS_LENGTH, "Backward GVNS: 0x%x (refer to 3.62/Q.763 for detailed decoding)", indicator);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, BACKWARD_GVNS_LENGTH, "Backward GVNS: 0x%x (refer to 3.62/Q.763 for detailed decoding)", indicator);
proto_item_set_text(parameter_item, "Backward GVNS: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Dissector Parameter Network management controls
*/
-void
+static void
dissect_isup_network_management_controls_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_boolean(parameter_item, hf_isup_temporary_alternative_routing_ind, parameter_tvb, 0,NETWORK_MANAGEMENT_CONTROLS_LENGTH, indicator);
- proto_tree_add_boolean(parameter_item, hf_isup_extension_ind, parameter_tvb, 0,NETWORK_MANAGEMENT_CONTROLS_LENGTH, indicator);
+ proto_tree_add_boolean(parameter_tree, hf_isup_temporary_alternative_routing_ind, parameter_tvb, 0,NETWORK_MANAGEMENT_CONTROLS_LENGTH, indicator);
+ proto_tree_add_boolean(parameter_tree, hf_isup_extension_ind, parameter_tvb, 0,NETWORK_MANAGEMENT_CONTROLS_LENGTH, indicator);
proto_item_set_text(parameter_item, "Network management controls: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Dissector Parameter Correlation id - no detailed dissection since defined in Rec. Q.1281
*/
-void
+static void
dissect_isup_correlation_id_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Correlation ID (-> Q.1281)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Correlation ID (-> Q.1281)");
proto_item_set_text(parameter_item, "Correlation ID, see Q.1281 (%u Byte%s)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter SCF id - no detailed dissection since defined in Rec. Q.1281
*/
-void
+static void
dissect_isup_scf_id_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "SCF ID (-> Q.1281)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "SCF ID (-> Q.1281)");
proto_item_set_text(parameter_item, "SCF ID, see Q.1281 (%u Byte%s)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Call diversion treatment indicators
*/
-void
+static void
dissect_isup_call_diversion_treatment_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_uint(parameter_item, hf_isup_call_to_be_diverted_ind, parameter_tvb, 0,CALL_DIV_TREATMENT_IND_LENGTH, indicator);
- proto_tree_add_boolean(parameter_item, hf_isup_extension_ind, parameter_tvb, 0, CALL_DIV_TREATMENT_IND_LENGTH, indicator);
+ proto_tree_add_uint(parameter_tree, hf_isup_call_to_be_diverted_ind, parameter_tvb, 0,CALL_DIV_TREATMENT_IND_LENGTH, indicator);
+ proto_tree_add_boolean(parameter_tree, hf_isup_extension_ind, parameter_tvb, 0, CALL_DIV_TREATMENT_IND_LENGTH, indicator);
proto_item_set_text(parameter_item, "Call diversion treatment indicators: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Dissector Parameter called IN number
*/
-void
+static void
dissect_isup_called_in_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree_add_uint(parameter_tree, hf_isup_address_presentation_restricted_indicator, parameter_tvb, 1, 1, indicators2);
offset = 2;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Called IN Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter Call offering treatment indicators
*/
-void
+static void
dissect_isup_call_offering_treatment_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_uint(parameter_item, hf_isup_call_to_be_offered_ind, parameter_tvb, 0,CALL_OFFERING_TREATMENT_IND_LENGTH, indicator);
- proto_tree_add_boolean(parameter_item, hf_isup_extension_ind, parameter_tvb, 0, CALL_OFFERING_TREATMENT_IND_LENGTH, indicator);
+ proto_tree_add_uint(parameter_tree, hf_isup_call_to_be_offered_ind, parameter_tvb, 0,CALL_OFFERING_TREATMENT_IND_LENGTH, indicator);
+ proto_tree_add_boolean(parameter_tree, hf_isup_extension_ind, parameter_tvb, 0, CALL_OFFERING_TREATMENT_IND_LENGTH, indicator);
proto_item_set_text(parameter_item, "Call offering treatment indicators: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Parameter Charged party identification
*/
-void
+static void
dissect_isup_charged_party_identification_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Charged party identification (format is national network specific)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Charged party identification (format is national network specific)");
proto_item_set_text(parameter_item, "Charged party identification (%u Byte%s)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Conference treatment indicators
*/
-void
+static void
dissect_isup_conference_treatment_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_uint(parameter_item, hf_isup_conference_acceptance_ind, parameter_tvb, 0,CONFERENCE_TREATMENT_IND_LENGTH, indicator);
- proto_tree_add_boolean(parameter_item, hf_isup_extension_ind, parameter_tvb, 0, CONFERENCE_TREATMENT_IND_LENGTH, indicator);
+ proto_tree_add_uint(parameter_tree, hf_isup_conference_acceptance_ind, parameter_tvb, 0,CONFERENCE_TREATMENT_IND_LENGTH, indicator);
+ proto_tree_add_boolean(parameter_tree, hf_isup_extension_ind, parameter_tvb, 0, CONFERENCE_TREATMENT_IND_LENGTH, indicator);
proto_item_set_text(parameter_item, "Conference treatment indicators: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Dissector Parameter Display information
*/
-void
+static void
dissect_isup_display_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Display information (-> Q.931)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Display information (-> Q.931)");
proto_item_set_text(parameter_item, "Display information (%u Byte%s)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Parameter UID action indicators
*/
-void
+static void
dissect_isup_uid_action_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0,UID_ACTION_IND_LENGTH, "UID action indicators: 0x%x (refer to 3.78/Q.763 for detailed decoding)", indicator);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0,UID_ACTION_IND_LENGTH, "UID action indicators: 0x%x (refer to 3.78/Q.763 for detailed decoding)", indicator);
proto_item_set_text(parameter_item, "UID action indicators: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Parameter UID capability indicators
*/
-void
+static void
dissect_isup_uid_capability_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_text(parameter_item, parameter_tvb, 0,UID_CAPABILITY_IND_LENGTH, "UID capability indicators: 0x%x (refer to 3.79/Q.763 for detailed decoding)", indicator);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0,UID_CAPABILITY_IND_LENGTH, "UID capability indicators: 0x%x (refer to 3.79/Q.763 for detailed decoding)", indicator);
proto_item_set_text(parameter_item, "UID capability indicators: 0x%x", indicator);
}
/* ------------------------------------------------------------------
Parameter Redirect counter
*/
-void
+static void
dissect_isup_redirect_counter_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Redirect counter (format is a national matter)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Redirect counter (format is a national matter)");
proto_item_set_text(parameter_item, "Redirect counter (%u Byte%s)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Collect call request
*/
-void
+static void
dissect_isup_collect_call_request_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint8 indicator;
indicator = tvb_get_guint8(parameter_tvb, 0);
if ((indicator & A_8BIT_MASK) == 0) {
- proto_tree_add_text(parameter_item, parameter_tvb, 0, COLLECT_CALL_REQUEST_LENGTH, "Collect call request indicator: no indication");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, COLLECT_CALL_REQUEST_LENGTH, "Collect call request indicator: no indication");
proto_item_set_text(parameter_item, "Collect call reqeust: no indication (0x%x)", indicator);
}
else {
- proto_tree_add_text(parameter_item, parameter_tvb, 0, COLLECT_CALL_REQUEST_LENGTH, "Collect call request indicator: collect call requested");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, COLLECT_CALL_REQUEST_LENGTH, "Collect call request indicator: collect call requested");
proto_item_set_text(parameter_item, "Collect call reqeust: collect call requested (0x%x)", indicator);
}
}
/* ------------------------------------------------------------------
Dissector Parameter Generic number
*/
-void
+static void
dissect_isup_generic_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
proto_tree_add_boolean(parameter_tree, hf_isup_ni_indicator, parameter_tvb, 2, 1, indicators2);
proto_tree_add_uint(parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, 2, 1, indicators2);
if ((indicators2 & GFE_8BIT_MASK) == 0x50)
- proto_tree_add_text(parameter_item, parameter_tvb, 2, 1, "Different meaning for Generic Number: Numbering plan indicator = private numbering plan");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 2, 1, "Different meaning for Generic Number: Numbering plan indicator = private numbering plan");
proto_tree_add_uint(parameter_tree, hf_isup_address_presentation_restricted_indicator, parameter_tvb, 2, 1, indicators2);
proto_tree_add_uint(parameter_tree, hf_isup_screening_indicator_enhanced, parameter_tvb, 2, 1, indicators2);
offset = 3;
- address_digits_item = proto_tree_add_notext(parameter_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset));
+ address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
+ offset, -1,
+ "Generic number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
/* ------------------------------------------------------------------
Dissector Parameter Generic digits
*/
-void
+static void
dissect_isup_generic_digits_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
- proto_tree_add_text(parameter_item, parameter_tvb, 0, length, "Generic digits (refer to 3.24/Q.673 for detailed decoding)");
+{ guint length = tvb_length(parameter_tvb);
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length, "Generic digits (refer to 3.24/Q.673 for detailed decoding)");
proto_item_set_text(parameter_item, "Generic digits (%u Byte%s)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------ */
-void
-dissect_isup_unknown_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
-{ uint length = tvb_length(parameter_tvb);
+static void
+dissect_isup_unknown_parameter(tvbuff_t *parameter_tvb, proto_item *parameter_item)
+{ guint length = tvb_length(parameter_tvb);
proto_item_set_text(parameter_item, "Parameter Type unknown/reserved (%u Byte%s)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------ */
/* ------------------------------------------------------------------
Dissector all optional parameters
*/
-void
+static void
dissect_isup_optional_parameter(tvbuff_t *optional_parameters_tvb, proto_tree *isup_tree)
{ proto_item* parameter_item;
proto_tree* parameter_tree;
if (parameter_type != PARAM_TYPE_END_OF_OPT_PARAMS){
parameter_length = tvb_get_guint8(optional_parameters_tvb, offset + PARAMETER_TYPE_LENGTH);
- parameter_item = proto_tree_add_notext(isup_tree, optional_parameters_tvb , offset, parameter_length + PARAMETER_TYPE_LENGTH + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, optional_parameters_tvb,
+ offset,
+ parameter_length + PARAMETER_TYPE_LENGTH + PARAMETER_LENGTH_IND_LENGTH,
+ "Parameter: type %u",
+ parameter_type);
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, optional_parameters_tvb, offset, PARAMETER_TYPE_LENGTH, parameter_type, "Optional Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
offset += PARAMETER_TYPE_LENGTH;
dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
break;
case PARAM_TYPE_FACILITY_IND:
- dissect_isup_facility_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
+ dissect_isup_facility_ind_parameter(parameter_tvb, parameter_item);
break;
case PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD:
dissect_isup_closed_user_group_interlock_code_parameter(parameter_tvb, parameter_tree, parameter_item);
dissect_isup_generic_digits_parameter(parameter_tvb, parameter_tree, parameter_item);
break;
default:
- dissect_isup_unknown_parameter(parameter_tvb, parameter_tree, parameter_item);
+ dissect_isup_unknown_parameter(parameter_tvb, parameter_item);
break;
}
offset += MIN(parameter_length, actual_length);
/* Do stuff for first mandatory fixed parameter: Nature of Connection Indicators */
parameter_type = PARAM_TYPE_NATURE_OF_CONN_IND;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, NATURE_OF_CONNECTION_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ NATURE_OF_CONNECTION_IND_LENGTH,
+ "Nature of Connection Indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(NATURE_OF_CONNECTION_IND_LENGTH, actual_length), NATURE_OF_CONNECTION_IND_LENGTH);
dissect_isup_nature_of_connection_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += NATURE_OF_CONNECTION_IND_LENGTH;
/* Do stuff for 2nd mandatory fixed parameter: Forward Call Indicators */
parameter_type = PARAM_TYPE_FORW_CALL_IND;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, FORWARD_CALL_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ FORWARD_CALL_IND_LENGTH,
+ "Forward Call Indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(FORWARD_CALL_IND_LENGTH, actual_length), FORWARD_CALL_IND_LENGTH );
dissect_isup_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += FORWARD_CALL_IND_LENGTH;
/* Do stuff for 3nd mandatory fixed parameter: Calling party's category */
parameter_type = PARAM_TYPE_CALLING_PRTY_CATEG;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, CALLING_PRTYS_CATEGORY_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ CALLING_PRTYS_CATEGORY_LENGTH,
+ "Calling Party's category");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(CALLING_PRTYS_CATEGORY_LENGTH, actual_length),CALLING_PRTYS_CATEGORY_LENGTH );
dissect_isup_calling_partys_category_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += CALLING_PRTYS_CATEGORY_LENGTH;
/* Do stuff for 4th mandatory fixed parameter: Transmission medium requirement */
parameter_type = PARAM_TYPE_TRANSM_MEDIUM_REQU;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH,
+ "Transmission medium requirement");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH, actual_length), TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH);
dissect_isup_transmission_medium_requirement_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH;
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Called Party Number");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
dissect_isup_called_party_number_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Subsequent Number");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
dissect_isup_subsequent_number_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
/* Do stuff for first mandatory fixed parameter: Information request indicators*/
parameter_type = PARAM_TYPE_INFO_REQ_IND;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, INFO_REQUEST_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ INFO_REQUEST_IND_LENGTH,
+ "Information request indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(INFO_REQUEST_IND_LENGTH, actual_length), INFO_REQUEST_IND_LENGTH);
dissect_isup_information_request_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += INFO_REQUEST_IND_LENGTH;
/* Do stuff for first mandatory fixed parameter: Information indicators*/
parameter_type = PARAM_TYPE_INFO_IND;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, INFO_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ INFO_IND_LENGTH,
+ "Information indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(INFO_IND_LENGTH, actual_length), INFO_IND_LENGTH);
dissect_isup_information_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += INFO_IND_LENGTH;
/* Do stuff for first mandatory fixed parameter: Continuity indicators*/
parameter_type = PARAM_TYPE_CONTINUITY_IND;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, CONTINUITY_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ CONTINUITY_IND_LENGTH,
+ "Continuity indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(CONTINUITY_IND_LENGTH, actual_length), CONTINUITY_IND_LENGTH);
dissect_isup_continuity_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += CONTINUITY_IND_LENGTH;
/* Do stuff for first mandatory fixed parameter: backward call indicators*/
parameter_type = PARAM_TYPE_BACKW_CALL_IND;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, BACKWARD_CALL_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ BACKWARD_CALL_IND_LENGTH,
+ "Backward Call Indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(BACKWARD_CALL_IND_LENGTH, actual_length), BACKWARD_CALL_IND_LENGTH);
dissect_isup_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += BACKWARD_CALL_IND_LENGTH;
/* Do stuff for first mandatory fixed parameter: backward call indicators*/
parameter_type = PARAM_TYPE_BACKW_CALL_IND;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, BACKWARD_CALL_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ BACKWARD_CALL_IND_LENGTH,
+ "Backward Call Indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(BACKWARD_CALL_IND_LENGTH, actual_length), BACKWARD_CALL_IND_LENGTH);
dissect_isup_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += BACKWARD_CALL_IND_LENGTH;
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Cause indicators, see Q.850");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
/* Do stuff for first mandatory fixed parameter: backward call indicators*/
parameter_type = PARAM_TYPE_SUSP_RESUME_IND;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, SUSPEND_RESUME_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ SUSPEND_RESUME_IND_LENGTH,
+ "Suspend/Resume indicator");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(SUSPEND_RESUME_IND_LENGTH, actual_length), SUSPEND_RESUME_IND_LENGTH);
dissect_isup_suspend_resume_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += SUSPEND_RESUME_IND_LENGTH;
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Range and status");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
/* Do stuff for first mandatory fixed parameter: circuit group supervision message type*/
parameter_type = PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, CIRC_GRP_SV_MSG_TYPE_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ CIRC_GRP_SV_MSG_TYPE_LENGTH,
+ "Circuit group supervision message type");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(CIRC_GRP_SV_MSG_TYPE_LENGTH, actual_length), CIRC_GRP_SV_MSG_TYPE_LENGTH);
dissect_isup_circuit_group_supervision_message_type_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += CIRC_GRP_SV_MSG_TYPE_LENGTH;
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Facility indicator");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
- dissect_isup_facility_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
+ dissect_isup_facility_ind_parameter(parameter_tvb, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
return offset;
/* Do stuff for first mandatory fixed parameter: facility indicators*/
parameter_type = PARAM_TYPE_FACILITY_IND;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, FACILITY_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ FACILITY_IND_LENGTH,
+ "Facility indicator");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(FACILITY_IND_LENGTH, actual_length), FACILITY_IND_LENGTH);
- dissect_isup_facility_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
+ dissect_isup_facility_ind_parameter(parameter_tvb, parameter_item);
offset += FACILITY_IND_LENGTH;
return offset;
}
/* Do stuff for first mandatory fixed parameter: facility indicators*/
parameter_type = PARAM_TYPE_FACILITY_IND;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, FACILITY_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ FACILITY_IND_LENGTH,
+ "Facility indicator");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(FACILITY_IND_LENGTH, actual_length), FACILITY_IND_LENGTH);
- dissect_isup_facility_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
+ dissect_isup_facility_ind_parameter(parameter_tvb, parameter_item);
offset += FACILITY_IND_LENGTH;
/* Do stuff for mandatory variable parameter Cause indicators */
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Cause indicators, see Q.850");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Range and status");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Range and status");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Circuit state indicator (national use)");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
dissect_isup_circuit_state_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
/* Do stuff for first mandatory fixed parameter: Event information*/
parameter_type = PARAM_TYPE_EVENT_INFO;
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb, offset, EVENT_INFO_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ EVENT_INFO_LENGTH,
+ "Event information");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(EVENT_INFO_LENGTH, actual_length), EVENT_INFO_LENGTH);
dissect_isup_event_information_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += EVENT_INFO_LENGTH;
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "User-to-user information, see Q.931");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
dissect_isup_user_to_user_information_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
parameter_pointer = tvb_get_guint8(message_tvb, offset);
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_notext(isup_tree, message_tvb , offset + parameter_pointer, parameter_length + PARAMETER_LENGTH_IND_LENGTH);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Cause indicators, see Q.850");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_length_remaining(message_tvb, offset);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += PARAMETER_POINTER_LENGTH;
return offset;
}
/* ------------------------------------------------------------------ */
-void
+static void
dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup_tree)
{
tvbuff_t *parameter_tvb;
/* Extract message type field */
message_type = tvb_get_guint8(message_tvb,0);
- if (check_col(pinfo->fd, COL_INFO)){
- col_append_str(pinfo->fd, COL_INFO, val_to_str(message_type, isup_message_type_value, "reserved"));
- col_append_str(pinfo->fd, COL_INFO, " ");
+ if (check_col(pinfo->cinfo, COL_INFO)){
+ col_append_str(pinfo->cinfo, COL_INFO, val_to_str(message_type, isup_message_type_value, "reserved"));
+ col_append_str(pinfo->cinfo, COL_INFO, " ");
}
proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type, "Message type: %s (%u)", val_to_str(message_type, isup_message_type_value, "reserved"), message_type);
offset += MESSAGE_TYPE_LENGTH;
- bufferlength = tvb_length_remaining(message_tvb, offset);
+ bufferlength = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, bufferlength, bufferlength);
/* distinguish between message types:*/
/* call dissect_isup_message recursively */
{ guint8 pa_message_type;
pa_message_type = tvb_get_guint8(parameter_tvb, 0);
- pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, tvb_length_remaining(parameter_tvb, offset), "Pass-along: %s Message (%u)", val_to_str(pa_message_type, isup_message_type_value, "reserved"), pa_message_type);
+ pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1, "Pass-along: %s Message (%u)", val_to_str(pa_message_type, isup_message_type_value, "reserved"), pa_message_type);
pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message);
dissect_isup_message(parameter_tvb, pinfo, pass_along_tree);
break;
}
/* ------------------------------------------------------------------ */
-void
+static void
dissect_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint16 cic;
/* Make entries in Protocol column and Info column on summary display */
- if (check_col(pinfo->fd, COL_PROTOCOL))
- col_set_str(pinfo->fd, COL_PROTOCOL, "ISUP");
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP");
- if (check_col(pinfo->fd, COL_INFO))
- col_add_str(pinfo->fd, COL_INFO, "ISUP message: ");
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_add_str(pinfo->cinfo, COL_INFO, "ISUP message: ");
/* 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_isup, tvb, 0, tvb_length(tvb), FALSE);
+ ti = proto_tree_add_item(tree, proto_isup, tvb, 0, -1, FALSE);
isup_tree = proto_item_add_subtree(ti, ett_isup);
/* dissect CIC in main dissector since pass-along message type carrying complete IUSP message w/o CIC needs
{ &hf_isup_cic,
{ "CIC", "isup.cic",
FT_UINT16, BASE_HEX, NULL, 0xFF0F,
- "" }},
+ "", HFILL }},
{ &hf_isup_message_type,
{ "Message Type", "isup.message_type",
FT_UINT8, BASE_DEC, NULL, 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_parameter_type,
{ "Parameter Type", "isup.parameter_type",
FT_UINT8, BASE_DEC, NULL, 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_parameter_length,
{ "Parameter Length", "isup.parameter_length",
FT_UINT8, BASE_DEC, NULL, 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_mandatory_variable_parameter_pointer,
{ "Pointer to Parameter", "isup.mandatory_variable_parameter_pointer",
FT_UINT8, BASE_DEC, NULL, 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_pointer_to_start_of_optional_part,
{ "Pointer to optional parameter part", "isup.optional_parameter_part_pointer",
FT_UINT8, BASE_DEC, NULL, 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_satellite_indicator,
{ "Satellite Indicator", "isup.satellite_indicator",
FT_UINT8, BASE_HEX, VALS(isup_satellite_ind_value), BA_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_continuity_check_indicator,
{ "Continuity Check Indicator", "isup.continuity_check_indicator",
FT_UINT8, BASE_HEX, VALS(isup_continuity_check_ind_value), DC_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_echo_control_device_indicator,
{ "Echo Control Device Indicator", "isup.echo_control_device_indicator",
FT_BOOLEAN, 8, TFS(&isup_echo_control_device_ind_value),E_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_forw_call_natnl_inatnl_call_indicator,
{ "National/international call indicator", "isup.forw_call_natnl_inatnl_call_indicator",
FT_BOOLEAN, 16, TFS(&isup_natnl_inatnl_call_ind_value),A_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_forw_call_end_to_end_method_indicator,
{ "End-to-end method indicator", "isup.forw_call_end_to_end_method_indicator",
FT_UINT16, BASE_HEX, VALS(isup_end_to_end_method_ind_value), CB_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_forw_call_interworking_indicator,
{ "Interworking indicator", "isup.forw_call_interworking_indicator",
FT_BOOLEAN, 16, TFS(&isup_interworking_ind_value), D_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_forw_call_end_to_end_info_indicator,
{ "End-to-end information indicator", "isup.forw_call_end_to_end_information_indicator",
FT_BOOLEAN, 16, TFS(&isup_end_to_end_info_ind_value), E_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_forw_call_isdn_user_part_indicator,
{ "ISDN user part indicator", "isup.forw_call_isdn_user_part_indicator",
FT_BOOLEAN, 16, TFS(&isup_ISDN_user_part_ind_value), F_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_forw_call_preferences_indicator,
{ "ISDN user part preference indicator", "isup.forw_call_preferences_indicator",
FT_UINT16, BASE_HEX, VALS(isup_preferences_ind_value), HG_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_forw_call_isdn_access_indicator,
{ "ISDN access indicator", "isup.forw_call_isdn_access_indicator",
FT_BOOLEAN, 16, TFS(&isup_ISDN_originating_access_ind_value), I_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_forw_call_sccp_method_indicator,
{ "SCCP method indicator", "isup.forw_call_sccp_method_indicator",
FT_UINT16, BASE_HEX, VALS(isup_SCCP_method_ind_value), KJ_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_calling_partys_category,
{ "Calling Party's category", "isup.calling_partys_category",
FT_UINT8, BASE_HEX, VALS(isup_calling_partys_category_value), 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_transmission_medium_requirement,
{ "Transmission medium requirement", "isup.transmission_medium_requirement",
FT_UINT8, BASE_DEC, VALS(isup_transmission_medium_requirement_value), 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_odd_even_indicator,
{ "Odd/even indicator", "isup.isdn_odd_even_indicator",
FT_BOOLEAN, 8, TFS(&isup_odd_even_ind_value), ISUP_ODD_EVEN_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_called_party_nature_of_address_indicator,
{ "Nature of address indicator", "isup.called_party_nature_of_address_indicator",
FT_UINT8, BASE_DEC, VALS(isup_called_party_nature_of_address_ind_value), ISUP_NATURE_OF_ADDRESS_IND_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_calling_party_nature_of_address_indicator,
{ "Nature of address indicator", "isup.calling_party_nature_of_address_indicator",
FT_UINT8, BASE_DEC, VALS(isup_calling_party_nature_of_address_ind_value), ISUP_NATURE_OF_ADDRESS_IND_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_inn_indicator,
{ "INN indicator", "isup.inn_indicator",
FT_BOOLEAN, 8, TFS(&isup_INN_ind_value), ISUP_INN_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_ni_indicator,
{ "NI indicator", "isup.ni_indicator",
FT_BOOLEAN, 8, TFS(&isup_NI_ind_value), ISUP_NI_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_numbering_plan_indicator,
{ "Numbering plan indicator", "isup.numbering_plan_indicator",
FT_UINT8, BASE_DEC, VALS(isup_numbering_plan_ind_value), ISUP_NUMBERING_PLAN_IND_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_address_presentation_restricted_indicator,
{ "Address presentation restricted indicator", "isup.address_presentation_restricted_indicator",
FT_UINT8, BASE_DEC, VALS(isup_address_presentation_restricted_ind_value), ISUP_ADDRESS_PRESENTATION_RESTR_IND_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_screening_indicator,
{ "Screening indicator", "isup.screening_indicator",
FT_UINT8, BASE_DEC, VALS(isup_screening_ind_value), ISUP_SCREENING_IND_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_screening_indicator_enhanced,
{ "Screening indicator", "isup.screening_indicator_enhanced",
FT_UINT8, BASE_DEC, VALS(isup_screening_ind_enhanced_value), ISUP_SCREENING_IND_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_called_party_odd_address_signal_digit,
{ "Address signal digit", "isup.called_party_odd_address_signal_digit",
FT_UINT8, BASE_DEC, VALS(isup_called_party_address_digit_value), ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_calling_party_odd_address_signal_digit,
{ "Address signal digit", "isup.calling_party_odd_address_signal_digit",
FT_UINT8, BASE_DEC, VALS(isup_calling_party_address_digit_value), ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_called_party_even_address_signal_digit,
{ "Address signal digit", "isup.called_party_even_address_signal_digit",
FT_UINT8, BASE_DEC, VALS(isup_called_party_address_digit_value), ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_calling_party_even_address_signal_digit,
{ "Address signal digit", "isup.calling_party_even_address_signal_digit",
FT_UINT8, BASE_DEC, VALS(isup_calling_party_address_digit_value), ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_calling_party_address_request_indicator,
{ "Calling party address request indicator", "isup.calling_party_address_request_indicator",
FT_BOOLEAN, 16, TFS(&isup_calling_party_address_request_ind_value), A_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_info_req_holding_indicator,
{ "Holding indicator", "isup.info_req_holding_indicator",
FT_BOOLEAN, 16, TFS(&isup_holding_ind_value), B_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_calling_partys_category_request_indicator,
{ "Calling party's category request indicator", "isup.calling_partys_category_request_indicator",
FT_BOOLEAN, 16, TFS(&isup_calling_partys_category_request_ind_value), D_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_charge_information_request_indicator,
{ "Charge information request indicator", "isup.charge_information_request_indicator",
FT_BOOLEAN, 16, TFS(&isup_charge_information_request_ind_value), E_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_malicious_call_identification_request_indicator,
{ "Malicious call identification request indicator (ISUP'88)", "isup.malicious_call_ident_request_indicator",
FT_BOOLEAN, 16, TFS(&isup_malicious_call_identification_request_ind_value), H_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_calling_party_address_response_indicator,
{ "Calling party address response indicator", "isup.calling_party_address_response_indicator",
FT_UINT16, BASE_HEX, VALS(isup_calling_party_address_response_ind_value), BA_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_hold_provided_indicator,
{ "Hold provided indicator", "isup.hold_provided_indicator",
FT_BOOLEAN, 16, TFS(&isup_hold_provided_ind_value), C_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_calling_partys_category_response_indicator,
{ "Calling party's category response indicator", "isup.calling_partys_category_response_indicator",
FT_BOOLEAN, 16, TFS(&isup_calling_partys_category_response_ind_value), F_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_charge_information_response_indicator,
{ "Charge information response indicator", "isup.charge_information_response_indicator",
FT_BOOLEAN, 16, TFS(&isup_charge_information_response_ind_value), G_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_solicited_indicator,
{ "Solicited indicator", "isup.solicided_indicator",
FT_BOOLEAN, 16, TFS(&isup_solicited_information_ind_value), H_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_continuity_indicator,
{ "Continuity indicator", "isup.continuity_indicator",
FT_BOOLEAN, 8, TFS(&isup_continuity_ind_value), A_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_charge_ind,
{ "Charge indicator", "isup.charge_indicator",
FT_UINT16, BASE_HEX, VALS(isup_charge_ind_value), BA_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_called_partys_status_ind,
{ "Called party's status indicator", "isup.called_partys_status_indicator",
FT_UINT16, BASE_HEX, VALS(isup_called_partys_status_ind_value), DC_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_called_partys_category_ind,
{ "Called party's category indicator", "isup.called_partys_category_indicator",
FT_UINT16, BASE_HEX, VALS(isup_called_partys_category_ind_value), FE_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_end_to_end_method_ind,
{ "End-to-end method indicator", "isup.backw_call_end_to_end_method_indicator",
FT_UINT16, BASE_HEX, VALS(isup_end_to_end_method_ind_value), HG_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_interworking_ind,
{ "Interworking indicator", "isup.backw_call_interworking_indicator",
FT_BOOLEAN, 16, TFS(&isup_interworking_ind_value), I_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_end_to_end_info_ind,
{ "End-to-end information indicator", "isup.backw_call_end_to_end_information_indicator",
FT_BOOLEAN, 16, TFS(&isup_end_to_end_info_ind_value), J_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_isdn_user_part_ind,
{ "ISDN user part indicator", "isup.backw_call_isdn_user_part_indicator",
FT_BOOLEAN, 16, TFS(&isup_ISDN_user_part_ind_value), K_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_holding_ind,
{ "Holding indicator", "isup.backw_call_holding_indicator",
FT_BOOLEAN, 16, TFS(&isup_holding_ind_value), L_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_isdn_access_ind,
{ "ISDN access indicator", "isup.backw_call_isdn_access_indicator",
FT_BOOLEAN, 16, TFS(&isup_ISDN_terminating_access_ind_value), M_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_echo_control_device_ind,
{ "Echo Control Device Indicator", "isup.backw_call_echo_control_device_indicator",
FT_BOOLEAN, 16, TFS(&isup_echo_control_device_ind_value), N_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_backw_call_sccp_method_ind,
{ "SCCP method indicator", "isup.backw_call_sccp_method_indicator",
FT_UINT16, BASE_HEX, VALS(isup_SCCP_method_ind_value), PO_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_suspend_resume_indicator,
{ "Suspend/Resume indicator", "isup.suspend_resume_indicator",
FT_BOOLEAN, 8, TFS(&isup_suspend_resume_ind_value), A_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_transmission_medium_requirement,
{ "Transmission medium requirement", "isup.transmission_medium_requirement",
FT_UINT8, BASE_DEC, VALS(isup_transmission_medium_requirement_value), 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_range_indicator,
{ "Range indicator", "isup.range_indicator",
FT_UINT8, BASE_DEC, NULL , 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_cgs_message_type,
{ "Circuit group supervision message type", "isup.cgs_message_type",
FT_UINT8, BASE_DEC, VALS(isup_cgs_message_type_value), BA_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_mtc_blocking_state1,
{ "Maintenance blocking state", "isup.mtc_blocking_state",
FT_UINT8, BASE_DEC, VALS(isup_mtc_blocking_state_DC00_value), BA_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_mtc_blocking_state2,
{ "Maintenance blocking state", "isup.mtc_blocking_state",
FT_UINT8, BASE_DEC, VALS(isup_mtc_blocking_state_DCnot00_value), BA_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_call_proc_state,
{ "Call processing state", "isup.call_processing_state",
FT_UINT8, BASE_DEC, VALS(isup_call_processing_state_value), DC_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_hw_blocking_state,
{ "HW blocking state", "isup.hw_blocking_state",
FT_UINT8, BASE_DEC, VALS(isup_HW_blocking_state_value), FE_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_event_ind,
{ "Event indicator", "isup.event_ind",
FT_UINT8, 8, NULL, 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_event_presentation_restricted_ind,
{ "Event presentation restricted indicator", "isup.event_presentatiation_restr_ind",
FT_BOOLEAN, 8, TFS(&isup_event_presentation_restricted_ind_value), H_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_cug_call_ind,
{ "Closed user group call indicator", "isup.clg_call_ind",
FT_UINT8, BASE_DEC, VALS(isup_CUG_call_ind_value), BA_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_simple_segmentation_ind,
{ "Simple segmentation indicator", "isup.simple_segmentation_ind",
FT_BOOLEAN, 8, TFS(&isup_simple_segmentation_ind_value), C_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_connected_line_identity_request_ind,
{ "Connected line identity request indicator", "isup.connected_line_identity_request_ind",
FT_BOOLEAN, 8, TFS(&isup_connected_line_identity_request_ind_value), H_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_redirecting_ind,
{ "Redirection indicator", "isup.redirecting_ind",
FT_UINT16, BASE_DEC, VALS(isup_redirecting_ind_value), CBA_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_original_redirection_reason,
{ "Original redirection reason", "isup.original_redirection_reason",
FT_UINT16, BASE_DEC, VALS(isup_original_redirection_reason_value), HGFE_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_redirection_counter,
{ "Redirection counter", "isup.redirection_counter",
FT_UINT16, BASE_DEC, NULL, KJI_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_redirection_reason,
{ "Redirection reason", "isup.redirection_reason",
FT_UINT16, BASE_DEC, VALS(isup_redirection_reason_value), PONM_16BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_type_of_network_identification,
{ "Type of network identification", "isup.type_of_network_identification",
FT_UINT8, BASE_DEC, VALS(isup_type_of_network_identification_value), GFE_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_network_identification_plan,
{ "Network identification plan", "isup.network_identification_plan",
FT_UINT8, BASE_DEC, VALS(isup_network_identification_plan_value), DCBA_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_map_type,
{ "Map Type", "isup.map_type",
FT_UINT8, BASE_DEC, VALS(isup_map_type_value), FEDCBA_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_automatic_congestion_level,
{ "Automatic congestion level", "isup.automatic_congestion_level",
FT_UINT8, BASE_DEC, VALS(isup_auto_congestion_level_value), 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_inband_information_ind,
{ "In-band information indicator", "isup.inband_information_ind",
FT_BOOLEAN, 8, TFS(&isup_inband_information_ind_value), A_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_call_diversion_may_occur_ind,
{ "Call diversion may occur indicator", "isup.call_diversion_may_occur_ind",
FT_BOOLEAN, 8, TFS(&isup_call_diversion_may_occur_ind_value), B_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_mlpp_user_ind,
{ "MLPP user indicator", "isup.mlpp_user",
FT_BOOLEAN, 8, TFS(&isup_MLPP_user_ind_value), D_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_access_delivery_ind,
{ "Access delivery indicator", "isup.access_delivery_ind",
FT_BOOLEAN, 8, TFS(&isup_access_delivery_ind_value), A_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_transmission_medium_requirement_prime,
{ "Transmission medium requirement prime", "isup.transmission_medium_requirement_prime",
FT_UINT8, BASE_DEC, VALS(isup_transmission_medium_requirement_prime_value), 0x0,
- "" }},
+ "", HFILL }},
{ &hf_isup_loop_prevention_response_ind,
{ "Response indicator", "isup.loop_prevention_response_ind",
FT_UINT8, BASE_DEC, VALS(isup_loop_prevention_response_ind_value), CB_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_temporary_alternative_routing_ind,
{ "Temporary alternative routing indicator", "isup.temporary_alternative_routing_ind",
FT_BOOLEAN, 8, TFS(&isup_temporary_alternative_routing_ind_value), A_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_extension_ind,
{ "Extension indicator", "isup.extension_ind",
FT_BOOLEAN, 8, TFS(&isup_extension_ind_value), H_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_call_to_be_diverted_ind,
{ "Call to be diverted indicator", "isup.call_to_be_diverted_ind",
FT_UINT8, BASE_DEC, VALS(isup_call_to_be_diverted_ind_value), BA_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_call_to_be_offered_ind,
{ "Call to be offered indicator", "isup.call_to_be_offered_ind",
FT_UINT8, BASE_DEC, VALS(isup_call_to_be_offered_ind_value), BA_8BIT_MASK,
- "" }},
+ "", HFILL }},
{ &hf_isup_conference_acceptance_ind,
{ "Conference acceptance indicator", "isup.conference_acceptance_ind",
FT_UINT8, BASE_DEC, VALS(isup_conference_acceptance_ind_value), BA_8BIT_MASK,
- "" }},
+ "", HFILL }},
};
/* Setup protocol subtree array */
void
proto_reg_handoff_isup(void)
{
- dissector_add("mtp3.service_indicator", MTP3_ISUP_SERVICE_INDICATOR, dissect_isup, proto_isup);
+ dissector_handle_t isup_handle;
+
+ isup_handle = create_dissector_handle(dissect_isup, proto_isup);
+ dissector_add("mtp3.service_indicator", MTP3_ISUP_SERVICE_INDICATOR, isup_handle);
+ dissector_add("m3ua.protocol_data_si", MTP3_ISUP_SERVICE_INDICATOR, isup_handle);
}