Remove debug printouts.
[obnox/wireshark/wip.git] / asn1 / ansi_map / packet-ansi_map-template.c
index 8e2c48ce6e8ae4bb670f81d5003c51193c0ec790..416963b2771ad6471bb6fe019a05f96bf13f8eb8 100644 (file)
@@ -5,7 +5,7 @@
  * Michael Lum <mlum [AT] telostech.com>
  * In association with Telos Technology Inc.
  *
- * Copyright 2005 - 2008, Anders Broman <anders.broman@ericsson.com>
+ * Copyright 2005 - 2009, Anders Broman <anders.broman@ericsson.com>
  *
  * $Id$
  *
@@ -32,7 +32,7 @@
  * Title                3GPP2                   Other
  *
  *   Cellular Radiotelecommunications Intersystem Operations
- *                      3GPP2 N.S0005-0 v 1.0           ANSI/TIA/EIA-41-D 
+ *                      3GPP2 N.S0005-0 v 1.0           ANSI/TIA/EIA-41-D
  *
  *   Network Support for MDN-Based Message Centers
  *                      3GPP2 N.S0024-0 v1.0    IS-841
@@ -62,8 +62,8 @@
  *   WIN Phase 1
  *                      3GPP2 N.S0013-0 v1.0    IS-771
  *
