From Gerasimos Dimitriadis:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Tue, 6 Oct 2009 19:04:29 +0000 (19:04 +0000)
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Tue, 6 Oct 2009 19:04:29 +0000 (19:04 +0000)
GSM MAP: an-APDU not decoded.
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4095

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@30375 f5534014-38df-0310-8fa8-9805f1628bb7

asn1/gsmmap/gsmmap.cnf
epan/dissectors/packet-gsm_map.c

index a830ef8bc31633d05424e81d9113d5eb359a5392..d39cd5608945a1311ab3dbe28e5a90f95f39a023 100644 (file)
@@ -177,6 +177,10 @@ MAP-DialoguePDU                            B "0.4.0.0.1.1.1.1" "map-DialogueAS"
         offset = tvb_length_remaining(tvb,offset);
   }    
 
+#.FN_PARS  AccessNetworkProtocolId
+
+  VAL_PTR = &AccessNetworkProtocolId
+
 #.FN_BODY AddressString VAL_PTR = &parameter_tvb
 
  tvbuff_t      *parameter_tvb;
index 04dba667f0a4e0fde78583742bb7ea19c51d4b8f..d6614c5b8a79be52024fdfd394b048311ae646a0 100644 (file)
@@ -2800,7 +2800,7 @@ dissect_gsm_map_SLR_ArgExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *t
 
 static int
 dissect_gsm_map_TBCD_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 194 "gsmmap.cnf"
+#line 198 "gsmmap.cnf"
  tvbuff_t      *parameter_tvb;
  char          *digit_str;
 
@@ -2823,7 +2823,7 @@ dissect_gsm_map_TBCD_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
 
 int
 dissect_gsm_map_AddressString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 181 "gsmmap.cnf"
+#line 185 "gsmmap.cnf"
 
  tvbuff_t      *parameter_tvb;
  proto_tree *subtree;
@@ -2893,7 +2893,7 @@ dissect_gsm_map_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
 
 static int
 dissect_gsm_map_SignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 275 "gsmmap.cnf"
+#line 279 "gsmmap.cnf"
  tvbuff_t      *parameter_tvb;
 
    offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -2917,7 +2917,7 @@ static const ber_sequence_t gsm_map_ExternalSignalInfo_sequence[] = {
 
 static int
 dissect_gsm_map_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 700 "gsmmap.cnf"
+#line 704 "gsmmap.cnf"
 /*
 -- Information about the internal structure is given in
 -- clause 7.6.9.
@@ -2971,12 +2971,12 @@ if (!actx->value_ptr)
                if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */
                        /* Strip off discrimination and length */
                        proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE);
-                       next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
+                       next_tvb = tvb_new_subset(actx->value_ptr, 2, -1, -1);
                        dissect_bssmap(next_tvb, actx->pinfo, subtree);
                }else if(octet==1){
                        proto_tree_add_item(subtree, hf_gsm_map_dlci, actx->value_ptr, 1,1,FALSE);
                        proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 2,1,FALSE);
-                       next_tvb = tvb_new_subset_remaining(actx->value_ptr, 3);
+                       next_tvb = tvb_new_subset(actx->value_ptr, 3, -1, -1);
                        call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); 
                }       
                break;
@@ -2985,7 +2985,7 @@ if (!actx->value_ptr)
                octet = tvb_get_guint8(actx->value_ptr,0);
                length = tvb_get_guint8(actx->value_ptr,1);
                if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
-                       next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
+                       next_tvb = tvb_new_subset(actx->value_ptr, 2, -1, -1);
                        dissect_bssmap(next_tvb, actx->pinfo, subtree);
                }
                break;
@@ -3047,7 +3047,7 @@ static const value_string gsm_map_AccessNetworkProtocolId_vals[] = {
 static int
 dissect_gsm_map_AccessNetworkProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
-                                  NULL);
+                                  &AccessNetworkProtocolId);
 
   return offset;
 }
@@ -3056,7 +3056,7 @@ dissect_gsm_map_AccessNetworkProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb
 
 static int
 dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 213 "gsmmap.cnf"
+#line 217 "gsmmap.cnf"
 
  tvbuff_t      *parameter_tvb;
  guint8                octet;
