From Michael Tuexen: update for the ASAP dissector which provides
[obnox/wireshark/wip.git] / packet-isup.c
index a1a8e869bd85ec3e00f2ee394e3209cb90e35c4e..ad9380684ef427c327b78d8cc46be1b907b05f03 100644 (file)
@@ -2,7 +2,7 @@
  * 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>
@@ -47,7 +47,7 @@
 # include "snprintf.h"
 #endif
 
-#include "packet.h"
+#include <epan/packet.h>
 #include "packet-ip.h"
 
 #define MTP3_ISUP_SERVICE_INDICATOR     5
@@ -1214,7 +1214,7 @@ char number_to_char(int number)
 /* ------------------------------------------------------------------ 
  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;
@@ -1230,7 +1230,7 @@ dissect_isup_nature_of_connection_indicators_parameter(tvbuff_t *parameter_tvb,
 /* ------------------------------------------------------------------ 
  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;
@@ -1251,7 +1251,7 @@ dissect_isup_forward_call_indicators_parameter(tvbuff_t *parameter_tvb,proto_tre
 /* ------------------------------------------------------------------ 
  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;
@@ -1266,7 +1266,7 @@ dissect_isup_calling_partys_category_parameter(tvbuff_t *parameter_tvb,proto_tre
 /* ------------------------------------------------------------------
   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;
@@ -1279,7 +1279,8 @@ dissect_isup_transmission_medium_requirement_parameter(tvbuff_t *parameter_tvb,
 /* ------------------------------------------------------------------
   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;
@@ -1298,7 +1299,9 @@ void dissect_isup_called_party_number_parameter(tvbuff_t *parameter_tvb, proto_t
   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);
@@ -1327,7 +1330,8 @@ void dissect_isup_called_party_number_parameter(tvbuff_t *parameter_tvb, proto_t
 /* ------------------------------------------------------------------
   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;
@@ -1342,7 +1346,9 @@ void dissect_isup_subsequent_number_parameter(tvbuff_t *parameter_tvb, proto_tre
   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);
@@ -1371,7 +1377,7 @@ void dissect_isup_subsequent_number_parameter(tvbuff_t *parameter_tvb, proto_tre
 /* ------------------------------------------------------------------
   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;
@@ -1389,7 +1395,7 @@ dissect_isup_information_request_indicators_parameter(tvbuff_t *parameter_tvb, p
 /* ------------------------------------------------------------------
   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;
@@ -1402,12 +1408,12 @@ dissect_isup_information_indicators_parameter(tvbuff_t *parameter_tvb, proto_tre
   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;
@@ -1415,12 +1421,12 @@ dissect_isup_continuity_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree
   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;
@@ -1445,17 +1451,17 @@ dissect_isup_backward_call_indicators_parameter(tvbuff_t *parameter_tvb,proto_tr
 /* ------------------------------------------------------------------
   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;
@@ -1468,7 +1474,7 @@ dissect_isup_suspend_resume_indicators_parameter(tvbuff_t *parameter_tvb, proto_
 /* ------------------------------------------------------------------
   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;
@@ -1487,7 +1493,7 @@ dissect_isup_range_and_status_parameter(tvbuff_t *parameter_tvb, proto_tree *par
 /* ------------------------------------------------------------------
   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;
@@ -1500,8 +1506,8 @@ dissect_isup_circuit_group_supervision_message_type_parameter(tvbuff_t *paramete
 /* ------------------------------------------------------------------
   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;
   
@@ -1512,7 +1518,7 @@ dissect_isup_facility_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *paramet
 /* ------------------------------------------------------------------
   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;
@@ -1524,7 +1530,10 @@ dissect_isup_circuit_state_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
 
   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){ 
@@ -1539,13 +1548,13 @@ dissect_isup_circuit_state_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
     } 
     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;
@@ -1559,16 +1568,16 @@ dissect_isup_event_information_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
 /* ------------------------------------------------------------------
   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;
@@ -1576,24 +1585,24 @@ dissect_isup_call_reference_parameter(tvbuff_t *parameter_tvb, proto_tree *param
   
   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;
@@ -1609,7 +1618,7 @@ dissect_isup_optional_forward_call_indicators_parameter(tvbuff_t *parameter_tvb,
 /* ------------------------------------------------------------------
   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;
@@ -1631,7 +1640,9 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree
   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);
@@ -1660,7 +1671,7 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree
 /* ------------------------------------------------------------------
   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;
@@ -1680,7 +1691,9 @@ dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tre
   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);
@@ -1709,7 +1722,7 @@ dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tre
 /* ------------------------------------------------------------------
   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;
@@ -1729,7 +1742,9 @@ dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
   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);
@@ -1758,7 +1773,8 @@ dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
 /* ------------------------------------------------------------------
   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;
@@ -1777,7 +1793,9 @@ void dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tr
   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);
@@ -1805,7 +1823,7 @@ void dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tr
 /* ------------------------------------------------------------------
   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;
@@ -1813,16 +1831,16 @@ dissect_isup_connection_request_parameter(tvbuff_t *parameter_tvb, proto_tree *p
   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);
@@ -1830,7 +1848,7 @@ dissect_isup_connection_request_parameter(tvbuff_t *parameter_tvb, proto_tree *p
 /* ------------------------------------------------------------------
   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){ 
@@ -1853,7 +1871,8 @@ dissect_isup_redirection_information_parameter(tvbuff_t *parameter_tvb, proto_tr
 /* ------------------------------------------------------------------
   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;
@@ -1866,37 +1885,37 @@ void dissect_isup_closed_user_group_interlock_code_parameter(tvbuff_t *parameter
   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;
@@ -1917,7 +1936,9 @@ dissect_isup_connected_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
   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);
@@ -1946,7 +1967,7 @@ dissect_isup_connected_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
 /* ------------------------------------------------------------------
   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;
@@ -1964,7 +1985,9 @@ dissect_isup_transit_network_selection_parameter(tvbuff_t *parameter_tvb, proto_
   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);
@@ -1993,19 +2016,19 @@ dissect_isup_transit_network_selection_parameter(tvbuff_t *parameter_tvb, proto_
 /* ------------------------------------------------------------------
   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;
 
@@ -2016,7 +2039,7 @@ dissect_isup_automatic_congestion_level_parameter(tvbuff_t *parameter_tvb, proto
 /* ------------------------------------------------------------------
   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;
@@ -2033,56 +2056,56 @@ dissect_isup_optional_backward_call_indicators_parameter(tvbuff_t *parameter_tvb
 /* ------------------------------------------------------------------
   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;
 
@@ -2093,70 +2116,70 @@ dissect_isup_access_delivery_information_parameter(tvbuff_t *parameter_tvb, prot
 /* ------------------------------------------------------------------
   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;
@@ -2169,55 +2192,56 @@ dissect_isup_transmission_medium_used_parameter(tvbuff_t *parameter_tvb, proto_t
 /* ------------------------------------------------------------------
   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);
@@ -2225,48 +2249,48 @@ void dissect_isup_mlpp_precedence_parameter(tvbuff_t *parameter_tvb, proto_tree
   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;
@@ -2280,7 +2304,7 @@ dissect_isup_transmission_medium_requirement_prime_parameter(tvbuff_t *parameter
 /* ------------------------------------------------------------------
   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;
@@ -2299,12 +2323,14 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para
   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);
@@ -2333,7 +2359,7 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para
 /* ------------------------------------------------------------------
   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;
@@ -2341,13 +2367,13 @@ dissect_isup_redirection_number_restriction_parameter(tvbuff_t *parameter_tvb, p
   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); 
@@ -2355,37 +2381,37 @@ dissect_isup_redirection_number_restriction_parameter(tvbuff_t *parameter_tvb, p
 /* ------------------------------------------------------------------
   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;
@@ -2403,12 +2429,14 @@ dissect_isup_call_transfer_number_parameter(tvbuff_t *parameter_tvb, proto_tree
   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);
@@ -2437,96 +2465,96 @@ dissect_isup_call_transfer_number_parameter(tvbuff_t *parameter_tvb, proto_tree
 /* ------------------------------------------------------------------
   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;
@@ -2546,7 +2574,9 @@ dissect_isup_called_in_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
   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);
@@ -2575,97 +2605,97 @@ dissect_isup_called_in_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
 /* ------------------------------------------------------------------
   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;
@@ -2686,12 +2716,14 @@ dissect_isup_generic_number_parameter(tvbuff_t *parameter_tvb, proto_tree *param
   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);
@@ -2720,16 +2752,16 @@ dissect_isup_generic_number_parameter(tvbuff_t *parameter_tvb, proto_tree *param
 /* ------------------------------------------------------------------ 
  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"));
 }
 /* ------------------------------------------------------------------ */