- *       DCCH (Clarification of Audit Order with Forced 
- *         Re-Registration in pre-TIA/EIA-136-A Implementation 
+ *       DCCH (Clarification of Audit Order with Forced
+ *         Re-Registration in pre-TIA/EIA-136-A Implementation
  *                      3GPP2 A.S0017-B                 IS-730
  *
  *   UIM
@@ -82,7 +82,7 @@
  *   Answer Hold
  *                      3GPP2 N.S0022-0 v1.0    IS-837
  *
- */ 
+ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -94,9 +94,6 @@
 #include <epan/tap.h>
 #include <epan/asn1.h>
 
-#include <stdio.h>
-#include <string.h>
-
 #include "packet-ber.h"
 #include "packet-ansi_map.h"
 #include "packet-ansi_a.h"
 /* Preference settings default */
 #define MAX_SSN 254
 static range_t *global_ssn_range;
+gint ansi_map_response_matching_type = 1;
+
+#define ANSI_MAP_TID_ONLY 0
 
 static dissector_handle_t ansi_map_handle=NULL;
 
@@ -244,7 +244,7 @@ static int hf_ansi_map_cdmachanneldata_lc_mask_b1 = -1;
 static int hf_ansi_map_cdmachanneldata_np_ext = -1;
 static int hf_ansi_map_cdmachanneldata_nominal_pwr = -1;
 static int hf_ansi_map_cdmachanneldata_nr_preamble = -1;
+
 static int hf_ansi_map_cdmastationclassmark_pc = -1;
 static int hf_ansi_map_cdmastationclassmark_dtx = -1;
 static int hf_ansi_map_cdmastationclassmark_smi = -1;
@@ -390,7 +390,7 @@ TransactionId_table_cleanup(gpointer key , gpointer value, gpointer user_data _U
 
 }
 
-void
+static void
 ansi_map_init_transaction_table(void){
 
     /* Destroy any existing memory chunks / hashes. */
@@ -407,7 +407,7 @@ static void
 ansi_map_init_protocol(void)
 {
     ansi_map_init_transaction_table();
-} 
+}
 
 /* Store Invoke information needed for the corresponding reply */
 static void
@@ -422,8 +422,8 @@ update_saved_invokedata(packet_info *pinfo, proto_tree *tree _U_, tvbuff_t *tvb
 
     buf=ep_alloc(1024);
 
-    src_str = address_to_str(src);
-    dst_str = address_to_str(dst);
+    src_str = ep_address_to_str(src);
+    dst_str = ep_address_to_str(dst);
 
     /* Data from the TCAP dissector */
     if (pinfo->private_data != NULL){
@@ -431,7 +431,17 @@ update_saved_invokedata(packet_info *pinfo, proto_tree *tree _U_, tvbuff_t *tvb
         if ((!pinfo->fd->flags.visited)&&(p_private_tcap->TransactionID_str)){
             /* Only do this once XXX I hope its the right thing to do */
             /* The hash string needs to contain src and dest to distiguish differnt flows */
-            g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,src_str,dst_str);
+                       switch(ansi_map_response_matching_type){
+                               case ANSI_MAP_TID_ONLY:
+                                       g_snprintf(buf,1024,"%s",p_private_tcap->TransactionID_str);
+                                       break;
+                               case 1:
+                                       g_snprintf(buf,1024,"%s%s",p_private_tcap->TransactionID_str,src_str);
+                                       break;
+                               default:
+                                       g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,src_str,dst_str);
+                                       break;
+                       }
             /* If the entry allready exists don't owervrite it */
             ansi_map_saved_invokedata = g_hash_table_lookup(TransactionId_table,buf);
             if(ansi_map_saved_invokedata)
@@ -441,12 +451,11 @@ update_saved_invokedata(packet_info *pinfo, proto_tree *tree _U_, tvbuff_t *tvb
             ansi_map_saved_invokedata->opcode = p_private_tcap->d.OperationCode_private;
             ansi_map_saved_invokedata->ServiceIndicator = ServiceIndicator;
 
-            g_hash_table_insert(TransactionId_table, 
+            g_hash_table_insert(TransactionId_table,
                                 g_strdup(buf),
                                 ansi_map_saved_invokedata);
-            /*
-              g_warning("Invoke Hash string %s",buf);
-            */
+
+            /*g_warning("Invoke Hash string %s pkt: %u",buf,pinfo->fd->num);*/
         }
     }
 
@@ -553,21 +562,36 @@ const value_string ansi_map_opr_code_strings[] = {
     {  98, "Roamer Database Verification Request" },
     {  99, "Add Service" },
     { 100, "Drop Service" },
+    { 101, "InterSystemSMSPage" },
     { 102, "LCSParameterRequest" },
+    { 103, "Unknown ANSI-MAP PDU" },
+    { 104, "Unknown ANSI-MAP PDU" },
+    { 105, "Unknown ANSI-MAP PDU" },
     { 106, "PositionEventNotification" },
+    { 107, "Unknown ANSI-MAP PDU" },
+    { 108, "Unknown ANSI-MAP PDU" },
+    { 109, "Unknown ANSI-MAP PDU" },
+    { 110, "Unknown ANSI-MAP PDU" },
+    { 111, "InterSystemSMSDelivery-PointToPoint" },
+    { 112, "QualificationRequest2" },
     {   0, NULL },
 };
+static value_string_ext ansi_map_opr_code_strings_ext = VALUE_STRING_EXT_INIT(ansi_map_opr_code_strings);
 
 static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx);
 static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset,  asn1_ctx_t *actx);
 static int dissect_ansi_map_SystemMyTypeCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_);
 
+#if 0
+/* Moved to tvbuff.h
+ * XXX remove after trial period.
+ */
 typedef struct dgt_set_t
 {
     unsigned char out[15];
 }
 dgt_set_t;
-
+#endif
 static dgt_set_t Dgt_tbcd = {
     {
   /*  0   1   2   3   4   5   6   7   8   9   a   b   c   d   e */
@@ -580,9 +604,9 @@ static dgt_set_t Dgt1_9_bcd = {
      '0','1','2','3','4','5','6','7','8','9','?','?','?','?','?'
     }
 };
-/* Assumes the rest of the tvb contains the digits to be turned into a string 
+/* Assumes the rest of the tvb contains the digits to be turned into a string
  */
-static char*
+static const char*
 unpack_digits2(tvbuff_t *tvb, int offset,dgt_set_t *dgt){
 
     int length;
@@ -598,7 +622,7 @@ unpack_digits2(tvbuff_t *tvb, int offset,dgt_set_t *dgt){
     while ( offset < length ){
 
         octet = tvb_get_guint8(tvb,offset);
-        digit_str[i] = dgt->out[octet & 0x0f]; 
+        digit_str[i] = dgt->out[octet & 0x0f];
         i++;
 
         /*
@@ -609,7 +633,7 @@ unpack_digits2(tvbuff_t *tvb, int offset,dgt_set_t *dgt){
         if (octet == 0x0f)      /* odd number bytes - hit filler */
             break;
 
-        digit_str[i] = dgt->out[octet & 0x0f]; 
+        digit_str[i] = dgt->out[octet & 0x0f];
         i++;
         offset++;
 
@@ -681,9 +705,9 @@ static const value_string ansi_map_np_vals[]  = {
     {   0, NULL }
 };
 
-static void 
+static void
 dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
-    char *digit_str;
+    const char *digit_str;
     int   offset = 0;
 
     proto_tree *subtree;
@@ -696,13 +720,13 @@ dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
     proto_item_append_text(actx->created_item, " - %s", digit_str);
 }
 
-static void 
+static void
 dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
 
     guint8 octet , octet_len;
     guint8 b1,b2,b3,b4;
     int    offset = 0;
-    char  *digit_str;
+    const char *digit_str;
 
     proto_tree *subtree;
 
@@ -840,7 +864,7 @@ static const value_string ansi_map_sub_addr_type_vals[]  = {
     {   0, NULL }
 };
 
-static void 
+static void
 dissect_ansi_map_subaddress(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
     int offset = 0;
 
@@ -887,6 +911,8 @@ static const value_string ansi_map_ActionCode_vals[]  = {
     {  23, "CDMA Handset-Based Position Determination Complete"},
     {   0, NULL }
 };
+static value_string_ext ansi_map_ActionCode_vals_ext = VALUE_STRING_EXT_INIT(ansi_map_ActionCode_vals);
+
 /* 6.5.2.3 AlertCode */
 
 /* Pitch (octet 1, bits G-H) */
@@ -1144,7 +1170,7 @@ static const value_string ansi_map_authorizationperiod_period_vals[]  = {
 Number of minutes hours, days, weeks, or
 number of calls (as per Period). If Period
 indicates anything else the Value is set to zero
-on sending and ignored on receipt. 
+on sending and ignored on receipt.
 */
 static void
 dissect_ansi_map_authorizationperiod(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
@@ -1203,11 +1229,11 @@ static const value_string ansi_map_FeatureActivity_vals[]  = {
 static void
 dissect_ansi_map_callingfeaturesindicator(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
     int offset = 0;
-    int length; 
+    int length;
 
     proto_tree *subtree;
 
-    length = tvb_length_remaining(tvb,offset); 
+    length = tvb_length_remaining(tvb,offset);
 
     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
 
@@ -1360,11 +1386,11 @@ static const true_false_string ansi_map_CDMACallMode_cls10_bool_val  = {
 static void
 dissect_ansi_map_cdmacallmode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
     int offset = 0;
-    int length; 
+    int length;
 
     proto_tree *subtree;
 
-    length = tvb_length_remaining(tvb,offset); 
+    length = tvb_length_remaining(tvb,offset);
 
 
     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
@@ -1385,7 +1411,7 @@ dissect_ansi_map_cdmacallmode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
     /* Call Mode (octet 1, bit A) */
     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cdma, tvb, offset, 1, FALSE);
 
-    length--; 
+    length--;
     if ( length == 0)
         return;
     offset++;
@@ -1414,7 +1440,7 @@ static void
 dissect_ansi_map_cdmachanneldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
 
     int offset = 0;
-    int length; 
+    int length;
 
     proto_tree *subtree;
 
@@ -1609,7 +1635,7 @@ static const value_string ansi_map_CountUpdateReport_vals[]  = {
 };
 
 /* 6.5.2.53 DeniedAuthorizationPeriod */
-/* Period (octet 1) */ 
+/* Period (octet 1) */
 static const value_string ansi_map_deniedauthorizationperiod_period_vals[]  = {
     {   0, "Not used"},
     {   1, "Per Call. Re-authorization should be attempted on the next call attempt"},
@@ -1626,7 +1652,7 @@ static const value_string ansi_map_deniedauthorizationperiod_period_vals[]  = {
 Number of minutes hours, days, weeks, or
 number of calls (as per Period). If Period
 indicates anything else the Value is set to zero
-on sending and ignored on receipt. 
+on sending and ignored on receipt.
 */
 
 static void
@@ -2398,6 +2424,7 @@ static const value_string ansi_map_SMS_CauseCode_vals[]  = {
     {   110, "MS Disconnect"},
     {   0, NULL }
 };
+static value_string_ext ansi_map_SMS_CauseCode_vals_ext = VALUE_STRING_EXT_INIT(ansi_map_SMS_CauseCode_vals);
 
 /* 6.5.2.126 SMS_ChargeIndicator */
 /* SMS Charge Indicator (octet 1) */
@@ -2784,90 +2811,90 @@ static const value_string ansi_map_UniqueChallengeReport_vals[]  = {
 
 /* values copied from old ANSI map dissector */
 static const range_string cdmaserviceoption_vals[] = {
-    { 1, 1, "Basic Variable Rate Voice Service (8 kbps)" }, 
-    { 2, 2, "Mobile Station Loopback (8 kbps)" }, 
-    { 3, 3, "Enhanced Variable Rate Voice Service (8 kbps)" }, 
-    { 4, 4, "Asynchronous Data Service (9.6 kbps)" }, 
+    { 1, 1, "Basic Variable Rate Voice Service (8 kbps)" },
+    { 2, 2, "Mobile Station Loopback (8 kbps)" },
+    { 3, 3, "Enhanced Variable Rate Voice Service (8 kbps)" },
+    { 4, 4, "Asynchronous Data Service (9.6 kbps)" },
     { 5, 5, "Group 3 Facsimile (9.6 kbps)" },
-    { 6, 6, "Short Message Services (Rate Set 1)" }, 
-    { 7, 7, "Packet Data Service: Internet or ISO Protocol Stack (9.6 kbps)" }, 
-    { 8, 8, "Packet Data Service: CDPD Protocol Stack (9.6 kbps)" }, 
-    { 9, 9, "Mobile Station Loopback (13 kbps)" }, 
-    { 10, 10, "STU-III Transparent Service" }, 
-    { 11, 11, "STU-III Non-Transparent Service" }, 
-    { 12, 12, "Asynchronous Data Service (14.4 or 9.6 kbps)" }, 
-    { 13, 13, "Group 3 Facsimile (14.4 or 9.6 kbps)" }, 
-    { 14, 14, "Short Message Services (Rate Set 2)" }, 
-    { 15, 15, "Packet Data Service: Internet or ISO Protocol Stack (14.4 kbps)" }, 
-    { 16, 16, "Packet Data Service: CDPD Protocol Stack (14.4 kbps)" }, 
-    { 17, 17, "High Rate Voice Service (13 kbps)" }, 
-    { 18, 18, "Over-the-Air Parameter Administration (Rate Set 1)" }, 
-    { 19, 19, "Over-the-Air Parameter Administration (Rate Set 2)" }, 
-    { 20, 20, "Group 3 Analog Facsimile (Rate Set 1)" }, 
-    { 21, 21, "Group 3 Analog Facsimile (Rate Set 2)" }, 
-    { 22, 22, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS1 reverse)" }, 
-    { 23, 23, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS2 reverse)" }, 
-    { 24, 24, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS1 reverse)" }, 
+    { 6, 6, "Short Message Services (Rate Set 1)" },
+    { 7, 7, "Packet Data Service: Internet or ISO Protocol Stack (9.6 kbps)" },
+    { 8, 8, "Packet Data Service: CDPD Protocol Stack (9.6 kbps)" },
+    { 9, 9, "Mobile Station Loopback (13 kbps)" },
+    { 10, 10, "STU-III Transparent Service" },
+    { 11, 11, "STU-III Non-Transparent Service" },
+    { 12, 12, "Asynchronous Data Service (14.4 or 9.6 kbps)" },
+    { 13, 13, "Group 3 Facsimile (14.4 or 9.6 kbps)" },
+    { 14, 14, "Short Message Services (Rate Set 2)" },
+    { 15, 15, "Packet Data Service: Internet or ISO Protocol Stack (14.4 kbps)" },
+    { 16, 16, "Packet Data Service: CDPD Protocol Stack (14.4 kbps)" },
+    { 17, 17, "High Rate Voice Service (13 kbps)" },
+    { 18, 18, "Over-the-Air Parameter Administration (Rate Set 1)" },
+    { 19, 19, "Over-the-Air Parameter Administration (Rate Set 2)" },
+    { 20, 20, "Group 3 Analog Facsimile (Rate Set 1)" },
+    { 21, 21, "Group 3 Analog Facsimile (Rate Set 2)" },
+    { 22, 22, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS1 reverse)" },
+    { 23, 23, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS2 reverse)" },
+    { 24, 24, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS1 reverse)" },
     { 25, 25, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS2 reverse)" },
-    { 26, 26, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS1 reverse)" }, 
-    { 27, 27, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS2 reverse)" }, 
-    { 28, 28, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS1 reverse)" }, 
-    { 29, 29, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS2 reverse)" }, 
-    { 30, 30, "Supplemental Channel Loopback Test for Rate Set 1" }, 
-    { 31, 31, "Supplemental Channel Loopback Test for Rate Set 2" }, 
-    { 32, 32, "Test Data Service Option (TDSO)" }, 
-    { 33, 33, "cdma2000 High Speed Packet Data Service, Internet or ISO Protocol Stack" }, 
-    { 34, 34, "cdma2000 High Speed Packet Data Service, CDPD Protocol Stack" }, 
+    { 26, 26, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS1 reverse)" },
+    { 27, 27, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS2 reverse)" },
+    { 28, 28, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS1 reverse)" },
+    { 29, 29, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS2 reverse)" },
+    { 30, 30, "Supplemental Channel Loopback Test for Rate Set 1" },
+    { 31, 31, "Supplemental Channel Loopback Test for Rate Set 2" },
+    { 32, 32, "Test Data Service Option (TDSO)" },
+    { 33, 33, "cdma2000 High Speed Packet Data Service, Internet or ISO Protocol Stack" },
+    { 34, 34, "cdma2000 High Speed Packet Data Service, CDPD Protocol Stack" },
     { 35, 35, "Location Services, Rate Set 1 (9.6 kbps)" },
-    { 36, 36, "Location Services, Rate Set 2 (14.4 kbps)" }, 
-    { 37, 37, "ISDN Interworking Service (64 kbps)" }, 
-    { 38, 38, "GSM Voice" }, 
-    { 39, 39, "GSM Circuit Data" }, 
-    { 40, 40, "GSM Packet Data" }, 
-    { 41, 41, "GSM Short Message Service" }, 
-    { 42, 42, "None Reserved for MC-MAP standard service options" }, 
-    { 54, 54, "Markov Service Option (MSO)" }, 
+    { 36, 36, "Location Services, Rate Set 2 (14.4 kbps)" },
+    { 37, 37, "ISDN Interworking Service (64 kbps)" },
+    { 38, 38, "GSM Voice" },
+    { 39, 39, "GSM Circuit Data" },
+    { 40, 40, "GSM Packet Data" },
+    { 41, 41, "GSM Short Message Service" },
+    { 42, 42, "None Reserved for MC-MAP standard service options" },
+    { 54, 54, "Markov Service Option (MSO)" },
     { 55, 55, "Loopback Service Option (LSO)" },
-    { 56, 56, "Selectable Mode Vocoder" }, 
-    { 57, 57, "32 kbps Circuit Video Conferencing" }, 
-    { 58, 58, "64 kbps Circuit Video Conferencing" }, 
-    { 59, 59, "HRPD Accounting Records Identifier" }, 
-    { 60, 60, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Removal" }, 
-    { 61, 61, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Compression" }, 
+    { 56, 56, "Selectable Mode Vocoder" },
+    { 57, 57, "32 kbps Circuit Video Conferencing" },
+    { 58, 58, "64 kbps Circuit Video Conferencing" },
+    { 59, 59, "HRPD Accounting Records Identifier" },
+    { 60, 60, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Removal" },
+    { 61, 61, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Compression" },
     { 62, 62, "Source-Controlled Variable-Rate Multimode Wideband Speech Codec (VMR-WB) Rate Set 2" },
     { 63, 63, "Source-Controlled Variable-Rate Multimode Wideband Speech Codec (VMR-WB) Rate Set 1" },
     { 64, 64, "HRPD auxiliary Packet Data Service instance" },
     { 65, 65, "cdma2000/GPRS Inter-working" },
     { 66, 66, "cdma2000 High Speed Packet Data Service, Internet or ISO Protocol Stack" },
     { 67, 67, "HRPD Packet Data IP Service where Higher Layer Protocol is IP or ROHC" },
-    { 68, 68, "Enhanced Variable Rate Voice Service (EVRC-B)" }, 
+    { 68, 68, "Enhanced Variable Rate Voice Service (EVRC-B)" },
     { 69, 69, "HRPD Packet Data Service, which when used in paging over the 1x air interface, a page response is required" },
-    { 70, 70, "Enhanced Variable Rate Voice Service (EVRC-WB)" }, 
-    { 71, 4099, "None Reserved for standard service options" }, 
-    { 4100, 4100, "Asynchronous Data Service, Revision 1 (9.6 or 14.4 kbps)" }, 
-    { 4101, 4101, "Group 3 Facsimile, Revision 1 (9.6 or 14.4 kbps)" }, 
+    { 70, 70, "Enhanced Variable Rate Voice Service (EVRC-WB)" },
+    { 71, 4099, "None Reserved for standard service options" },
+    { 4100, 4100, "Asynchronous Data Service, Revision 1 (9.6 or 14.4 kbps)" },
+    { 4101, 4101, "Group 3 Facsimile, Revision 1 (9.6 or 14.4 kbps)" },
     { 4102, 4102, "Reserved for standard service option" },
-    { 4103, 4103, "Packet Data Service: Internet or ISO Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" }, 
-    { 4104, 4104, "Packet Data Service: CDPD Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" }, 
-    { 4105, 32767, "Reserved for standard service options" }, 
-    { 32768, 32768, "QCELP (13 kbps)" }, 
-    { 32769, 32771, "Proprietary QUALCOMM Incorporated" }, 
-    { 32772, 32775, "Proprietary OKI Telecom" }, 
-    { 32776, 32779, "Proprietary Lucent Technologies" }, 
-    { 32780, 32783, "Nokia" }, 
-    { 32784, 32787, "NORTEL NETWORKS" }, 
-    { 32788, 32791, "Sony Electronics Inc" }, 
-    { 32792, 32795, "Motorola" }, 
-    { 32796, 32799, "QUALCOMM Incorporated" }, 
-    { 32800, 32803, "QUALCOMM Incorporated" }, 
-    { 32804, 32807, "QUALCOMM Incorporated" }, 
-    { 32808, 32811, "QUALCOMM Incorporated" }, 
-    { 32812, 32815, "Lucent Technologies" }, 
-    { 32816, 32819, "Denso International" }, 
-    { 32820, 32823, "Motorola" }, 
-    { 32824, 32827, "Denso International" }, 
-    { 32828, 32831, "Denso International" }, 
-    { 32832, 32835, "Denso International" }, 
+    { 4103, 4103, "Packet Data Service: Internet or ISO Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" },
+    { 4104, 4104, "Packet Data Service: CDPD Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" },
+    { 4105, 32767, "Reserved for standard service options" },
+    { 32768, 32768, "QCELP (13 kbps)" },
+    { 32769, 32771, "Proprietary QUALCOMM Incorporated" },
+    { 32772, 32775, "Proprietary OKI Telecom" },
+    { 32776, 32779, "Proprietary Lucent Technologies" },
+    { 32780, 32783, "Nokia" },
+    { 32784, 32787, "NORTEL NETWORKS" },
+    { 32788, 32791, "Sony Electronics Inc" },
+    { 32792, 32795, "Motorola" },
+    { 32796, 32799, "QUALCOMM Incorporated" },
+    { 32800, 32803, "QUALCOMM Incorporated" },
+    { 32804, 32807, "QUALCOMM Incorporated" },
+    { 32808, 32811, "QUALCOMM Incorporated" },
+    { 32812, 32815, "Lucent Technologies" },
+    { 32816, 32819, "Denso International" },
+    { 32820, 32823, "Motorola" },
+    { 32824, 32827, "Denso International" },
+    { 32828, 32831, "Denso International" },
+    { 32832, 32835, "Denso International" },
     { 32836, 32839, "NEC America" },
     { 32840, 32843, "Samsung Electronics" },
     { 32844, 32847, "Texas Instruments Incorporated" },
@@ -3033,7 +3060,7 @@ static const value_string ansi_map_TDMABandwidth_vals[]  = {
 };
 
 /* 6.5.2.az TDMADataFeaturesIndicator N.S0008-0 v 1.0 */
-/* TDMADataFeaturesIndicator 
+/* TDMADataFeaturesIndicator
    ansi_map_FeatureActivity_vals
 
    ADS FeatureActivity ADS-FA ( octet 1 bit A and B )
@@ -3664,7 +3691,7 @@ dissect_ansi_map_win_trigger_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
             j=0;
             break;
         default:
-            proto_tree_add_text(subtree, tvb, offset, 1, "[%u] (%u) %s",j,octet,val_to_str(octet, ansi_map_TriggerType_vals, "Unknown TriggerType (%u)"));
+            proto_tree_add_text(subtree, tvb, offset, 1, "[%u] (%u) %s",j,octet,val_to_str_ext(octet, &ansi_map_TriggerType_vals_ext, "Unknown TriggerType (%u)"));
             j++;
             break;
         }
@@ -3674,7 +3701,20 @@ dissect_ansi_map_win_trigger_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
 
 
 static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) {
+    static gboolean               opCodeKnown = TRUE;
+    static ansi_map_tap_rec_t     tap_rec[16];
+    static ansi_map_tap_rec_t     *tap_p;
+    static int                    tap_current=0;
 
+    /*
+     * set tap record pointer
+     */
+    tap_current++;
+    if (tap_current == array_length(tap_rec))
+    {
+        tap_current = 0;
+    }
+    tap_p = &tap_rec[tap_current];
 
     switch(OperationCode){
     case 1: /*Handoff Measurement Request*/
@@ -3684,7 +3724,7 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
         offset = dissect_ansi_map_FacilitiesDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitiesDirective);
         break;
     case 3: /*Mobile On Channel*/
-        proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
+        proto_tree_add_text(tree, tvb, offset, -1, "[Carries no data]");
         break;
     case 4: /*Handoff Back*/
         offset = dissect_ansi_map_HandoffBack(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffBack);
@@ -3859,7 +3899,7 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
     case  59: /*Change Service*/
         offset = dissect_ansi_map_ChangeService(TRUE, tvb, offset, actx, tree, hf_ansi_map_changeService);
         break;
-        /* End N.S0008-0 v 1.0 */       
+        /* End N.S0008-0 v 1.0 */
     case  60: /*Parameter Request*/
         offset = dissect_ansi_map_ParameterRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_parameterRequest);
         break;
@@ -3918,7 +3958,7 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
         offset = offset;
         break;
     case  78: /*SMS Delivery Point to Point Ack*/
-        offset = offset;
+        offset = dissect_ansi_map_SMSDeliveryPointToPointAck(TRUE, tvb, offset, actx, tree, hf_ansi_map_smsDeliveryPointToPointAck);
         break;
         /* N.S0024*/
     case  79: /*Message Directive*/
@@ -3998,13 +4038,16 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
         /*End N.S0029 X.S0001-A v1.0*/
         /* X.S0002-0 v1.0 */
         /* LCSParameterRequest */
+       case 101:       /* InterSystemSMSPage 101 */
+               offset = dissect_ansi_map_InterSystemSMSPage(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSPage);
+               break;
     case 102:
         offset = dissect_ansi_map_LCSParameterRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_lcsParameterRequest);
         break;
         /* CheckMEID X.S0008-0 v1.0*/
     case 104:
         offset = dissect_ansi_map_CheckMEID(TRUE, tvb, offset, actx, tree, hf_ansi_map_checkMEID);
-        break;  
+        break;
         /* PositionEventNotification */
     case 106:
         offset = dissect_ansi_map_PositionEventNotification(TRUE, tvb, offset, actx, tree, hf_ansi_map_positionEventNotification);
@@ -4013,16 +4056,47 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
         /* StatusRequest X.S0008-0 v1.0*/
         offset = dissect_ansi_map_StatusRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_statusRequest);
         break;
+               /* InterSystemSMSDelivery-PointToPoint 111 X.S0004-540-E v2.0*/
+       case 111:
+               /* InterSystemSMSDeliveryPointToPoint X.S0004-540-E v2.0 */
+               offset = dissect_ansi_map_InterSystemSMSDeliveryPointToPoint(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSDeliveryPointToPoint);
+               break;
+       case 112:
+               /* QualificationRequest2 112 X.S0004-540-E v2.0*/
+               offset = dissect_ansi_map_QualificationRequest2(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest2);
+               break;
     default:
         proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
+       opCodeKnown = FALSE;
         break;
     }
 
-    return offset;
+    if (opCodeKnown)
+    {
+       tap_p->message_type = OperationCode;
+       tap_p->size = 0;        /* should be number of octets in message */
+
+       tap_queue_packet(ansi_map_tap, g_pinfo, tap_p);
+    }
 
+    return offset;
 }
 
 static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) {
+    static gboolean               opCodeKnown = TRUE;
+    static ansi_map_tap_rec_t     tap_rec[16];
+    static ansi_map_tap_rec_t     *tap_p;
+    static int                    tap_current=0;
+
+    /*
+     * set tap record pointer
+     */
+    tap_current++;
+    if (tap_current == array_length(tap_rec))
+    {
+        tap_current = 0;
+    }
+    tap_p = &tap_rec[tap_current];
 
     switch(OperationCode){
     case 1: /*Handoff Measurement Request*/
@@ -4151,6 +4225,7 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
     case  56: /*OTASP Request 6.4.2.CC*/
         offset = dissect_ansi_map_OTASPRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_oTASPRequestRes);
         break;
+       /* 57 Information Backward*/
     case  58: /*Change Facilities*/
         offset = dissect_ansi_map_ChangeFacilitiesRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_changeFacilitiesRes);
         break;
@@ -4163,6 +4238,9 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
     case  61: /*TMSI Directive*/
         offset = dissect_ansi_map_TMSIDirectiveRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_tMSIDirectiveRes);
         break;
+    case  62: /*NumberPortabilityRequest */ 
+        offset = dissect_ansi_map_NumberPortabilityRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_numberPortabilityRequestRes);
+               break;
     case  63: /*Service Request*/
         offset = dissect_ansi_map_ServiceRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_serviceRequestRes);
         break;
@@ -4170,9 +4248,13 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
     case  64: /*Analyzed Information Request*/
         offset = dissect_ansi_map_AnalyzedInformationRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_analyzedInformationRes);
         break;
+    /* 65 Connection Failure Report*/
+    /* 66 Connect Resource*/
+    /* 67 Disconnect Resource*/
     case  68: /*Facility Selected and Available*/
         offset = dissect_ansi_map_FacilitySelectedAndAvailableRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitySelectedAndAvailableRes);
         break;
+       /* 69 Instruction Request*/
     case  70: /*Modify*/
         offset = dissect_ansi_map_ModifyRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_modifyRes);
         break;
@@ -4236,7 +4318,7 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
         /* CheckMEID X.S0008-0 v1.0*/
     case 104:
         offset = dissect_ansi_map_CheckMEIDRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_checkMEIDRes);
-        break;  
+        break;
         /* PositionEventNotification *
            case 106:
            offset = dissect_ansi_map_PositionEventNotification(TRUE, tvb, offset, actx, tree, hf_ansi_map_positionEventNotificationRes);
@@ -4246,14 +4328,29 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
         /* StatusRequest X.S0008-0 v1.0*/
         offset = dissect_ansi_map_StatusRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_statusRequestRes);
         break;
-
+       case 111:
+               /* InterSystemSMSDeliveryPointToPointRes X.S0004-540-E v2.0 */
+               offset = dissect_ansi_map_InterSystemSMSDeliveryPointToPointRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSDeliveryPointToPointRes);
+               break;
+       case 112:
+               /* QualificationRequest2Res 112 X.S0004-540-E v2.0*/
+               offset = dissect_ansi_map_QualificationRequest2Res(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest2Res);
+               break;
     default:
         proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
+       opCodeKnown = FALSE;
         break;
     }
 
-    return offset;
+    if (opCodeKnown)
+    {
+       tap_p->message_type = OperationCode;
+       tap_p->size = 0;        /* should be number of octets in message */
+
+       tap_queue_packet(ansi_map_tap, g_pinfo, tap_p);
+    }
 
+    return offset;
 }
 
 static int