@@ -3084,13 +3084,13 @@ dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
                        /* Strip off discrimination and length */
                        length = tvb_get_guint8(parameter_tvb,0);
                        proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 1,1,FALSE);
-                       next_tvb = tvb_new_subset_remaining(parameter_tvb, 2);
+                       next_tvb = tvb_new_subset(parameter_tvb, 2, -1, -1);
                        dissect_bssmap(next_tvb, actx->pinfo, subtree);
                }else if(octet==1){
                        proto_tree_add_item(subtree, hf_gsm_map_dlci, parameter_tvb, 1,1,FALSE);
                        proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 2,1,FALSE);
                        length = tvb_get_guint8(parameter_tvb,0);
-                       next_tvb = tvb_new_subset_remaining(parameter_tvb, 3);
+                       next_tvb = tvb_new_subset(parameter_tvb, 3, -1, -1);
                        call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); 
                }       
                break;
@@ -3243,7 +3243,7 @@ dissect_gsm_map_HLR_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
 
 int
 dissect_gsm_map_GlobalCellId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 781 "gsmmap.cnf"
+#line 785 "gsmmap.cnf"
     tvbuff_t   *parameter_tvb; 
        proto_tree      *subtree;
 
@@ -3510,7 +3510,7 @@ dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag _U_
 
 int
 dissect_gsm_map_LAIFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 560 "gsmmap.cnf"
+#line 564 "gsmmap.cnf"
 
         tvbuff_t        *parameter_tvb; 
         proto_tree *subtree; 
@@ -3636,7 +3636,7 @@ dissect_gsm_map_EMLPP_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
 
 static int
 dissect_gsm_map_Ext_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 373 "gsmmap.cnf"
+#line 377 "gsmmap.cnf"
  /* Note Ext-SS-Status can have more than one byte */
 
  tvbuff_t      *parameter_tvb;
@@ -3759,7 +3759,7 @@ dissect_gsm_map_ss_RegisterSS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
 int
 dissect_gsm_map_ss_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 353 "gsmmap.cnf"
+#line 357 "gsmmap.cnf"
 
  tvbuff_t      *parameter_tvb;
  guint8                octet;
@@ -3793,7 +3793,7 @@ dissect_gsm_map_ss_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U
   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                        NULL);
 
-#line 467 "gsmmap.cnf"
+#line 471 "gsmmap.cnf"
 
        proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
        proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
@@ -4112,7 +4112,7 @@ dissect_gsm_map_ss_InterrogateSS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U
 
 int
 dissect_gsm_map_ss_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 396 "gsmmap.cnf"