@@ -2737,7 +2769,7 @@ dissect_isup_unknown_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tr
 /* ------------------------------------------------------------------
   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;
@@ -2754,7 +2786,11 @@ dissect_isup_optional_parameter(tvbuff_t *optional_parameters_tvb, proto_tree *i
     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;
@@ -2830,7 +2866,7 @@ dissect_isup_optional_parameter(tvbuff_t *optional_parameters_tvb, proto_tree *i
          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);
@@ -3007,7 +3043,7 @@ dissect_isup_optional_parameter(tvbuff_t *optional_parameters_tvb, proto_tree *i
          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);
@@ -3039,40 +3075,48 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
   
   /* 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;
@@ -3083,12 +3127,15 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
   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;
@@ -3111,12 +3158,15 @@ gint dissect_isup_subsequent_address_message(tvbuff_t *message_tvb, proto_tree *
   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;
@@ -3137,10 +3187,12 @@ dissect_isup_information_request_message(tvbuff_t *message_tvb, proto_tree *isup
  
   /* 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;
@@ -3159,10 +3211,12 @@ dissect_isup_information_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
  
   /* 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;
@@ -3181,10 +3235,12 @@ dissect_isup_continuity_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
  
   /* 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;
@@ -3203,10 +3259,12 @@ dissect_isup_address_complete_message(tvbuff_t *message_tvb, proto_tree *isup_tr
  
   /* 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;
@@ -3225,10 +3283,12 @@ dissect_isup_connect_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
  
   /* 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;
@@ -3251,12 +3311,15 @@ dissect_isup_release_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
   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;
@@ -3276,10 +3339,12 @@ dissect_isup_suspend_resume_message(tvbuff_t *message_tvb, proto_tree *isup_tree
  
   /* 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;
@@ -3302,12 +3367,15 @@ dissect_isup_circuit_group_reset_query_message(tvbuff_t *message_tvb, proto_tree
   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;
@@ -3327,10 +3395,12 @@ dissect_isup_circuit_group_blocking_messages(tvbuff_t *message_tvb, proto_tree *
 
    /* 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;
@@ -3341,14 +3411,17 @@ dissect_isup_circuit_group_blocking_messages(tvbuff_t *message_tvb, proto_tree *
   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;
@@ -3367,12 +3440,14 @@ dissect_isup_facility_request_accepted_message(tvbuff_t *message_tvb, proto_tree
  
   /* 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;
 }
@@ -3389,12 +3464,14 @@ dissect_isup_facility_reject_message(tvbuff_t *message_tvb, proto_tree *isup_tre
  
   /* 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 */
