diff options
-rw-r--r-- | asn1/gsmmap/gsmmap.cnf | 21 | ||||
-rw-r--r-- | asn1/gsmmap/packet-gsm_map-template.c | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_a.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_a.h | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_map.c | 60 |
5 files changed, 74 insertions, 19 deletions
diff --git a/asn1/gsmmap/gsmmap.cnf b/asn1/gsmmap/gsmmap.cnf index b4ce1dbfce..7c8279c3bf 100644 --- a/asn1/gsmmap/gsmmap.cnf +++ b/asn1/gsmmap/gsmmap.cnf @@ -412,12 +412,18 @@ Component guint8 octet; guint8 length; tvbuff_t *next_tvb; + proto_item *item; + proto_tree *subtree; %(DEFAULT_BODY)s if (!parameter_tvb) return offset; + + item = get_ber_last_created_item(); + subtree = proto_item_add_subtree(item, ett_gsm_map_LongSignalInfo); + switch (AccessNetworkProtocolId){ /* ts3G-48006 */ case 1: @@ -431,6 +437,7 @@ Component break; /* ts3G-25413 */ case 2: + call_dissector(ranap_handle, parameter_tvb, pinfo, tree); break; default: break; @@ -658,6 +665,20 @@ Component #.FN_PARS OBJECT_IDENTIFIER FN_VARIANT = _str VAL_PTR = &obj_id +#.FN_BODY RadioResourceInformation VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + proto_item *item; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + item = get_ber_last_created_item(); + subtree = proto_item_add_subtree(item, ett_gsm_map_RadioResourceInformation); + be_chan_type(tvb, subtree, 0, tvb_length_remaining(tvb,0), NULL, 0); + #---------------------------------------------------------------------------------------- #.TYPE_ATTR SS-Code TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ssCode_vals) diff --git a/asn1/gsmmap/packet-gsm_map-template.c b/asn1/gsmmap/packet-gsm_map-template.c index d1b47a4865..393a792d94 100644 --- a/asn1/gsmmap/packet-gsm_map-template.c +++ b/asn1/gsmmap/packet-gsm_map-template.c @@ -150,11 +150,14 @@ static gint ett_gsm_map_RAIdentity = -1; static gint ett_gsm_map_LAIFixedLength = -1; static gint ett_gsm_map_isdn_address_string = -1; static gint ett_gsm_map_geo_desc = -1; +static gint ett_gsm_map_LongSignalInfo = -1; +static gint ett_gsm_map_RadioResourceInformation =-1; #include "packet-gsm_map-ett.c" static dissector_table_t sms_dissector_table; /* SMS TPDU */ static dissector_handle_t data_handle; +static dissector_handle_t ranap_handle; /* Preferenc settings default */ #define MAX_SSN 254 @@ -1819,6 +1822,7 @@ void proto_reg_handoff_gsm_map(void) { static int map_prefs_initialized = FALSE; data_handle = find_dissector("data"); + ranap_handle = find_dissector("ranap"); if (!map_prefs_initialized) { map_prefs_initialized = TRUE; @@ -2221,6 +2225,8 @@ void proto_register_gsm_map(void) { &ett_gsm_map_LAIFixedLength, &ett_gsm_map_isdn_address_string, &ett_gsm_map_geo_desc, + &ett_gsm_map_LongSignalInfo, + &ett_gsm_map_RadioResourceInformation, #include "packet-gsm_map-ettarr.c" }; diff --git a/epan/dissectors/packet-gsm_a.c b/epan/dissectors/packet-gsm_a.c index a2f4414764..0a1b7d8b9c 100644 --- a/epan/dissectors/packet-gsm_a.c +++ b/epan/dissectors/packet-gsm_a.c @@ -1919,7 +1919,7 @@ be_enc_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *a /* * [2] 3.2.2.11 */ -static guint8 +guint8 be_chan_type(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len) { guint8 oct; diff --git a/epan/dissectors/packet-gsm_a.h b/epan/dissectors/packet-gsm_a.h index 8a75d69f07..4ac910aec5 100644 --- a/epan/dissectors/packet-gsm_a.h +++ b/epan/dissectors/packet-gsm_a.h @@ -64,10 +64,10 @@ void dtap_mm_mm_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len) guint8 de_lai(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint8 de_mid(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); - -guint8 be_cell_id_list(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint8 de_cell_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); +guint8 be_cell_id_list(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); +guint8 be_chan_type(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint8 de_ms_cm_1(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_); guint8 de_ms_cm_2(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c index 2d9a379859..f577501e22 100644 --- a/epan/dissectors/packet-gsm_map.c +++ b/epan/dissectors/packet-gsm_map.c @@ -982,6 +982,8 @@ static gint ett_gsm_map_RAIdentity = -1; static gint ett_gsm_map_LAIFixedLength = -1; static gint ett_gsm_map_isdn_address_string = -1; static gint ett_gsm_map_geo_desc = -1; +static gint ett_gsm_map_LongSignalInfo = -1; +static gint ett_gsm_map_RadioResourceInformation =-1; /*--- Included file: packet-gsm_map-ett.c ---*/ @@ -1384,10 +1386,11 @@ static gint ett_gsm_map_ExtensionContainer = -1; static gint ett_gsm_map_AccessTypePriv = -1; /*--- End of included file: packet-gsm_map-ett.c ---*/ -#line 155 "packet-gsm_map-template.c" +#line 157 "packet-gsm_map-template.c" static dissector_table_t sms_dissector_table; /* SMS TPDU */ static dissector_handle_t data_handle; +static dissector_handle_t ranap_handle; /* Preferenc settings default */ #define MAX_SSN 254 @@ -2786,7 +2789,7 @@ static int dissect_diagnosticInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_gsm_map_T_extType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 513 "gsmmap.cnf" +#line 520 "gsmmap.cnf" proto_tree_add_text(tree, tvb, offset, -1, "Extension Data"); @@ -3308,7 +3311,7 @@ static int dissect_vlr_Capability_impl(packet_info *pinfo, proto_tree *tree, tvb int dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 597 "gsmmap.cnf" +#line 604 "gsmmap.cnf" tvbuff_t *parameter_tvb; guint8 octet; @@ -3704,7 +3707,7 @@ static int dissect_numberOfRequestedVectors(packet_info *pinfo, proto_tree *tree int dissect_gsm_map_LAIFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 645 "gsmmap.cnf" +#line 652 "gsmmap.cnf" tvbuff_t *parameter_tvb; proto_item *item; @@ -4147,6 +4150,8 @@ dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int off guint8 octet; guint8 length; tvbuff_t *next_tvb; + proto_item *item; + proto_tree *subtree; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, @@ -4155,6 +4160,10 @@ dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int off if (!parameter_tvb) return offset; + + item = get_ber_last_created_item(); + subtree = proto_item_add_subtree(item, ett_gsm_map_LongSignalInfo); + switch (AccessNetworkProtocolId){ /* ts3G-48006 */ case 1: @@ -4168,6 +4177,7 @@ dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int off break; /* ts3G-25413 */ case 2: + call_dissector(ranap_handle, parameter_tvb, pinfo, tree); break; default: break; @@ -4240,8 +4250,23 @@ static int dissect_encryptionInfo_impl(packet_info *pinfo, proto_tree *tree, tvb static int dissect_gsm_map_RadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 669 "gsmmap.cnf" + tvbuff_t *parameter_tvb; + proto_item *item; + proto_tree *subtree; + offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, - NULL); + ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + item = get_ber_last_created_item(); + subtree = proto_item_add_subtree(item, ett_gsm_map_RadioResourceInformation); + be_chan_type(tvb, subtree, 0, tvb_length_remaining(tvb,0), NULL, 0); + + return offset; } @@ -5799,7 +5824,7 @@ static int dissect_gsm_map_T_ext_forwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_gsm_map_Ext_ForwOptions(implicit_tag, tvb, offset, pinfo, tree, hf_index); -#line 532 "gsmmap.cnf" +#line 539 "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); @@ -7242,7 +7267,7 @@ static int dissect_pdp_ContextIdentifier_impl(packet_info *pinfo, proto_tree *tr static int dissect_gsm_map_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 543 "gsmmap.cnf" +#line 550 "gsmmap.cnf" guint8 pdp_type_org; tvbuff_t *parameter_tvb; @@ -7291,7 +7316,7 @@ static int dissect_pdp_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff int dissect_gsm_map_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 569 "gsmmap.cnf" +#line 576 "gsmmap.cnf" tvbuff_t *parameter_tvb; @@ -7337,7 +7362,7 @@ static int dissect_lcsAPN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *t int dissect_gsm_map_Ext_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 583 "gsmmap.cnf" +#line 590 "gsmmap.cnf" tvbuff_t *parameter_tvb; @@ -8567,7 +8592,7 @@ dissect_gsm_map_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); -#line 526 "gsmmap.cnf" +#line 533 "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); @@ -9449,7 +9474,7 @@ static int dissect_subscriberState(packet_info *pinfo, proto_tree *tree, tvbuff_ int dissect_gsm_map_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 627 "gsmmap.cnf" +#line 634 "gsmmap.cnf" tvbuff_t *parameter_tvb; proto_item *item; @@ -10793,7 +10818,7 @@ dissect_gsm_map_InterrogateSS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int int dissect_gsm_map_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 446 "gsmmap.cnf" +#line 453 "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 @@ -10823,7 +10848,7 @@ static int dissect_dataCodingScheme_impl(packet_info *pinfo, proto_tree *tree, t int dissect_gsm_map_USSD_String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 468 "gsmmap.cnf" +#line 475 "gsmmap.cnf" tvbuff_t *parameter_tvb; int length; @@ -14737,7 +14762,7 @@ static void dissect_Component_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree /*--- End of included file: packet-gsm_map-fn.c ---*/ -#line 563 "packet-gsm_map-template.c" +#line 566 "packet-gsm_map-template.c" const value_string gsm_map_opr_code_strings[] = { { 2, "updateLocation" }, @@ -15997,6 +16022,7 @@ void proto_reg_handoff_gsm_map(void) { static int map_prefs_initialized = FALSE; data_handle = find_dissector("data"); + ranap_handle = find_dissector("ranap"); if (!map_prefs_initialized) { map_prefs_initialized = TRUE; @@ -19657,7 +19683,7 @@ void proto_register_gsm_map(void) { "", HFILL }}, /*--- End of included file: packet-gsm_map-hfarr.c ---*/ -#line 2206 "packet-gsm_map-template.c" +#line 2210 "packet-gsm_map-template.c" }; /* List of subtrees */ @@ -19676,6 +19702,8 @@ void proto_register_gsm_map(void) { &ett_gsm_map_LAIFixedLength, &ett_gsm_map_isdn_address_string, &ett_gsm_map_geo_desc, + &ett_gsm_map_LongSignalInfo, + &ett_gsm_map_RadioResourceInformation, /*--- Included file: packet-gsm_map-ettarr.c ---*/ @@ -20078,7 +20106,7 @@ void proto_register_gsm_map(void) { &ett_gsm_map_AccessTypePriv, /*--- End of included file: packet-gsm_map-ettarr.c ---*/ -#line 2226 "packet-gsm_map-template.c" +#line 2232 "packet-gsm_map-template.c" }; /* Register protocol */ |