+#line 400 "gsmmap.cnf"
  /*The structure of the USSD-DataCodingScheme is defined by
   * the Cell Broadcast Data Coding Scheme as described in
   * TS 3GPP TS 23.038
@@ -4138,7 +4138,7 @@ dissect_gsm_map_ss_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tv
 
 int
 dissect_gsm_map_ss_USSD_String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 411 "gsmmap.cnf"
+#line 415 "gsmmap.cnf"
 
   tvbuff_t     *parameter_tvb;
   int                  length;
@@ -4628,7 +4628,7 @@ static const ber_sequence_t gsm_map_er_SM_DeliveryFailureCause_sequence[] = {
 
 static int
 dissect_gsm_map_er_SM_DeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 282 "gsmmap.cnf"
+#line 286 "gsmmap.cnf"
        /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_er_SM_DeliveryFailureCause_sequence, hf_index, ett_gsm_map_er_SM_DeliveryFailureCause);
@@ -5520,7 +5520,7 @@ dissect_gsm_map_sm_SM_RP_DA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
 
 static int
 dissect_gsm_map_sm_T_msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 271 "gsmmap.cnf"
+#line 275 "gsmmap.cnf"
 actx->pinfo->p2p_dir = P2P_DIR_RECV;
    offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
 
@@ -5534,7 +5534,7 @@ actx->pinfo->p2p_dir = P2P_DIR_RECV;
 
 static int
 dissect_gsm_map_sm_T_serviceCentreAddressOA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 263 "gsmmap.cnf"
+#line 267 "gsmmap.cnf"
        actx->pinfo->p2p_dir = P2P_DIR_SENT;
   offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
 
@@ -5580,7 +5580,7 @@ static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Arg_sequence[] = {
 
 static int
 dissect_gsm_map_sm_MO_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 299 "gsmmap.cnf"
+#line 303 "gsmmap.cnf"
 
        /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -5605,7 +5605,7 @@ static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Res_sequence[] = {
 
 static int
 dissect_gsm_map_sm_MO_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 308 "gsmmap.cnf"
+#line 312 "gsmmap.cnf"
 
         /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -5633,7 +5633,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Arg_sequence[] = {
 
 static int
 dissect_gsm_map_sm_MT_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 317 "gsmmap.cnf"
+#line 321 "gsmmap.cnf"
 
        /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -5658,7 +5658,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Res_sequence[] = {
 
 static int
 dissect_gsm_map_sm_MT_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 326 "gsmmap.cnf"
+#line 330 "gsmmap.cnf"
 
         /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -5841,7 +5841,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Arg_sequence[] = {
 
 static int
 dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 335 "gsmmap.cnf"
+#line 339 "gsmmap.cnf"
 
         /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -5881,7 +5881,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Res_sequence[] = {
 
 static int
 dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 344 "gsmmap.cnf"
+#line 348 "gsmmap.cnf"
 
         /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6496,7 +6496,7 @@ dissect_gsm_map_ms_VLR_Capability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
 int
 dissect_gsm_map_ms_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 524 "gsmmap.cnf"
+#line 528 "gsmmap.cnf"
 
        tvbuff_t        *parameter_tvb;
        guint8          octet;
@@ -7352,7 +7352,7 @@ dissect_gsm_map_ms_UpdateGprsLocationRes(gboolean implicit_tag _U_, tvbuff_t *tv
 
 static int
 dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 596 "gsmmap.cnf"
+#line 600 "gsmmap.cnf"
     tvbuff_t        *parameter_tvb;
        asn1_ctx_t              asn1_ctx;
 
@@ -7375,7 +7375,7 @@ dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvb
 
 static int
 dissect_gsm_map_ms_EncryptionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 608 "gsmmap.cnf"
+#line 612 "gsmmap.cnf"
     tvbuff_t        *parameter_tvb;
        asn1_ctx_t              asn1_ctx;
 
@@ -7460,7 +7460,7 @@ dissect_gsm_map_ms_AllowedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *t
 
 static int
 dissect_gsm_map_ms_RadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 572 "gsmmap.cnf"
+#line 576 "gsmmap.cnf"
     tvbuff_t        *parameter_tvb; 
        proto_tree *subtree;
 
@@ -7531,7 +7531,7 @@ dissect_gsm_map_ms_BSSMAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *t
 
 static int
 dissect_gsm_map_ms_RANAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 584 "gsmmap.cnf"
+#line 588 "gsmmap.cnf"
     tvbuff_t        *parameter_tvb;
        asn1_ctx_t              asn1_ctx;
 
@@ -8311,7 +8311,7 @@ static int
 dissect_gsm_map_ms_T_forwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   offset = dissect_gsm_map_ms_Ext_ForwOptions(implicit_tag, tvb, offset, actx, tree, hf_index);
 
-#line 473 "gsmmap.cnf"
+#line 477 "gsmmap.cnf"
 
        proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
        proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
@@ -9497,7 +9497,7 @@ dissect_gsm_map_ms_VlrCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t
 
 static int
 dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 481 "gsmmap.cnf"
+#line 485 "gsmmap.cnf"
        guint8 pdp_type_org;
        tvbuff_t        *parameter_tvb;
 
@@ -9530,7 +9530,7 @@ dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
 
 int
 dissect_gsm_map_ms_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 503 "gsmmap.cnf"
+#line 507 "gsmmap.cnf"
 
 
        tvbuff_t        *parameter_tvb;
@@ -9552,7 +9552,7 @@ dissect_gsm_map_ms_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
 int
 dissect_gsm_map_ms_Ext_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 514 "gsmmap.cnf"
+#line 518 "gsmmap.cnf"
 
        tvbuff_t        *parameter_tvb;
 
@@ -11020,7 +11020,7 @@ dissect_gsm_map_ms_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
 
 int
 dissect_gsm_map_ms_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 548 "gsmmap.cnf"
+#line 552 "gsmmap.cnf"
 
        tvbuff_t        *parameter_tvb;
        proto_tree *subtree;
@@ -13335,7 +13335,7 @@ dissect_gsm_map_lcs_ProvideSubscriberLocation_Arg(gboolean implicit_tag _U_, tvb
 
 int
 dissect_gsm_map_lcs_Ext_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 793 "gsmmap.cnf"
+#line 797 "gsmmap.cnf"
     tvbuff_t   *parameter_tvb; 
        proto_tree      *subtree;
 
@@ -14681,7 +14681,7 @@ static const ber_sequence_t gsm_old_Bss_APDU_sequence[] = {
 
 static int
 dissect_gsm_old_Bss_APDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 621 "gsmmap.cnf"
+#line 625 "gsmmap.cnf"
  guint8                octet;
  guint8                length;
  tvbuff_t      *next_tvb;
@@ -14733,12 +14733,12 @@ if (!actx->value_ptr)
                if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */
                        /* Strip off discrimination and length */
                        proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE);