@@ -3403,12 +3480,15 @@ dissect_isup_facility_reject_message(tvbuff_t *message_tvb, proto_tree *isup_tre
   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;
@@ -3432,12 +3512,15 @@ dissect_isup_circuit_group_reset_acknowledgement_message(tvbuff_t *message_tvb,
   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;
@@ -3461,12 +3544,15 @@ dissect_isup_circuit_group_query_response_message(tvbuff_t *message_tvb, proto_t
   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;
@@ -3477,12 +3563,15 @@ dissect_isup_circuit_group_query_response_message(tvbuff_t *message_tvb, proto_t
   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;
@@ -3502,10 +3591,12 @@ dissect_isup_call_progress_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
  
   /* 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;
@@ -3528,12 +3619,15 @@ dissect_isup_user_to_user_information_message(tvbuff_t *message_tvb, proto_tree
   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;
@@ -3557,12 +3651,15 @@ dissect_isup_confusion_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
   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;
@@ -3570,7 +3667,7 @@ dissect_isup_confusion_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
   return offset;
 }
 /* ------------------------------------------------------------------ */
-void
+static void
 dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup_tree)
 { 
   tvbuff_t *parameter_tvb;
@@ -3586,15 +3683,15 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
   /* 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:*/
@@ -3702,7 +3799,7 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
       /* 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;
@@ -3793,7 +3890,7 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
 }
  
 /* ------------------------------------------------------------------ */
-void
+static void
 dissect_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 {
 
@@ -3804,16 +3901,16 @@ 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 
@@ -3838,432 +3935,432 @@ proto_register_isup(void)
                { &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 */
@@ -4290,5 +4387,9 @@ proto_register_isup(void)
 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);
 }