@@ -4267,20 +4364,29 @@ find_saved_invokedata(asn1_ctx_t *actx){
     char *buf;
 
     buf=ep_alloc(1024);
-    src_str = address_to_str(src);
-    dst_str = address_to_str(dst);
+    src_str = ep_address_to_str(src);
+    dst_str = ep_address_to_str(dst);
 
     /* Data from the TCAP dissector */
     if (actx->pinfo->private_data != NULL){
         p_private_tcap=actx->pinfo->private_data;
         /* The hash string needs to contain src and dest to distiguish differnt flows */
-        src_str = address_to_str(src);
-        dst_str = address_to_str(dst);
+        src_str = ep_address_to_str(src);
+        dst_str = ep_address_to_str(dst);
         /* Reverse order to invoke */
-        g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,dst_str,src_str);
-        /*
-          g_warning("Find Hash string %s",buf);
-        */
+               switch(ansi_map_response_matching_type){
+                       case ANSI_MAP_TID_ONLY:
+                               g_snprintf(buf,1024,"%s",p_private_tcap->TransactionID_str);
+                               break;
+                       case 1:
+                               g_snprintf(buf,1024,"%s%s",p_private_tcap->TransactionID_str,dst_str);
+                               break;
+                       default:
+                               g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,dst_str,src_str);
+                               break;
+               }
+
+               /*g_warning("Find Hash string %s pkt: %u",buf,actx->pinfo->fd->num);*/
         ansi_map_saved_invokedata = g_hash_table_lookup(TransactionId_table, buf);
         if(ansi_map_saved_invokedata){
             OperationCode = ansi_map_saved_invokedata->opcode & 0xff;
@@ -4289,6 +4395,7 @@ find_saved_invokedata(asn1_ctx_t *actx){
             OperationCode = OperationCode & 0x00ff;
         }
     }else{
+               /*g_warning("No private data pkt: %u",actx->pinfo->fd->num);*/
         OperationCode = OperationCode & 0x00ff;
     }
     return OperationCode;