-                       next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
+                       next_tvb = tvb_new_subset(actx->value_ptr, 2, -1, -1);
                        dissect_bssmap(next_tvb, actx->pinfo, subtree);
                }else if(octet==1){
                        proto_tree_add_item(subtree, hf_gsm_map_dlci, actx->value_ptr, 1,1,FALSE);
                        proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 2,1,FALSE);
-                       next_tvb = tvb_new_subset_remaining(actx->value_ptr, 3);
+                       next_tvb = tvb_new_subset(actx->value_ptr, 3, -1, -1);
                        call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); 
                }       
                break;
@@ -14747,7 +14747,7 @@ if (!actx->value_ptr)
                octet = tvb_get_guint8(actx->value_ptr,0);
                length = tvb_get_guint8(actx->value_ptr,1);
                if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
-                       next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
+                       next_tvb = tvb_new_subset(actx->value_ptr, 2, -1, -1);
                        dissect_bssmap(next_tvb, actx->pinfo, subtree);
                }
                break;
@@ -15291,7 +15291,7 @@ dissect_gsm_old_SM_RP_DAold(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
 
 static int
 dissect_gsm_old_T_msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 267 "gsmmap.cnf"
+#line 271 "gsmmap.cnf"
 actx->pinfo->p2p_dir = P2P_DIR_RECV;
    offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
 
@@ -15305,7 +15305,7 @@ actx->pinfo->p2p_dir = P2P_DIR_RECV;
 
 static int
 dissect_gsm_old_T_serviceCentreAddressOA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 259 "gsmmap.cnf"
+#line 263 "gsmmap.cnf"
        actx->pinfo->p2p_dir = P2P_DIR_SENT;
   offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
 
@@ -15350,7 +15350,7 @@ static const ber_sequence_t gsm_old_ForwardSM_Arg_sequence[] = {
 
 static int
 dissect_gsm_old_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 290 "gsmmap.cnf"
+#line 294 "gsmmap.cnf"
 
        /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -23281,7 +23281,7 @@ void proto_register_gsm_map(void) {
         "gsm_map_lcs.LCS_QoS", HFILL }},
 
 /*--- End of included file: packet-gsm_map-hfarr.c ---*/
-#line 2445 "packet-gsmmap-template.c"
+#line 2442 "packet-gsmmap-template.c"
   };
 
   /* List of subtrees */
@@ -23870,7 +23870,7 @@ void proto_register_gsm_map(void) {
 
 
 /*--- End of included file: packet-gsm_map-ettarr.c ---*/
-#line 2473 "packet-gsmmap-template.c"
+#line 2470 "packet-gsmmap-template.c"
   };
 
   /* Register protocol */
@@ -23946,7 +23946,7 @@ void proto_register_gsm_map(void) {
 
 
 /*--- End of included file: packet-gsm_map-dis-tab.c ---*/
-#line 2491 "packet-gsmmap-template.c"
+#line 2488 "packet-gsmmap-template.c"
   oid_add_from_string("ericsson-gsm-Map-Ext","1.2.826.0.1249.58.1.0" );
   oid_add_from_string("accessTypeNotAllowed-id","1.3.12.2.1107.3.66.1.2");
   /*oid_add_from_string("map-ac networkLocUp(1) version3(3)","0.4.0.0.1.0.1.3" );