@@ -4311,10 +4418,7 @@ dissect_ansi_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
     /*
      * Make entry in the Protocol column on summary display
      */
-    if (check_col(pinfo->cinfo, COL_PROTOCOL))
-    {
-        col_set_str(pinfo->cinfo, COL_PROTOCOL, "ANSI MAP");
-    }
+    col_set_str(pinfo->cinfo, COL_PROTOCOL, "ANSI MAP");
 
     /* Data from the TCAP dissector */
     if (pinfo->private_data == NULL){
@@ -4335,43 +4439,31 @@ dissect_ansi_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
     p_private_tcap=pinfo->private_data;
 
     switch(p_private_tcap->d.pdu){
-        /* 
-           1 : invoke, 
-           2 : returnResult, 
+        /*
+           1 : invoke,
+           2 : returnResult,
            3 : returnError,
            4 : reject
         */
     case 1:
         OperationCode = p_private_tcap->d.OperationCode_private & 0x00ff;
         ansi_map_is_invoke = TRUE;
-        if (check_col(pinfo->cinfo, COL_INFO)){
-            col_clear(pinfo->cinfo, COL_INFO);
-            col_add_fstr(pinfo->cinfo, COL_INFO,"%s Invoke", val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)"));
-        }
-        proto_item_append_text(p_private_tcap->d.OperationCode_item," %s",val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)"));
+        col_add_fstr(pinfo->cinfo, COL_INFO,"%s Invoke ", val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
+        proto_item_append_text(p_private_tcap->d.OperationCode_item," %s",val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
         offset = dissect_invokeData(ansi_map_tree, tvb, 0, &asn1_ctx);
         update_saved_invokedata(pinfo, ansi_map_tree, tvb);
         break;
     case 2:
         OperationCode = find_saved_invokedata(&asn1_ctx);
-        if (check_col(pinfo->cinfo, COL_INFO)){
-            col_clear(pinfo->cinfo, COL_INFO);
-            col_add_fstr(pinfo->cinfo, COL_INFO,"%s ReturnResult", val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)"));
-        }
-        proto_item_append_text(p_private_tcap->d.OperationCode_item," %s",val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)"));
+        col_add_fstr(pinfo->cinfo, COL_INFO,"%s ReturnResult ", val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
+        proto_item_append_text(p_private_tcap->d.OperationCode_item," %s",val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
         offset = dissect_returnData(ansi_map_tree, tvb, 0, &asn1_ctx);
         break;
     case 3:
-        if (check_col(pinfo->cinfo, COL_INFO)){
-            col_clear(pinfo->cinfo, COL_INFO);
-            col_add_fstr(pinfo->cinfo, COL_INFO,"%s ReturnError", val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)"));
-        }
+        col_add_fstr(pinfo->cinfo, COL_INFO,"%s ReturnError ", val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
         break;
     case 4:
-        if (check_col(pinfo->cinfo, COL_INFO)){
-            col_clear(pinfo->cinfo, COL_INFO);
-            col_add_fstr(pinfo->cinfo, COL_INFO,"%s Reject", val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)"));
-        }
+        col_add_fstr(pinfo->cinfo, COL_INFO,"%s Reject ", val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
         break;
     default:
         /* Must be Invoke ReturnResult ReturnError or Reject */
@@ -4427,284 +4519,284 @@ void proto_register_ansi_map(void) {
         { &hf_ansi_map_op_code_fam,
           { "Operation Code Family", "ansi_map.op_code_fam",
             FT_UINT8, BASE_DEC, NULL, 0,
-            "Operation Code Family", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_reservedBitH,
           { "Reserved", "ansi_map.reserved_bitH",
             FT_BOOLEAN, 8, NULL,0x80,
-            "Reserved", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_reservedBitD,
           { "Reserved", "ansi_map.reserved_bitD",
             FT_BOOLEAN, 8, NULL,0x08,
-            "Reserved", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_reservedBitHG,
           { "Reserved", "ansi_map.reserved_bitHG",
             FT_UINT8, BASE_DEC, NULL, 0xc0,
-            "Reserved", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_reservedBitHGFE,
           { "Reserved", "ansi_map.reserved_bitHGFE",
             FT_UINT8, BASE_DEC, NULL, 0xf0,
-            "Reserved", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_reservedBitFED,
           { "Reserved", "ansi_map.reserved_bitFED",
             FT_UINT8, BASE_DEC, NULL, 0x38,
-            "Reserved", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_reservedBitED,
           { "Reserved", "ansi_map.reserved_bitED",
             FT_UINT8, BASE_DEC, NULL, 0x18,
-            "Reserved", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_op_code,
           { "Operation Code", "ansi_map.op_code",
-            FT_UINT8, BASE_DEC, VALS(ansi_map_opr_code_strings), 0x0,
-            "Operation Code", HFILL }},
+            FT_UINT8, BASE_DEC|BASE_EXT_STRING, &ansi_map_opr_code_strings_ext, 0x0,
+            NULL, HFILL }},
         { &hf_ansi_map_type_of_digits,
           { "Type of Digits", "ansi_map.type_of_digits",
             FT_UINT8, BASE_DEC, VALS(ansi_map_type_of_digits_vals), 0x0,
-            "Type of Digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_na,
           { "Nature of Number", "ansi_map.na",
             FT_BOOLEAN, 8, TFS(&ansi_map_na_bool_val),0x01,
-            "Nature of Number", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_pi,
           { "Presentation Indication", "ansi_map.type_of_pi",
             FT_BOOLEAN, 8, TFS(&ansi_map_pi_bool_val),0x02,
-            "Presentation Indication", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_navail,
           { "Number available indication", "ansi_map.navail",
             FT_BOOLEAN, 8, TFS(&ansi_map_navail_bool_val),0x04,
-            "Number available indication", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_si,
           { "Screening indication", "ansi_map.si",
             FT_UINT8, BASE_DEC, VALS(ansi_map_si_vals), 0x30,
-            "Screening indication", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_digits_enc,
           { "Encoding", "ansi_map.enc",
             FT_UINT8, BASE_DEC, VALS(ansi_map_digits_enc_vals), 0x0f,
-            "Encoding", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_np,
           { "Numbering Plan", "ansi_map.np",
             FT_UINT8, BASE_DEC, VALS(ansi_map_np_vals), 0xf0,
-            "Numbering Plan", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_nr_digits,
           { "Number of Digits", "ansi_map.nr_digits",
             FT_UINT8, BASE_DEC, NULL, 0x0,
-            "Number of Digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_bcd_digits,
           { "BCD digits", "ansi_map.bcd_digits",
             FT_STRING, BASE_NONE, NULL, 0,
-            "BCD digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_ia5_digits,
           { "IA5 digits", "ansi_map.ia5_digits",
             FT_STRING, BASE_NONE, NULL, 0,
-            "IA5 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_subaddr_type,
           { "Type of Subaddress", "ansi_map.subaddr_type",
             FT_UINT8, BASE_DEC, VALS(ansi_map_sub_addr_type_vals), 0x70,
-            "Type of Subaddress", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_subaddr_odd_even,
           { "Odd/Even Indicator", "ansi_map.subaddr_odd_even",
             FT_BOOLEAN, 8, TFS(&ansi_map_navail_bool_val),0x08,
-            "Odd/Even Indicator", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_alertcode_cadence,
           { "Cadence", "ansi_map.alertcode.cadence",
             FT_UINT8, BASE_DEC, VALS(ansi_map_AlertCode_Cadence_vals), 0x3f,
-            "Cadence", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_alertcode_pitch,
           { "Pitch", "ansi_map.alertcode.pitch",
             FT_UINT8, BASE_DEC, VALS(ansi_map_AlertCode_Pitch_vals), 0xc0,
-            "Pitch", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_alertcode_alertaction,
           { "Alert Action", "ansi_map.alertcode.alertaction",
             FT_UINT8, BASE_DEC, VALS(ansi_map_AlertCode_Alert_Action_vals), 0x07,
-            "Alert Action", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_announcementcode_tone,
           { "Tone", "ansi_map.announcementcode.tone",
             FT_UINT8, BASE_DEC, VALS(ansi_map_AnnouncementCode_tone_vals), 0x0,
-            "Tone", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_announcementcode_class,
           { "Tone", "ansi_map.announcementcode.class",
             FT_UINT8, BASE_DEC, VALS(ansi_map_AnnouncementCode_class_vals), 0xf,
-            "Tone", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_announcementcode_std_ann,
           { "Standard Announcement", "ansi_map.announcementcode.std_ann",
             FT_UINT8, BASE_DEC, VALS(ansi_map_AnnouncementCode_std_ann_vals), 0x0,
-            "Standard Announcement", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_announcementcode_cust_ann,
           { "Custom Announcement", "ansi_map.announcementcode.cust_ann",
             FT_UINT8, BASE_DEC, NULL, 0x0,
-            "Custom Announcement", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_authorizationperiod_period,
           { "Period", "ansi_map.authorizationperiod.period",
             FT_UINT8, BASE_DEC, VALS(ansi_map_authorizationperiod_period_vals), 0x0,
-            "Period", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_value,
-          { " Value", "ansi_map.value",
+          { "Value", "ansi_map.value",
             FT_UINT8, BASE_DEC, NULL, 0x0,
-            "Value", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_msc_type,
           { "Type", "ansi_map.extendedmscid.type",
             FT_UINT8, BASE_DEC, VALS(ansi_map_msc_type_vals), 0x0,
-            "Type", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_handoffstate_pi,
           { "Party Involved (PI)", "ansi_map.handoffstate.pi",
             FT_BOOLEAN, 8, TFS(&ansi_map_HandoffState_pi_bool_val),0x01,
-            "Party Involved (PI)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_tgn,
           { "Trunk Group Number (G)", "ansi_map.tgn",
             FT_UINT8, BASE_DEC, NULL,0x0,
-            "Trunk Group Number (G)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_tmn,
           { "Trunk Member Number (M)", "ansi_map.tgn",
             FT_UINT8, BASE_DEC, NULL,0x0,
-            "Trunk Member Number (M)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_messagewaitingnotificationcount_tom,
           { "Type of messages", "ansi_map.messagewaitingnotificationcount.tom",
             FT_UINT8, BASE_DEC, VALS(ansi_map_MessageWaitingNotificationCount_type_vals), 0x0,
-            "Type of messages", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_messagewaitingnotificationcount_no_mw,
           { "Number of Messages Waiting", "ansi_map.messagewaitingnotificationcount.nomw",
             FT_UINT8, BASE_DEC, NULL,0x0,
-            "Number of Messages Waiting", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_messagewaitingnotificationtype_mwi,
           { "Message Waiting Indication (MWI)", "ansi_map.messagewaitingnotificationcount.mwi",
             FT_UINT8, BASE_DEC, VALS(ansi_map_MessageWaitingNotificationType_mwi_vals), 0x0,
-            "Message Waiting Indication (MWI)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_messagewaitingnotificationtype_apt,
           { "Alert Pip Tone (APT)", "ansi_map.messagewaitingnotificationtype.apt",
             FT_BOOLEAN, 8, TFS(&ansi_map_HandoffState_pi_bool_val),0x02,
-            "Alert Pip Tone (APT)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_messagewaitingnotificationtype_pt,
           { "Pip Tone (PT)", "ansi_map.messagewaitingnotificationtype.pt",
             FT_UINT8, BASE_DEC, VALS(ansi_map_MessageWaitingNotificationType_mwi_vals), 0xc0,
-            "Pip Tone (PT)", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_trans_cap_prof,
           { "Profile (PROF)", "ansi_map.trans_cap_prof",
             FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_prof_bool_val),0x01,
-            "Profile (PROF)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_trans_cap_busy,
           { "Busy Detection (BUSY)", "ansi_map.trans_cap_busy",
             FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_busy_bool_val),0x02,
-            "Busy Detection (BUSY)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_trans_cap_ann,
           { "Announcements (ANN)", "ansi_map.trans_cap_ann",
             FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_ann_bool_val),0x04,
-            "Announcements (ANN)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_trans_cap_rui,
           { "Remote User Interaction (RUI)", "ansi_map.trans_cap_rui",
             FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_rui_bool_val),0x08,
-            "Remote User Interaction (RUI)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_trans_cap_spini,
           { "Subscriber PIN Intercept (SPINI)", "ansi_map.trans_cap_spini",
             FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_spini_bool_val),0x10,
-            "Subscriber PIN Intercept (SPINI)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_trans_cap_uzci,
           { "UZ Capability Indicator (UZCI)", "ansi_map.trans_cap_uzci",
             FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_uzci_bool_val),0x20,
-            "UZ Capability Indicator (UZCI)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_trans_cap_ndss,
           { "NDSS Capability (NDSS)", "ansi_map.trans_cap_ndss",
             FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_ndss_bool_val),0x40,
-            "NDSS Capability (NDSS)", HFILL }},         
+            NULL, HFILL }},
         { &hf_ansi_map_trans_cap_nami,
           { "NAME Capability Indicator (NAMI)", "ansi_map.trans_cap_nami",
             FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_nami_bool_val),0x80,
-            "NAME Capability Indicator (NAMI)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_trans_cap_multerm,
           { "Multiple Terminations", "ansi_map.trans_cap_multerm",
             FT_UINT8, BASE_DEC, VALS(ansi_map_trans_cap_multerm_vals), 0x0f,
-            "Multiple Terminations", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_terminationtriggers_busy,
           { "Busy", "ansi_map.terminationtriggers.busy",
             FT_UINT8, BASE_DEC, VALS(ansi_map_terminationtriggers_busy_vals), 0x03,
-            "Busy", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_terminationtriggers_rf,
           { "Routing Failure (RF)", "ansi_map.terminationtriggers.rf",
             FT_UINT8, BASE_DEC, VALS(ansi_map_terminationtriggers_rf_vals), 0x0c,
-            "Routing Failure (RF)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_terminationtriggers_npr,
           { "No Page Response (NPR)", "ansi_map.terminationtriggers.npr",
             FT_UINT8, BASE_DEC, VALS(ansi_map_terminationtriggers_npr_vals), 0x30,
-            "No Page Response (NPR)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_terminationtriggers_na,
           { "No Answer (NA)", "ansi_map.terminationtriggers.na",
             FT_UINT8, BASE_DEC, VALS(ansi_map_terminationtriggers_na_vals), 0xc0,
-            "No Answer (NA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_terminationtriggers_nr,
           { "None Reachable (NR)", "ansi_map.terminationtriggers.nr",
             FT_UINT8, BASE_DEC, VALS(ansi_map_terminationtriggers_nr_vals), 0x01,
-            "None Reachable (NR)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_trans_cap_tl,
           { "TerminationList (TL)", "ansi_map.trans_cap_tl",
             FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_tl_bool_val),0x10,
-            "TerminationList (TL)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmaserviceoption,
           { "CDMAServiceOption", "ansi_map.cdmaserviceoption",
             FT_UINT16, BASE_RANGE_STRING | BASE_DEC, RVALS(&cdmaserviceoption_vals), 0x0,
-            "CDMAServiceOption", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_trans_cap_waddr,
           { "WIN Addressing (WADDR)", "ansi_map.trans_cap_waddr",
             FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_waddr_bool_val),0x20,
-            "WIN Addressing (WADDR)", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_MarketID,
           { "MarketID", "ansi_map.marketid",
             FT_UINT16, BASE_DEC, NULL, 0,
-            "MarketID", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_swno,
           { "Switch Number (SWNO)", "ansi_map.swno",
             FT_UINT8, BASE_DEC, NULL, 0,
-            "Switch Number (SWNO)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_idno,
           { "ID Number", "ansi_map.idno",
             FT_UINT32, BASE_DEC, NULL, 0,
-            "ID Number", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_segcount,
           { "Segment Counter", "ansi_map.segcount",
             FT_UINT8, BASE_DEC, NULL, 0,
-            "Segment Counter", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_sms_originationrestrictions_direct,
           { "DIRECT", "ansi_map.originationrestrictions.direct",
             FT_BOOLEAN, 8, TFS(&ansi_map_SMS_OriginationRestrictions_direct_bool_val),0x04,
-            "DIRECT", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_sms_originationrestrictions_default,
           { "DEFAULT", "ansi_map.originationrestrictions.default",
             FT_UINT8, BASE_DEC, VALS(ansi_map_SMS_OriginationRestrictions_default_vals), 0x03,
-            "DEFAULT", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_sms_originationrestrictions_fmc,
           { "Force Message Center (FMC)", "ansi_map.originationrestrictions.fmc",
             FT_BOOLEAN, 8, TFS(&ansi_map_SMS_OriginationRestrictions_fmc_bool_val),0x08,
-            "Force Message Center (FMC)", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_systemcapabilities_auth,
           { "Authentication Parameters Requested (AUTH)", "ansi_map.systemcapabilities.auth",
             FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_auth_bool_val),0x01,
-            "Authentication Parameters Requested (AUTH)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_systemcapabilities_se,
           { "Signaling Message Encryption Capable (SE )", "ansi_map.systemcapabilities.se",
             FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_se_bool_val),0x02,
-            "Signaling Message Encryption Capable (SE )", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_systemcapabilities_vp,
           { "Voice Privacy Capable (VP )", "ansi_map.systemcapabilities.vp",
             FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_vp_bool_val),0x04,
-            "Voice Privacy Capable (VP )", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_systemcapabilities_cave,
           { "CAVE Algorithm Capable (CAVE)", "ansi_map.systemcapabilities.cave",
             FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_cave_bool_val),0x08,
-            "CAVE Algorithm Capable (CAVE)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_systemcapabilities_ssd,
           { "Shared SSD (SSD)", "ansi_map.systemcapabilities.ssd",
             FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_ssd_bool_val),0x10,
-            "Shared SSD (SSD)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_systemcapabilities_dp,
           { "Data Privacy (DP)", "ansi_map.systemcapabilities.dp",
             FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_dp_bool_val),0x20,
-            "Data Privacy (DP)", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_mslocation_lat,
           { "Latitude in tenths of a second", "ansi_map.mslocation.lat",
             FT_UINT8, BASE_DEC, NULL, 0,
-            "Latitude in tenths of a second", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_mslocation_long,
           { "Longitude in tenths of a second", "ansi_map.mslocation.long",
             FT_UINT8, BASE_DEC, NULL, 0,
@@ -4712,182 +4804,182 @@ void proto_register_ansi_map(void) {
         { &hf_ansi_map_mslocation_res,
           { "Resolution in units of 1 foot", "ansi_map.mslocation.res",
             FT_UINT8, BASE_DEC, NULL, 0,
-            "Resolution in units of 1 foot", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_nampscallmode_namps,
           { "Call Mode", "ansi_map.nampscallmode.namps",
             FT_BOOLEAN, 8, TFS(&ansi_map_CallMode_namps_bool_val),0x01,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_nampscallmode_amps,
           { "Call Mode", "ansi_map.nampscallmode.amps",
             FT_BOOLEAN, 8, TFS(&ansi_map_CallMode_amps_bool_val),0x02,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_nampschanneldata_navca,
           { "Narrow Analog Voice Channel Assignment (NAVCA)", "ansi_map.nampschanneldata.navca",
             FT_UINT8, BASE_DEC, VALS(ansi_map_NAMPSChannelData_navca_vals), 0x03,
-            "Narrow Analog Voice Channel Assignment (NAVCA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_nampschanneldata_CCIndicator,
           { "Color Code Indicator (CCIndicator)", "ansi_map.nampschanneldata.ccindicator",
             FT_UINT8, BASE_DEC, VALS(ansi_map_NAMPSChannelData_ccinidicator_vals), 0x1c,
-            "Color Code Indicator (CCIndicator)", HFILL }},
+            NULL, HFILL }},
 
 
         { &hf_ansi_map_callingfeaturesindicator_cfufa,
           { "Call Forwarding Unconditional FeatureActivity, CFU-FA", "ansi_map.callingfeaturesindicator.cfufa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
-            "Call Forwarding Unconditional FeatureActivity, CFU-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_cfbfa,
           { "Call Forwarding Busy FeatureActivity, CFB-FA", "ansi_map.callingfeaturesindicator.cfbafa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x0c,
-            "Call Forwarding Busy FeatureActivity, CFB-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_cfnafa,
           { "Call Forwarding No Answer FeatureActivity, CFNA-FA", "ansi_map.callingfeaturesindicator.cfnafa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x30,
-            "Call Forwarding No Answer FeatureActivity, CFNA-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_cwfa,
           { "Call Waiting: FeatureActivity, CW-FA", "ansi_map.callingfeaturesindicator.cwfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0xc0,
-            "Call Waiting: FeatureActivity, CW-FA", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_callingfeaturesindicator_3wcfa,
           { "Three-Way Calling FeatureActivity, 3WC-FA", "ansi_map.callingfeaturesindicator.3wcfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
-            "Three-Way Calling FeatureActivity, 3WC-FA", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_callingfeaturesindicator_pcwfa,
           { "Priority Call Waiting FeatureActivity PCW-FA", "ansi_map.callingfeaturesindicator.pcwfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
-            "Priority Call Waiting FeatureActivity PCW-FA", HFILL }},
-          
+            NULL, HFILL }},
+
         { &hf_ansi_map_callingfeaturesindicator_dpfa,
           { "Data Privacy Feature Activity DP-FA", "ansi_map.callingfeaturesindicator.dpfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x0c,
-            "Data Privacy Feature Activity DP-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_ahfa,
           { "Answer Hold: FeatureActivity AH-FA", "ansi_map.callingfeaturesindicator.ahfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x30,
-            "Answer Hold: FeatureActivity AH-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_uscfvmfa,
           { "USCF divert to voice mail: FeatureActivity USCFvm-FA", "ansi_map.callingfeaturesindicator.uscfvmfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0xc0,
-            "USCF divert to voice mail: FeatureActivity USCFvm-FA", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_callingfeaturesindicator_uscfmsfa,
           { "USCF divert to mobile station provided DN:FeatureActivity.USCFms-FA", "ansi_map.callingfeaturesindicator.uscfmsfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
-            "USCF divert to mobile station provided DN:FeatureActivity.USCFms-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_uscfnrfa,
           { "USCF divert to network registered DN:FeatureActivity. USCFnr-FA", "ansi_map.callingfeaturesindicator.uscfmsfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x0c,
-            "USCF divert to network registered DN:FeatureActivity. USCFnr-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_cpdsfa,
           { "CDMA-Packet Data Service: FeatureActivity. CPDS-FA", "ansi_map.callingfeaturesindicator.cpdfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x30,
-            "CDMA-Packet Data Service: FeatureActivity. CPDS-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_ccsfa,
           { "CDMA-Concurrent Service:FeatureActivity. CCS-FA", "ansi_map.callingfeaturesindicator.ccsfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0xc0,
-            "CDMA-Concurrent Service:FeatureActivity. CCS-FA", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_callingfeaturesindicator_epefa,
           { "TDMA Enhanced Privacy and Encryption:FeatureActivity.TDMA EPE-FA", "ansi_map.callingfeaturesindicator.epefa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
-            "TDMA Enhanced Privacy and Encryption:FeatureActivity.TDMA EPE-FA", HFILL }},
+            NULL, HFILL }},
 
 
         { &hf_ansi_map_callingfeaturesindicator_cdfa,
           { "Call Delivery: FeatureActivity, CD-FA", "ansi_map.callingfeaturesindicator.cdfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x0c,
-            "Call Delivery: FeatureActivity, CD-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_vpfa,
           { "Voice Privacy FeatureActivity, VP-FA", "ansi_map.callingfeaturesindicator.vpfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x30,
-            "Voice Privacy FeatureActivity, VP-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_ctfa,
           { "Call Transfer: FeatureActivity, CT-FA", "ansi_map.callingfeaturesindicator.ctfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0xc0,
-            "Call Transfer: FeatureActivity, CT-FA", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_callingfeaturesindicator_cnip1fa,
           { "One number (network-provided only) Calling Number Identification Presentation: FeatureActivity CNIP1-FA", "ansi_map.callingfeaturesindicator.cnip1fa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
-            "One number (network-provided only) Calling Number Identification Presentation: FeatureActivity CNIP1-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_cnip2fa,
           { "Two number (network-provided and user-provided) Calling Number Identification Presentation: FeatureActivity CNIP2-FA", "ansi_map.callingfeaturesindicator.cnip2fa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x0c,
-            "Two number (network-provided and user-provided) Calling Number Identification Presentation: FeatureActivity CNIP2-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_cnirfa,
           { "Calling Number Identification Restriction: FeatureActivity CNIR-FA", "ansi_map.callingfeaturesindicator.cnirfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x30,
-            "Calling Number Identification Restriction: FeatureActivity CNIR-FA", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_callingfeaturesindicator_cniroverfa,
           { "Calling Number Identification Restriction Override FeatureActivity CNIROver-FA", "ansi_map.callingfeaturesindicator.cniroverfa",
             FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0xc0,
-            "", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_cdmacallmode_cdma,
           { "Call Mode", "ansi_map.cdmacallmode.cdma",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cdma_bool_val),0x01,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_amps,
           { "Call Mode", "ansi_map.cdmacallmode.amps",
             FT_BOOLEAN, 8, TFS(&ansi_map_CallMode_amps_bool_val),0x02,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_namps,
           { "Call Mode", "ansi_map.cdmacallmode.namps",
             FT_BOOLEAN, 8, TFS(&ansi_map_CallMode_namps_bool_val),0x04,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_cls1,
           { "Call Mode", "ansi_map.cdmacallmode.cls1",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls1_bool_val),0x08,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_cls2,
           { "Call Mode", "ansi_map.cdmacallmode.cls2",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls2_bool_val),0x10,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_cls3,
           { "Call Mode", "ansi_map.cdmacallmode.cls3",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls3_bool_val),0x20,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_cls4,
           { "Call Mode", "ansi_map.cdmacallmode.cls4",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls4_bool_val),0x40,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_cls5,
           { "Call Mode", "ansi_map.cdmacallmode.cls5",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls5_bool_val),0x80,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_cls6,
           { "Call Mode", "ansi_map.cdmacallmode.cls6",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls6_bool_val),0x01,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_cls7,
           { "Call Mode", "ansi_map.cdmacallmode.cls7",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls7_bool_val),0x02,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_cls8,
           { "Call Mode", "ansi_map.cdmacallmode.cls8",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls8_bool_val),0x04,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_cls9,
           { "Call Mode", "ansi_map.cdmacallmode.cls9",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls9_bool_val),0x08,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmacallmode_cls10,
           { "Call Mode", "ansi_map.cdmacallmode.cls10",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls10_bool_val),0x10,
-            "Call Mode", HFILL }},
+            NULL, HFILL }},
         {&hf_ansi_map_cdmachanneldata_Frame_Offset,
          { "Frame Offset", "ansi_map.cdmachanneldata.frameoffset",
            FT_UINT8, BASE_DEC, NULL, 0x78,
-           "Frame Offset", HFILL }},
+           NULL, HFILL }},
         {&hf_ansi_map_cdmachanneldata_CDMA_ch_no,
          { "CDMA Channel Number", "ansi_map.cdmachanneldata.cdma_ch_no",
            FT_UINT16, BASE_DEC, NULL, 0x07FF,
-           "CDMA Channel Number", HFILL }},
+           NULL, HFILL }},
         {&hf_ansi_map_cdmachanneldata_band_cls,
          { "Band Class", "ansi_map.cdmachanneldata.band_cls",
            FT_UINT8, BASE_DEC, VALS(ansi_map_cdmachanneldata_band_cls_vals), 0x7c,
-           "Band Class", HFILL }},
+           NULL, HFILL }},
         {&hf_ansi_map_cdmachanneldata_lc_mask_b6,
          { "Long Code Mask (byte 6) MSB", "ansi_map.cdmachanneldata.lc_mask_b6",
            FT_UINT8, BASE_HEX, NULL, 0x03,
@@ -4895,19 +4987,19 @@ void proto_register_ansi_map(void) {
         {&hf_ansi_map_cdmachanneldata_lc_mask_b5,
          { "Long Code Mask (byte 5)", "ansi_map.cdmachanneldata.lc_mask_b5",
            FT_UINT8, BASE_HEX, NULL, 0xff,
-           "Long Code Mask (byte 5)", HFILL }},
+           NULL, HFILL }},
         {&hf_ansi_map_cdmachanneldata_lc_mask_b4,
          { "Long Code Mask (byte 4)", "ansi_map.cdmachanneldata.lc_mask_b4",
            FT_UINT8, BASE_HEX, NULL, 0xff,
-           "Long Code Mask (byte 4)", HFILL }},
+           NULL, HFILL }},
         {&hf_ansi_map_cdmachanneldata_lc_mask_b3,
          { "Long Code Mask (byte 3)", "ansi_map.cdmachanneldata.lc_mask_b3",
            FT_UINT8, BASE_HEX, NULL, 0xff,
-           "Long Code Mask (byte 3)", HFILL }},
+           NULL, HFILL }},
         {&hf_ansi_map_cdmachanneldata_lc_mask_b2,
          { "Long Code Mask (byte 2)", "ansi_map.cdmachanneldata.lc_mask_b2",
            FT_UINT8, BASE_HEX, NULL, 0xff,
-           "Long Code Mask (byte 2)", HFILL }},
+           NULL, HFILL }},
         {&hf_ansi_map_cdmachanneldata_lc_mask_b1,
          { "Long Code Mask LSB(byte 1)", "ansi_map.cdmachanneldata.lc_mask_b1",
            FT_UINT8, BASE_HEX, NULL, 0xff,
@@ -4915,312 +5007,312 @@ void proto_register_ansi_map(void) {
         {&hf_ansi_map_cdmachanneldata_np_ext,
          { "NP EXT", "ansi_map.cdmachanneldata.np_ext",
            FT_BOOLEAN, 8, NULL,0x80,
-           "NP EXT", HFILL }},
+           NULL, HFILL }},
         {&hf_ansi_map_cdmachanneldata_nominal_pwr,
          { "Nominal Power", "ansi_map.cdmachanneldata.nominal_pwr",
            FT_UINT8, BASE_DEC, NULL, 0x71,
-           "Nominal Power", HFILL }},
+           NULL, HFILL }},
         {&hf_ansi_map_cdmachanneldata_nr_preamble,
          { "Number Preamble", "ansi_map.cdmachanneldata.nr_preamble",
            FT_UINT8, BASE_DEC, NULL, 0x07,
-           "Number Preamble", HFILL }},
+           NULL, HFILL }},
 
         { &hf_ansi_map_cdmastationclassmark_pc,
           { "Power Class(PC)", "ansi_map.cdmastationclassmark.pc",
             FT_UINT8, BASE_DEC, VALS(ansi_map_CDMAStationClassMark_pc_vals), 0x03,
-            "Power Class(PC)", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_cdmastationclassmark_dtx,
           { "Analog Transmission: (DTX)", "ansi_map.cdmastationclassmark.dtx",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMAStationClassMark_dtx_bool_val),0x04,
-            "Analog Transmission: (DTX)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmastationclassmark_smi,
-          { " Slotted Mode Indicator: (SMI)", "ansi_map.cdmastationclassmark.smi",
+          { "Slotted Mode Indicator: (SMI)", "ansi_map.cdmastationclassmark.smi",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMAStationClassMark_smi_bool_val),0x20,
-            " Slotted Mode Indicator: (SMI)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_cdmastationclassmark_dmi,
           { "Dual-mode Indicator(DMI)", "ansi_map.cdmastationclassmark.dmi",
             FT_BOOLEAN, 8, TFS(&ansi_map_CDMAStationClassMark_dmi_bool_val),0x40,
-            "Dual-mode Indicator(DMI)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_channeldata_vmac,
           { "Voice Mobile Attenuation Code (VMAC)", "ansi_map.channeldata.vmac",
             FT_UINT8, BASE_DEC, NULL, 0x07,
-            "Voice Mobile Attenuation Code (VMAC)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_channeldata_dtx,
           { "Discontinuous Transmission Mode (DTX)", "ansi_map.channeldata.dtx",
             FT_UINT8, BASE_DEC, VALS(ansi_map_ChannelData_dtx_vals), 0x18,
-            "Discontinuous Transmission Mode (DTX)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_channeldata_scc,
           { "SAT Color Code (SCC)", "ansi_map.channeldata.scc",
             FT_UINT8, BASE_DEC, NULL, 0xc0,
-            "SAT Color Code (SCC)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_channeldata_chno,
           { "Channel Number (CHNO)", "ansi_map.channeldata.chno",
             FT_UINT16, BASE_DEC, NULL, 0x0,
-            "Channel Number (CHNO)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_ConfidentialityModes_vp,
           { "Voice Privacy (VP) Confidentiality Status", "ansi_map.confidentialitymodes.vp",
             FT_BOOLEAN, 8, TFS(&ansi_map_ConfidentialityModes_bool_val),0x01,
-            "Voice Privacy (VP) Confidentiality Status", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_controlchanneldata_dcc,
           { "Digital Color Code (DCC)", "ansi_map.controlchanneldata.dcc",
             FT_UINT8, BASE_DEC, NULL, 0xc0,
-            "Digital Color Code (DCC)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_controlchanneldata_cmac,
           { "Control Mobile Attenuation Code (CMAC)", "ansi_map.controlchanneldata.cmac",
             FT_UINT8, BASE_DEC, NULL, 0x07,
-            "Control Mobile Attenuation Code (CMAC)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_controlchanneldata_chno,
           { "Channel Number (CHNO)", "ansi_map.controlchanneldata.cmac",
             FT_UINT16, BASE_DEC, NULL, 0x0,
-            "Channel Number (CHNO)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_controlchanneldata_sdcc1,
           { "Supplementary Digital Color Codes (SDCC1)", "ansi_map.controlchanneldata.ssdc1",
             FT_UINT8, BASE_DEC, NULL, 0x0c,
-            "Supplementary Digital Color Codes (SDCC1)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_controlchanneldata_sdcc2,
           { "Supplementary Digital Color Codes (SDCC2)", "ansi_map.controlchanneldata.ssdc2",
             FT_UINT8, BASE_DEC, NULL, 0x03,
-            "Supplementary Digital Color Codes (SDCC2)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_ConfidentialityModes_se,
           { "Signaling Message Encryption (SE) Confidentiality Status", "ansi_map.confidentialitymodes.se",
             FT_BOOLEAN, 8, TFS(&ansi_map_ConfidentialityModes_bool_val),0x02,
-            "Signaling Message Encryption (SE) Confidentiality Status", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_ConfidentialityModes_dp,
           { "DataPrivacy (DP) Confidentiality Status", "ansi_map.confidentialitymodes.dp",
             FT_BOOLEAN, 8, TFS(&ansi_map_ConfidentialityModes_bool_val),0x04,
-            "DataPrivacy (DP) Confidentiality Status", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_deniedauthorizationperiod_period,
           { "Period", "ansi_map.deniedauthorizationperiod.period",
             FT_UINT8, BASE_DEC, VALS(ansi_map_deniedauthorizationperiod_period_vals), 0x0,
-            "Period", HFILL }},
+            NULL, HFILL }},
 
 
         { &hf_ansi_map_originationtriggers_all,
           { "All Origination (All)", "ansi_map.originationtriggers.all",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_all_bool_val),0x01,
-            "All Origination (All)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_local,
           { "Local", "ansi_map.originationtriggers.all",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_local_bool_val),0x02,
-            "Local", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_ilata,
           { "Intra-LATA Toll (ILATA)", "ansi_map.originationtriggers.ilata",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_ilata_bool_val),0x04,
-            "Intra-LATA Toll (ILATA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_olata,
           { "Inter-LATA Toll (OLATA)", "ansi_map.originationtriggers.olata",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_olata_bool_val),0x08,
-            "Inter-LATA Toll (OLATA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_int,
           { "International (Int'l )", "ansi_map.originationtriggers.int",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_int_bool_val),0x10,
-            "International (Int'l )", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_wz,
           { "World Zone (WZ)", "ansi_map.originationtriggers.wz",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_wz_bool_val),0x20,
-            "World Zone (WZ)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_unrec,
           { "Unrecognized Number (Unrec)", "ansi_map.originationtriggers.unrec",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_unrec_bool_val),0x40,
-            "Unrecognized Number (Unrec)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_rvtc,
           { "Revertive Call (RvtC)", "ansi_map.originationtriggers.rvtc",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_rvtc_bool_val),0x80,
-            "Revertive Call (RvtC)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_star,
           { "Star", "ansi_map.originationtriggers.star",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_star_bool_val),0x01,
-            "Star", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_ds,
           { "Double Star (DS)", "ansi_map.originationtriggers.ds",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_ds_bool_val),0x02,
-            "Double Star (DS)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_pound,
           { "Pound", "ansi_map.originationtriggers.pound",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_pound_bool_val),0x04,
-            "Pound", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_dp,
           { "Double Pound (DP)", "ansi_map.originationtriggers.dp",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_dp_bool_val),0x08,
-            "Double Pound (DP)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_pa,
           { "Prior Agreement (PA)", "ansi_map.originationtriggers.pa",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_pa_bool_val),0x10,
-            "Prior Agreement (PA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_nodig,
           { "No digits", "ansi_map.originationtriggers.nodig",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_nodig_bool_val),0x01,
-            "No digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_onedig,
           { "1 digit", "ansi_map.originationtriggers.onedig",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_onedig_bool_val),0x02,
-            "1 digit", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_twodig,
           { "2 digits", "ansi_map.originationtriggers.twodig",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_twodig_bool_val),0x04,
-            "2 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_threedig,
           { "3 digits", "ansi_map.originationtriggers.threedig",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_threedig_bool_val),0x08,
-            "3 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_fourdig,
           { "4 digits", "ansi_map.originationtriggers.fourdig",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_fourdig_bool_val),0x10,
-            "4 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_fivedig,
           { "5 digits", "ansi_map.originationtriggers.fivedig",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_fivedig_bool_val),0x20,
-            "5 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_sixdig,
           { "6 digits", "ansi_map.originationtriggers.sixdig",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_sixdig_bool_val),0x40,
-            "6 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_sevendig,
           { "7 digits", "ansi_map.originationtriggers.sevendig",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_sevendig_bool_val),0x80,
-            "7 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_eightdig,
           { "8 digits", "ansi_map.originationtriggers.eight",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_eightdig_bool_val),0x01,
-            "8 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_ninedig,
           { "9 digits", "ansi_map.originationtriggers.nine",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_ninedig_bool_val),0x02,
-            "9 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_tendig,
           { "10 digits", "ansi_map.originationtriggers.ten",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_tendig_bool_val),0x04,
-            "10 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_elevendig,
           { "11 digits", "ansi_map.originationtriggers.eleven",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_elevendig_bool_val),0x08,
-            "11 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_twelvedig,
           { "12 digits", "ansi_map.originationtriggers.twelve",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_twelvedig_bool_val),0x10,
-            "12 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_thirteendig,
           { "13 digits", "ansi_map.originationtriggers.thirteen",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_thirteendig_bool_val),0x20,
-            "13 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_fourteendig,
           { "14 digits", "ansi_map.originationtriggers.fourteen",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_fourteendig_bool_val),0x40,
-            "14 digits", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_originationtriggers_fifteendig,
           { "15 digits", "ansi_map.originationtriggers.fifteen",
             FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_fifteendig_bool_val),0x80,
-            "15 digits", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_triggercapability_init,
           { "Introducing Star/Pound (INIT)", "ansi_map.triggercapability.init",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x01,
-            "Introducing Star/Pound (INIT)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_kdigit,
           { "K-digit (K-digit)", "ansi_map.triggercapability.kdigit",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x02,
-            "K-digit (K-digit)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_all,
           { "All_Calls (All)", "ansi_map.triggercapability.all",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x04,
-            "All_Calls (All)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_rvtc,
           { "Revertive_Call (RvtC)", "ansi_map.triggercapability.rvtc",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x08,
-            "Revertive_Call (RvtC)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_oaa,
           { "Origination_Attempt_Authorized (OAA)", "ansi_map.triggercapability.oaa",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x10,
-            "Origination_Attempt_Authorized (OAA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_oans,
           { "O_Answer (OANS)", "ansi_map.triggercapability.oans",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x20,
-            "O_Answer (OANS)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_odisc,
           { "O_Disconnect (ODISC)", "ansi_map.triggercapability.odisc",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x40,
-            "O_Disconnect (ODISC)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_ona,
           { "O_No_Answer (ONA)", "ansi_map.triggercapability.ona",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x80,
-            "O_No_Answer (ONA)", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_triggercapability_ct ,
           { "Call Types (CT)", "ansi_map.triggercapability.ona",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x01,
-            "Call Types (CT)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_unrec,
           { "Unrecognized_Number (Unrec)", "ansi_map.triggercapability.unrec",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x02,
-            "Unrecognized_Number (Unrec)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_pa,
           { "Prior_Agreement (PA)", "ansi_map.triggercapability.pa",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x04,
-            "Prior_Agreement (PA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_at,
           { "Advanced_Termination (AT)", "ansi_map.triggercapability.at",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x08,
-            "Advanced_Termination (AT)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_cgraa,
           { "Calling_Routing_Address_Available (CgRAA)", "ansi_map.triggercapability.cgraa",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x10,
-            "Calling_Routing_Address_Available (CgRAA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_it,
           { "Initial_Termination (IT)", "ansi_map.triggercapability.it",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x20,
-            "Initial_Termination (IT)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_cdraa,
           { "Called_Routing_Address_Available (CdRAA)", "ansi_map.triggercapability.cdraa",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x40,
-            "Called_Routing_Address_Available (CdRAA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_obsy,
           { "O_Called_Party_Busy (OBSY)", "ansi_map.triggercapability.ona",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x80,
-            "O_Called_Party_Busy (OBSY)", HFILL }},
+            NULL, HFILL }},
 
         { &hf_ansi_map_triggercapability_tra ,
           { "Terminating_Resource_Available (TRA)", "ansi_map.triggercapability.tra",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x01,
-            "Terminating_Resource_Available (TRA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_tbusy,
           { "T_Busy (TBusy)", "ansi_map.triggercapability.tbusy",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x02,
-            "T_Busy (TBusy)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_tna,
           { "T_No_Answer (TNA)", "ansi_map.triggercapability.tna",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x04,
-            "T_No_Answer (TNA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_tans,
           { "T_Answer (TANS)", "ansi_map.triggercapability.tans",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x08,
-            "T_Answer (TANS)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_triggercapability_tdisc,
-          { "T_Disconnect (TDISC) ", "ansi_map.triggercapability.tdisc",
+          { "T_Disconnect (TDISC)", "ansi_map.triggercapability.tdisc",
             FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x10,
-            "T_Disconnect (TDISC) ", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_winoperationscapability_conn,
           { "ConnectResource (CONN)", "ansi_map.winoperationscapability.conn",
             FT_BOOLEAN, 8, TFS(&ansi_map_winoperationscapability_conn_bool_val),0x01,
-            "ConnectResource (CONN)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_winoperationscapability_ccdir,
           { "CallControlDirective(CCDIR)", "ansi_map.winoperationscapability.ccdir",
             FT_BOOLEAN, 8, TFS(&ansi_map_winoperationscapability_ccdir_bool_val),0x02,
-            "CallControlDirective(CCDIR)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_winoperationscapability_pos,
           { "PositionRequest (POS)", "ansi_map.winoperationscapability.pos",
             FT_BOOLEAN, 8, TFS(&ansi_map_winoperationscapability_pos_bool_val),0x04,
-            "PositionRequest (POS)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_pacaindicator_pa,
           { "Permanent Activation (PA)", "ansi_map.pacaindicator_pa",
             FT_BOOLEAN, 8, TFS(&ansi_map_pacaindicator_pa_bool_val),0x01,
-            "Permanent Activation (PA)", HFILL }},
+            NULL, HFILL }},
         { &hf_ansi_map_PACA_Level,
           { "PACA Level", "ansi_map.PACA_Level",
             FT_UINT8, BASE_DEC, VALS(ansi_map_PACA_Level_vals), 0x1e,
-            "PACA Level", HFILL }},
-                
+            NULL, HFILL }},
+
 #include "packet-ansi_map-hfarr.c"
     };
 
@@ -5257,13 +5349,19 @@ void proto_register_ansi_map(void) {
 #include "packet-ansi_map-ettarr.c"
     };
 
+       static enum_val_t ansi_map_response_matching_type_values[] = {
+               {"Only Transaction ID will be used in Invoke/response matching",                                        "Transaction ID only", 0},
+               {"Transaction ID and Source will be used in Invoke/response matching",                          "Transaction ID and Source", 1}, 
+               {"Transaction ID Source and Destination will be used in Invoke/response matching",      "Transaction ID Source and Destination", 2},
+               {NULL, NULL, -1}
+       };
 
     /* Register protocol */
     proto_ansi_map = proto_register_protocol(PNAME, PSNAME, PFNAME);
     /* Register fields and subtrees */
     proto_register_field_array(proto_ansi_map, hf, array_length(hf));
     proto_register_subtree_array(ett, array_length(ett));
+
     register_dissector("ansi_map", dissect_ansi_map, proto_ansi_map);
 
     is637_tele_id_dissector_table =
@@ -5284,12 +5382,17 @@ void proto_register_ansi_map(void) {
     range_convert_str(&global_ssn_range, "5-14", MAX_SSN);
 
     ansi_map_module = prefs_register_protocol(proto_ansi_map, proto_reg_handoff_ansi_map);
-    
+
 
     prefs_register_range_preference(ansi_map_module, "map.ssn", "ANSI MAP SSNs",
                                     "ANSI MAP SSNs to decode as ANSI MAP",
                                     &global_ssn_range, MAX_SSN);
 
+       prefs_register_enum_preference(ansi_map_module, "transaction.matchtype",
+                                      "Type of matching invoke/response",
+                                      "Type of matching invoke/response, risk of missmatch if loose matching choosen",
+                                      &ansi_map_response_matching_type, ansi_map_response_matching_type_values, FALSE);
+
     register_init_routine(&ansi_map_init_protocol);
 }