diff options
Diffstat (limited to 'epan/dissectors/packet-gsm_a_common.c')
-rw-r--r-- | epan/dissectors/packet-gsm_a_common.c | 725 |
1 files changed, 331 insertions, 394 deletions
diff --git a/epan/dissectors/packet-gsm_a_common.c b/epan/dissectors/packet-gsm_a_common.c index 18da413836..490dc0eed1 100644 --- a/epan/dissectors/packet-gsm_a_common.c +++ b/epan/dissectors/packet-gsm_a_common.c @@ -544,230 +544,231 @@ const value_string gsm_a_rr_rxqual_vals[] = { }; /* Initialize the protocol and registered fields */ -static int proto_a_common = -1; -static int proto_3gpp = -1; - -int gsm_a_tap = -1; - -int hf_gsm_a_common_elem_id = -1; -static int hf_gsm_a_common_elem_id_f0 = -1; -static int hf_gsm_a_l_ext = -1; -int hf_gsm_a_tmsi = -1; -static int hf_gsm_a_imei = -1; -static int hf_gsm_a_imeisv = -1; - -static int hf_gsm_a_MSC_rev = -1; -static int hf_gsm_a_ES_IND = -1; -static int hf_gsm_a_A5_1_algorithm_sup = -1; -static int hf_gsm_a_RF_power_capability = -1; -static int hf_gsm_a_ps_sup_cap = -1; -static int hf_gsm_a_SS_screening_indicator = -1; -static int hf_gsm_a_SM_capability = -1; -static int hf_gsm_a_VBS_notification_rec = -1; -static int hf_gsm_a_VGCS_notification_rec = -1; -static int hf_gsm_a_FC_frequency_cap = -1; -static int hf_gsm_a_CM3 = -1; -static int hf_gsm_a_LCS_VA_cap = -1; -static int hf_gsm_a_UCS2_treatment = -1; -static int hf_gsm_a_SoLSA = -1; -static int hf_gsm_a_CMSP = -1; -static int hf_gsm_a_A5_7_algorithm_sup = -1; -static int hf_gsm_a_A5_6_algorithm_sup = -1; -static int hf_gsm_a_A5_5_algorithm_sup = -1; -static int hf_gsm_a_A5_4_algorithm_sup = -1; -static int hf_gsm_a_A5_3_algorithm_sup = -1; -static int hf_gsm_a_A5_2_algorithm_sup = -1; - -static int hf_gsm_a_odd_even_ind = -1; -static int hf_gsm_a_id_dig_1 = -1; -static int hf_gsm_a_unused = -1; -static int hf_gsm_a_mobile_identity_type = -1; -static int hf_gsm_a_tmgi_mcc_mnc_ind = -1; -static int hf_gsm_a_mbs_ses_id_ind = -1; -static int hf_gsm_a_mbs_service_id = -1; -static int hf_gsm_a_mbs_session_id = -1; -static int hf_gsm_a_length = -1; -static int hf_gsm_a_element_value = -1; -int hf_gsm_a_extension = -1; -int hf_gsm_a_L3_protocol_discriminator = -1; -int hf_gsm_a_call_prio = -1; -int hf_gsm_a_skip_ind = -1; -int hf_gsm_a_spare_bits = -1; -int hf_gsm_a_lac = -1; - -static int hf_gsm_a_spare_nibble = -1; -static int hf_gsm_a_type_of_ciph_alg = -1; -static int hf_gsm_a_att = -1; -static int hf_gsm_a_nmo_1 = -1; -static int hf_gsm_a_nmo = -1; -static int hf_gsm_a_old_xid = -1; -static int hf_gsm_a_iov_ui = -1; -static int hf_gsm_a_ext_periodic_timers = -1; -static int hf_gsm_a_b7spare = -1; -int hf_gsm_a_b8spare = -1; -static int hf_gsm_a_multi_bnd_sup_fields = -1; -static int hf_gsm_a_pgsm_supported = -1; -static int hf_gsm_a_egsm_supported = -1; -static int hf_gsm_a_gsm1800_supported = -1; -static int hf_gsm_a_ass_radio_cap1 = -1; -static int hf_gsm_a_ass_radio_cap2 = -1; -static int hf_gsm_a_rsupport = -1; -static int hf_gsm_a_r_capabilities = -1; -static int hf_gsm_a_multislot_capabilities = -1; -static int hf_gsm_a_multislot_class = -1; -static int hf_gsm_a_ucs2_treatment = -1; -static int hf_gsm_a_extended_measurement_cap = -1; -static int hf_gsm_a_ms_measurement_capability = -1; -static int hf_gsm_a_sms_value =-1; -static int hf_gsm_a_sm_value =-1; -static int hf_gsm_a_key_seq = -1; -static int hf_gsm_a_ms_pos_method_cap_present = -1; -static int hf_gsm_a_ms_pos_method = -1; -static int hf_gsm_a_ms_assisted_e_otd = -1; -static int hf_gsm_a_ms_based_e_otd = -1; -static int hf_gsm_a_ms_assisted_gps = -1; -static int hf_gsm_a_ms_based_gps = -1; -static int hf_gsm_a_ms_conventional_gps = -1; -static int hf_gsm_a_ecsd_multi_slot_capability = -1; -static int hf_gsm_a_ecsd_multi_slot_class = -1; -static int hf_gsm_a_8_psk_struct_present = -1; -static int hf_gsm_a_8_psk_struct = -1; -static int hf_gsm_a_modulation_capability = -1; -static int hf_gsm_a_8_psk_rf_power_capability_1_present = -1; -static int hf_gsm_a_8_psk_rf_power_capability_1 = -1; -static int hf_gsm_a_8_psk_rf_power_capability_2_present = -1; -static int hf_gsm_a_8_psk_rf_power_capability_2 = -1; -static int hf_gsm_a_gsm_400_band_info_present = -1; -static int hf_gsm_a_gsm_400_bands_supported = -1; -static int hf_gsm_a_gsm_400_assoc_radio_cap = -1; -static int hf_gsm_a_gsm_850_assoc_radio_cap_present = -1; -static int hf_gsm_a_gsm_850_assoc_radio_cap = -1; -static int hf_gsm_a_gsm_1900_assoc_radio_cap_present = -1; -static int hf_gsm_a_gsm_1900_assoc_radio_cap = -1; -static int hf_gsm_a_cm3_A5_bits = -1; -static int hf_gsm_a_umts_fdd_rat_cap = -1; -static int hf_gsm_a_umts_384_mcps_tdd_rat_cap = -1; -static int hf_gsm_a_cdma_2000_rat_cap = -1; -static int hf_gsm_a_dtm_e_gprs_multi_slot_info_present = -1; -static int hf_gsm_a_dtm_gprs_multi_slot_class = -1; -static int hf_gsm_a_single_slot_dtm = -1; -static int hf_gsm_a_dtm_egprs_multi_slot_class_present = -1; -static int hf_gsm_a_dtm_egprs_multi_slot_class = -1; -static int hf_gsm_a_single_band_support = -1; -static int hf_gsm_a_gsm_band = -1; -static int hf_gsm_a_gsm_750_assoc_radio_cap_present = -1; -static int hf_gsm_a_gsm_750_assoc_radio_cap = -1; -static int hf_gsm_a_umts_128_mcps_tdd_rat_cap = -1; -static int hf_gsm_a_geran_feature_package_1 = -1; -static int hf_gsm_a_ext_dtm_e_gprs_multi_slot_info_present = -1; -static int hf_gsm_a_ext_dtm_gprs_multi_slot_class = -1; -static int hf_gsm_a_ext_dtm_egprs_multi_slot_class = -1; -static int hf_gsm_a_high_multislot_cap_present = -1; -static int hf_gsm_a_high_multislot_cap = -1; -static int hf_gsm_a_geran_iu_mode_support = -1; -static int hf_gsm_a_geran_iu_mode_cap = -1; -static int hf_gsm_a_geran_iu_mode_cap_length = -1; -static int hf_gsm_a_flo_iu_cap = -1; -static int hf_gsm_a_geran_feature_package_2 = -1; -static int hf_gsm_a_gmsk_multislot_power_prof = -1; -static int hf_gsm_a_8_psk_multislot_power_prof = -1; -static int hf_gsm_a_t_gsm_400_band_info_present = -1; -static int hf_gsm_a_t_gsm_400_bands_supported = -1; -static int hf_gsm_a_t_gsm_400_assoc_radio_cap = -1; -static int hf_gsm_a_t_gsm_900_assoc_radio_cap_present = -1; -static int hf_gsm_a_t_gsm_900_assoc_radio_cap = -1; -static int hf_gsm_a_downlink_adv_receiver_perf = -1; -static int hf_gsm_a_dtm_enhancements_cap = -1; -static int hf_gsm_a_dtm_e_gprs_high_multi_slot_info_present = -1; -static int hf_gsm_a_dtm_gprs_high_multi_slot_class = -1; -static int hf_gsm_a_offset_required = -1; -static int hf_gsm_a_dtm_egprs_high_multi_slot_class_present = -1; -static int hf_gsm_a_dtm_egprs_high_multi_slot_class = -1; -static int hf_gsm_a_repeated_acch_cap = -1; -static int hf_gsm_a_gsm_710_assoc_radio_cap_present = -1; -static int hf_gsm_a_gsm_710_assoc_radio_cap = -1; -static int hf_gsm_a_t_gsm_810_assoc_radio_cap_present = -1; -static int hf_gsm_a_t_gsm_810_assoc_radio_cap = -1; -static int hf_gsm_a_ciphering_mode_setting_cap = -1; -static int hf_gsm_a_additional_positioning_caps = -1; -static int hf_gsm_a_e_utra_fdd_support = -1; -static int hf_gsm_a_e_utra_tdd_support = -1; -static int hf_gsm_a_e_utra_meas_and_report_support = -1; -static int hf_gsm_a_prio_based_resel_support = -1; -static int hf_gsm_a_utra_csg_cells_reporting = -1; -static int hf_gsm_a_vamos_level = -1; -static int hf_gsm_a_tighter_cap = -1; -static int hf_gsm_a_selective_ciph_down_sacch = -1; -static int hf_gsm_a_cs_to_ps_srvcc_geran_to_utra = -1; -static int hf_gsm_a_cs_to_ps_srvcc_geran_to_eutra = -1; -static int hf_gsm_a_geran_network_sharing_support = -1; -static int hf_gsm_a_eutra_wb_rsrq_support = -1; -static int hf_gsm_a_er_band_support = -1; -static int hf_gsm_a_utra_mfbi_support = -1; -static int hf_gsm_a_eutra_mfbi_support = -1; -static int hf_gsm_a_ext_tsc_set_cap_support = -1; -static int hf_gsm_a_ext_earfcn_value_range = -1; - -static int hf_gsm_a_geo_loc_type_of_shape = -1; -static int hf_gsm_a_geo_loc_sign_of_lat = -1; -static int hf_gsm_a_geo_loc_deg_of_lat =-1; -static int hf_gsm_a_geo_loc_deg_of_long =-1; -static int hf_gsm_a_geo_loc_osm_uri =-1; -static int hf_gsm_a_geo_loc_uncertainty_code = -1; -static int hf_gsm_a_geo_loc_uncertainty_semi_major = -1; -static int hf_gsm_a_geo_loc_uncertainty_semi_minor = -1; -static int hf_gsm_a_geo_loc_orientation_of_major_axis = -1; -static int hf_gsm_a_geo_loc_uncertainty_altitude = -1; -static int hf_gsm_a_geo_loc_confidence = -1; -static int hf_gsm_a_geo_loc_horizontal_confidence = -1; -static int hf_gsm_a_geo_loc_vertical_confidence = -1; -static int hf_gsm_a_geo_loc_high_acc_uncertainty_alt = -1; -static int hf_gsm_a_geo_loc_no_of_points = -1; -static int hf_gsm_a_geo_loc_high_acc_deg_of_lat = -1; -static int hf_gsm_a_geo_loc_high_acc_deg_of_long = -1; -static int hf_gsm_a_geo_loc_high_acc_uncertainty_semi_major = -1; -static int hf_gsm_a_geo_loc_high_acc_uncertainty_semi_minor = -1; -static int hf_gsm_a_geo_loc_high_acc_alt = -1; -static int hf_gsm_a_velocity_type = -1; -static int hf_gsm_a_bearing = -1; -static int hf_gsm_a_horizontal_speed = -1; -static int hf_gsm_a_uncertainty_speed = -1; -static int hf_gsm_a_h_uncertainty_speed = -1; -static int hf_gsm_a_v_uncertainty_speed = -1; -static int hf_gsm_a_vertical_speed = -1; -static int hf_gsm_a_d = -1; -static int hf_gsm_a_geo_loc_D = -1; -static int hf_gsm_a_geo_loc_altitude = -1; -static int hf_gsm_a_geo_loc_inner_radius = -1; -static int hf_gsm_a_geo_loc_uncertainty_radius = -1; -static int hf_gsm_a_geo_loc_offset_angle = -1; -static int hf_gsm_a_geo_loc_included_angle = -1; +static int proto_a_common; +static int proto_3gpp; + +int gsm_a_tap; + +int hf_gsm_a_common_elem_id; +static int hf_gsm_a_common_elem_id_f0; +static int hf_gsm_a_l_ext; +int hf_gsm_a_tmsi; +static int hf_gsm_a_imei; +static int hf_gsm_a_imeisv; + +static int hf_gsm_a_MSC_rev; +static int hf_gsm_a_ES_IND; +static int hf_gsm_a_A5_1_algorithm_sup; +static int hf_gsm_a_RF_power_capability; +static int hf_gsm_a_ps_sup_cap; +static int hf_gsm_a_SS_screening_indicator; +static int hf_gsm_a_SM_capability; +static int hf_gsm_a_VBS_notification_rec; +static int hf_gsm_a_VGCS_notification_rec; +static int hf_gsm_a_FC_frequency_cap; +static int hf_gsm_a_CM3; +static int hf_gsm_a_LCS_VA_cap; +static int hf_gsm_a_UCS2_treatment; +static int hf_gsm_a_SoLSA; +static int hf_gsm_a_CMSP; +static int hf_gsm_a_A5_7_algorithm_sup; +static int hf_gsm_a_A5_6_algorithm_sup; +static int hf_gsm_a_A5_5_algorithm_sup; +static int hf_gsm_a_A5_4_algorithm_sup; +static int hf_gsm_a_A5_3_algorithm_sup; +static int hf_gsm_a_A5_2_algorithm_sup; + +static int hf_gsm_a_odd_even_ind; +static int hf_gsm_a_id_dig_1; +static int hf_gsm_a_unused; +static int hf_gsm_a_mobile_identity_type; +static int hf_gsm_a_tmgi_mcc_mnc_ind; +static int hf_gsm_a_mbs_ses_id_ind; +static int hf_gsm_a_mbs_service_id; +static int hf_gsm_a_mbs_session_id; +static int hf_gsm_a_length; +static int hf_gsm_a_element_value; +int hf_gsm_a_extension; +int hf_gsm_a_L3_protocol_discriminator; +int hf_gsm_a_call_prio; +int hf_gsm_a_skip_ind; +int hf_gsm_a_spare_bits; +int hf_gsm_a_lac; + +static int hf_gsm_a_spare_nibble; +static int hf_gsm_a_type_of_ciph_alg; +static int hf_gsm_a_att; +static int hf_gsm_a_nmo_1; +static int hf_gsm_a_nmo; +static int hf_gsm_a_old_xid; +static int hf_gsm_a_iov_ui; +static int hf_gsm_a_ext_periodic_timers; +static int hf_gsm_a_b7spare; +int hf_gsm_a_b8spare; +static int hf_gsm_a_multi_bnd_sup_fields; +static int hf_gsm_a_pgsm_supported; +static int hf_gsm_a_egsm_supported; +static int hf_gsm_a_gsm1800_supported; +static int hf_gsm_a_ass_radio_cap1; +static int hf_gsm_a_ass_radio_cap2; +static int hf_gsm_a_rsupport; +static int hf_gsm_a_r_capabilities; +static int hf_gsm_a_multislot_capabilities; +static int hf_gsm_a_multislot_class; +static int hf_gsm_a_ucs2_treatment; +static int hf_gsm_a_extended_measurement_cap; +static int hf_gsm_a_ms_measurement_capability; +static int hf_gsm_a_sms_value; +static int hf_gsm_a_sm_value; +static int hf_gsm_a_key_seq; +static int hf_gsm_a_ms_pos_method_cap_present; +static int hf_gsm_a_ms_pos_method; +static int hf_gsm_a_ms_assisted_e_otd; +static int hf_gsm_a_ms_based_e_otd; +static int hf_gsm_a_ms_assisted_gps; +static int hf_gsm_a_ms_based_gps; +static int hf_gsm_a_ms_conventional_gps; +static int hf_gsm_a_ecsd_multi_slot_capability; +static int hf_gsm_a_ecsd_multi_slot_class; +static int hf_gsm_a_8_psk_struct_present; +static int hf_gsm_a_8_psk_struct; +static int hf_gsm_a_modulation_capability; +static int hf_gsm_a_8_psk_rf_power_capability_1_present; +static int hf_gsm_a_8_psk_rf_power_capability_1; +static int hf_gsm_a_8_psk_rf_power_capability_2_present; +static int hf_gsm_a_8_psk_rf_power_capability_2; +static int hf_gsm_a_gsm_400_band_info_present; +static int hf_gsm_a_gsm_400_bands_supported; +static int hf_gsm_a_gsm_400_assoc_radio_cap; +static int hf_gsm_a_gsm_850_assoc_radio_cap_present; +static int hf_gsm_a_gsm_850_assoc_radio_cap; +static int hf_gsm_a_gsm_1900_assoc_radio_cap_present; +static int hf_gsm_a_gsm_1900_assoc_radio_cap; +static int hf_gsm_a_cm3_A5_bits; +static int hf_gsm_a_umts_fdd_rat_cap; +static int hf_gsm_a_umts_384_mcps_tdd_rat_cap; +static int hf_gsm_a_cdma_2000_rat_cap; +static int hf_gsm_a_dtm_e_gprs_multi_slot_info_present; +static int hf_gsm_a_dtm_gprs_multi_slot_class; +static int hf_gsm_a_single_slot_dtm; +static int hf_gsm_a_dtm_egprs_multi_slot_class_present; +static int hf_gsm_a_dtm_egprs_multi_slot_class; +static int hf_gsm_a_single_band_support; +static int hf_gsm_a_gsm_band; +static int hf_gsm_a_gsm_750_assoc_radio_cap_present; +static int hf_gsm_a_gsm_750_assoc_radio_cap; +static int hf_gsm_a_umts_128_mcps_tdd_rat_cap; +static int hf_gsm_a_geran_feature_package_1; +static int hf_gsm_a_ext_dtm_e_gprs_multi_slot_info_present; +static int hf_gsm_a_ext_dtm_gprs_multi_slot_class; +static int hf_gsm_a_ext_dtm_egprs_multi_slot_class; +static int hf_gsm_a_high_multislot_cap_present; +static int hf_gsm_a_high_multislot_cap; +static int hf_gsm_a_geran_iu_mode_support; +static int hf_gsm_a_geran_iu_mode_cap; +static int hf_gsm_a_geran_iu_mode_cap_length; +static int hf_gsm_a_flo_iu_cap; +static int hf_gsm_a_geran_feature_package_2; +static int hf_gsm_a_gmsk_multislot_power_prof; +static int hf_gsm_a_8_psk_multislot_power_prof; +static int hf_gsm_a_t_gsm_400_band_info_present; +static int hf_gsm_a_t_gsm_400_bands_supported; +static int hf_gsm_a_t_gsm_400_assoc_radio_cap; +static int hf_gsm_a_t_gsm_900_assoc_radio_cap_present; +static int hf_gsm_a_t_gsm_900_assoc_radio_cap; +static int hf_gsm_a_downlink_adv_receiver_perf; +static int hf_gsm_a_dtm_enhancements_cap; +static int hf_gsm_a_dtm_e_gprs_high_multi_slot_info_present; +static int hf_gsm_a_dtm_gprs_high_multi_slot_class; +static int hf_gsm_a_offset_required; +static int hf_gsm_a_dtm_egprs_high_multi_slot_class_present; +static int hf_gsm_a_dtm_egprs_high_multi_slot_class; +static int hf_gsm_a_repeated_acch_cap; +static int hf_gsm_a_gsm_710_assoc_radio_cap_present; +static int hf_gsm_a_gsm_710_assoc_radio_cap; +static int hf_gsm_a_t_gsm_810_assoc_radio_cap_present; +static int hf_gsm_a_t_gsm_810_assoc_radio_cap; +static int hf_gsm_a_ciphering_mode_setting_cap; +static int hf_gsm_a_additional_positioning_caps; +static int hf_gsm_a_e_utra_fdd_support; +static int hf_gsm_a_e_utra_tdd_support; +static int hf_gsm_a_e_utra_meas_and_report_support; +static int hf_gsm_a_prio_based_resel_support; +static int hf_gsm_a_utra_csg_cells_reporting; +static int hf_gsm_a_vamos_level; +static int hf_gsm_a_tighter_cap; +static int hf_gsm_a_selective_ciph_down_sacch; +static int hf_gsm_a_cs_to_ps_srvcc_geran_to_utra; +static int hf_gsm_a_cs_to_ps_srvcc_geran_to_eutra; +static int hf_gsm_a_geran_network_sharing_support; +static int hf_gsm_a_eutra_wb_rsrq_support; +static int hf_gsm_a_er_band_support; +static int hf_gsm_a_utra_mfbi_support; +static int hf_gsm_a_eutra_mfbi_support; +static int hf_gsm_a_ext_tsc_set_cap_support; +static int hf_gsm_a_ext_earfcn_value_range; + +static int hf_gsm_a_geo_loc_type_of_shape; +static int hf_gsm_a_geo_loc_sign_of_lat; +static int hf_gsm_a_geo_loc_deg_of_lat; +static int hf_gsm_a_geo_loc_deg_of_long; +static int hf_gsm_a_geo_loc_osm_uri; +static int hf_gsm_a_geo_loc_uncertainty_code; +static int hf_gsm_a_geo_loc_uncertainty_semi_major; +static int hf_gsm_a_geo_loc_uncertainty_semi_minor; +static int hf_gsm_a_geo_loc_orientation_of_major_axis; +static int hf_gsm_a_geo_loc_uncertainty_altitude; +static int hf_gsm_a_geo_loc_confidence; +static int hf_gsm_a_geo_loc_uncertainty_range; +static int hf_gsm_a_geo_loc_horizontal_confidence; +static int hf_gsm_a_geo_loc_horizontal_uncertainty_range; +static int hf_gsm_a_geo_loc_vertical_confidence; +static int hf_gsm_a_geo_loc_vertical_uncertainty_range; +static int hf_gsm_a_geo_loc_high_acc_uncertainty_alt; +static int hf_gsm_a_geo_loc_no_of_points; +static int hf_gsm_a_geo_loc_high_acc_deg_of_lat; +static int hf_gsm_a_geo_loc_high_acc_deg_of_long; +static int hf_gsm_a_geo_loc_high_acc_uncertainty_semi_major; +static int hf_gsm_a_geo_loc_high_acc_uncertainty_semi_minor; +static int hf_gsm_a_geo_loc_high_acc_alt; +static int hf_gsm_a_velocity_type; +static int hf_gsm_a_bearing; +static int hf_gsm_a_horizontal_speed; +static int hf_gsm_a_uncertainty_speed; +static int hf_gsm_a_h_uncertainty_speed; +static int hf_gsm_a_v_uncertainty_speed; +static int hf_gsm_a_vertical_speed; +static int hf_gsm_a_d; +static int hf_gsm_a_geo_loc_D; +static int hf_gsm_a_geo_loc_altitude; +static int hf_gsm_a_geo_loc_inner_radius; +static int hf_gsm_a_geo_loc_uncertainty_radius; +static int hf_gsm_a_geo_loc_offset_angle; +static int hf_gsm_a_geo_loc_included_angle; /* Generated from convert_proto_tree_add_text.pl */ -static int hf_gsm_a_filler = -1; -static int hf_gsm_a_identity_digit1 = -1; -static int hf_gsm_a_group_call_reference = -1; -static int hf_gsm_a_service_flag = -1; -static int hf_gsm_a_af_acknowledgement = -1; -static int hf_gsm_a_call_priority = -1; -static int hf_gsm_a_ciphering_info = -1; -static int hf_gsm_a_sapi = -1; -static int hf_gsm_a_mobile_country_code = -1; -static int hf_gsm_a_mobile_network_code = -1; +static int hf_gsm_a_filler; +static int hf_gsm_a_identity_digit1; +static int hf_gsm_a_group_call_reference; +static int hf_gsm_a_service_flag; +static int hf_gsm_a_af_acknowledgement; +static int hf_gsm_a_call_priority; +static int hf_gsm_a_ciphering_info; +static int hf_gsm_a_sapi; /* Inter protocol hf */ -int hf_3gpp_tmsi = -1; +int hf_3gpp_tmsi; -static int ett_gsm_a_plmn = -1; -static int ett_gsm_a_poly_pnt = -1; +static int ett_gsm_a_plmn; +static int ett_gsm_a_poly_pnt; -static expert_field ei_gsm_a_extraneous_data = EI_INIT; -static expert_field ei_gsm_a_unknown_element = EI_INIT; -static expert_field ei_gsm_a_unknown_pdu_type = EI_INIT; -static expert_field ei_gsm_a_no_element_dissector = EI_INIT; -static expert_field ei_gsm_a_format_not_supported = EI_INIT; -static expert_field ei_gsm_a_mobile_identity_type = EI_INIT; -static expert_field ei_gsm_a_ie_length_too_short = EI_INIT; +static expert_field ei_gsm_a_extraneous_data; +static expert_field ei_gsm_a_unknown_element; +static expert_field ei_gsm_a_unknown_pdu_type; +static expert_field ei_gsm_a_no_element_dissector; +static expert_field ei_gsm_a_format_not_supported; +static expert_field ei_gsm_a_mobile_identity_type; +static expert_field ei_gsm_a_ie_length_too_short; sccp_assoc_info_t* sccp_assoc = NULL; @@ -784,6 +785,8 @@ gint ett_gsm_common_elem[NUM_GSM_COMMON_ELEM]; #define ELLIPSOID_ARC 10 #define HIGH_ACC_ELLIPSOID_PNT_WITH_UNCERT_ELLIPSE 11 #define HIGH_ACC_ELLIPSOID_PNT_WITH_ALT_AND_UNCERT_ELLIPSOID 12 +#define HIGH_ACC_ELLIPSOID_PNT_WITH_SCALABLE_UNCERT_ELLIPSE 13 +#define HIGH_ACC_ELLIPSOID_PNT_WITH_ALT_AND_SCALABLE_UNCERT_ELLIPSOID 14 /* 4 3 2 1 0 0 0 0 Ellipsoid Point @@ -795,20 +798,24 @@ gint ett_gsm_common_elem[NUM_GSM_COMMON_ELEM]; 1 0 1 0 Ellipsoid Arc 1 0 1 1 High Accuracy Ellipsoid point with uncertainty ellipse 1 1 0 0 High Accuracy Ellipsoid point with altitude and uncertainty ellipsoid +1 1 0 1 High Accuracy Ellipsoid point with scalable uncertainty ellipse +1 1 1 0 High Accuracy Ellipsoid point with altitude and scalable uncertainty ellipsoid other values reserved for future use */ /* TS 23 032 Table 2a: Coding of Type of Shape */ static const value_string type_of_shape_vals[] = { - { ELLIPSOID_POINT, "Ellipsoid Point"}, - { ELLIPSOID_POINT_WITH_UNCERT_CIRC, "Ellipsoid point with uncertainty Circle"}, - { ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE, "Ellipsoid point with uncertainty Ellipse"}, - { POLYGON, "Polygon"}, - { ELLIPSOID_POINT_WITH_ALT, "Ellipsoid point with altitude"}, - { ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID, "Ellipsoid point with altitude and uncertainty Ellipsoid"}, - { ELLIPSOID_ARC, "Ellipsoid Arc"}, - { HIGH_ACC_ELLIPSOID_PNT_WITH_UNCERT_ELLIPSE, "High Accuracy Ellipsoid point with uncertainty ellipse"}, - { HIGH_ACC_ELLIPSOID_PNT_WITH_ALT_AND_UNCERT_ELLIPSOID, "High Accuracy Ellipsoid point with altitude and uncertainty ellipsoid"}, + { ELLIPSOID_POINT, "Ellipsoid Point"}, + { ELLIPSOID_POINT_WITH_UNCERT_CIRC, "Ellipsoid point with uncertainty Circle"}, + { ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE, "Ellipsoid point with uncertainty Ellipse"}, + { POLYGON, "Polygon"}, + { ELLIPSOID_POINT_WITH_ALT, "Ellipsoid point with altitude"}, + { ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID, "Ellipsoid point with altitude and uncertainty Ellipsoid"}, + { ELLIPSOID_ARC, "Ellipsoid Arc"}, + { HIGH_ACC_ELLIPSOID_PNT_WITH_UNCERT_ELLIPSE, "High Accuracy Ellipsoid point with uncertainty ellipse"}, + { HIGH_ACC_ELLIPSOID_PNT_WITH_ALT_AND_UNCERT_ELLIPSOID, "High Accuracy Ellipsoid point with altitude and uncertainty ellipsoid"}, + { HIGH_ACC_ELLIPSOID_PNT_WITH_SCALABLE_UNCERT_ELLIPSE, "High Accuracy Ellipsoid point with scalable uncertainty ellipse"}, + { HIGH_ACC_ELLIPSOID_PNT_WITH_ALT_AND_SCALABLE_UNCERT_ELLIPSOID, "High Accuracy Ellipsoid point with altitude and scalable uncertainty ellipsoid"}, { 0, NULL } }; @@ -825,6 +832,12 @@ static const value_string dir_of_alt_vals[] = { { 0, NULL } }; +static const value_string uncertainty_range[] = { + { 0, "High Accuracy default uncertainty range used"}, + { 1, "High Accuracy Extended Uncertainty Range used"}, + { 0, NULL } +}; + typedef guint16 (**elem_func_hander)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len); int @@ -1000,7 +1013,7 @@ dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr proto_item *ti; proto_tree_add_item_ret_uint(tree, hf_gsm_a_geo_loc_no_of_points, tvb, 0, 1, ENC_BIG_ENDIAN, &no_of_points); - /* offset increased with 1 after reading of shape abowe*/ + /* offset increased with 1 after reading of shape above */ while (no_of_points > 0) { point_no++; sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 6, @@ -1034,6 +1047,7 @@ dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr } break; case HIGH_ACC_ELLIPSOID_PNT_WITH_UNCERT_ELLIPSE: + case HIGH_ACC_ELLIPSOID_PNT_WITH_SCALABLE_UNCERT_ELLIPSE: loc_offset = offset; lat_item = proto_tree_add_item_ret_int(tree, hf_gsm_a_geo_loc_high_acc_deg_of_lat, tvb, offset, 4, ENC_BIG_ENDIAN, &svalue32); deg_lat_str = wmem_strdup_printf(pinfo->pool, "%s%.5f", @@ -1061,7 +1075,12 @@ dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr offset++; /* Confidence */ proto_tree_add_item(tree, hf_gsm_a_geo_loc_confidence, tvb, offset, 1, ENC_BIG_ENDIAN); + if (type_of_shape == HIGH_ACC_ELLIPSOID_PNT_WITH_SCALABLE_UNCERT_ELLIPSE) { + /* Uncertainty Range */ + proto_tree_add_item(tree, hf_gsm_a_geo_loc_uncertainty_range, tvb, offset, 1, ENC_BIG_ENDIAN); + } offset++; + osm_uri = wmem_strdup_printf(pinfo->pool, "https://www.openstreetmap.org/?mlat=%s&mlon=%s&zoom=12", deg_lat_str, deg_lon_str); loc_uri_item = proto_tree_add_string(tree, hf_gsm_a_geo_loc_osm_uri, tvb, loc_offset, 6, osm_uri); proto_item_set_url(loc_uri_item); @@ -1069,6 +1088,7 @@ dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr break; case HIGH_ACC_ELLIPSOID_PNT_WITH_ALT_AND_UNCERT_ELLIPSOID: + case HIGH_ACC_ELLIPSOID_PNT_WITH_ALT_AND_SCALABLE_UNCERT_ELLIPSOID: lat_item = proto_tree_add_item_ret_int(tree, hf_gsm_a_geo_loc_high_acc_deg_of_lat, tvb, offset, 4, ENC_BIG_ENDIAN, &svalue32); deg_lat_str = wmem_strdup_printf(pinfo->pool, "%s%.5f", (svalue32 & 0x80000000) ? "-" : "", @@ -1105,9 +1125,13 @@ dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr /* Horizontal confidence */ proto_tree_add_item(tree, hf_gsm_a_geo_loc_horizontal_confidence, tvb, offset, 1, ENC_BIG_ENDIAN); + if (type_of_shape == HIGH_ACC_ELLIPSOID_PNT_WITH_ALT_AND_SCALABLE_UNCERT_ELLIPSOID) { + /* Horizontal Uncertainty Range */ + proto_tree_add_item(tree, hf_gsm_a_geo_loc_horizontal_uncertainty_range, tvb, offset, 1, ENC_BIG_ENDIAN); + } offset++; - /* High accuracy uncertenty altitude */ + /* High accuracy uncertainty altitude */ value = tvb_get_guint8(tvb, offset) & 0x7f; alt_item = proto_tree_add_item(tree, hf_gsm_a_geo_loc_high_acc_uncertainty_alt, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(alt_item, " (%.1f m)", 45 * (pow(1.025, (double)value) - 1)); @@ -1115,6 +1139,10 @@ dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr /* Vertical confidence*/ proto_tree_add_item(tree, hf_gsm_a_geo_loc_vertical_confidence, tvb, offset, 1, ENC_BIG_ENDIAN); + if (type_of_shape == HIGH_ACC_ELLIPSOID_PNT_WITH_ALT_AND_SCALABLE_UNCERT_ELLIPSOID) { + /* Vertical Uncertainty Range */ + proto_tree_add_item(tree, hf_gsm_a_geo_loc_vertical_uncertainty_range, tvb, offset, 1, ENC_BIG_ENDIAN); + } offset++; break; @@ -2070,13 +2098,6 @@ guint16 elem_v_short(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gint p } -static dgt_set_t Dgt_tbcd = { - { - /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ - '0','1','2','3','4','5','6','7','8','9','?','B','C','*','#','?' - } -}; - static dgt_set_t Dgt1_9_bcd = { { /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ @@ -2086,88 +2107,6 @@ static dgt_set_t Dgt1_9_bcd = { /* FUNCTIONS */ -/* - * Decode the MCC/MNC from 3 octets in 'octs' - */ -static void -mcc_mnc_aux(guint8 *octs, gchar *mcc, gchar *mnc) -{ - if ((octs[0] & 0x0f) <= 9) - { - mcc[0] = Dgt_tbcd.out[octs[0] & 0x0f]; - } - else - { - mcc[0] = (octs[0] & 0x0f) + 55; - } - - if (((octs[0] & 0xf0) >> 4) <= 9) - { - mcc[1] = Dgt_tbcd.out[(octs[0] & 0xf0) >> 4]; - } - else - { - mcc[1] = ((octs[0] & 0xf0) >> 4) + 55; - } - - if ((octs[1] & 0x0f) <= 9) - { - mcc[2] = Dgt_tbcd.out[octs[1] & 0x0f]; - } - else - { - mcc[2] = (octs[1] & 0x0f) + 55; - } - - mcc[3] = '\0'; - - if (((octs[1] & 0xf0) >> 4) <= 9) - { - mnc[2] = Dgt_tbcd.out[(octs[1] & 0xf0) >> 4]; - } - else - { - mnc[2] = ((octs[1] & 0xf0) >> 4) + 55; - } - - if ((octs[2] & 0x0f) <= 9) - { - mnc[0] = Dgt_tbcd.out[octs[2] & 0x0f]; - } - else - { - mnc[0] = (octs[2] & 0x0f) + 55; - } - - if (((octs[2] & 0xf0) >> 4) <= 9) - { - mnc[1] = Dgt_tbcd.out[(octs[2] & 0xf0) >> 4]; - } - else - { - mnc[1] = ((octs[2] & 0xf0) >> 4) + 55; - } - - if (mnc[1] == 'F') - { - /* - * only a 1 digit MNC (very old) - */ - mnc[1] = '\0'; - } - else if (mnc[2] == 'F') - { - /* - * only a 2 digit MNC - */ - mnc[2] = '\0'; - } - else - { - mnc[3] = '\0'; - } -} - /* 3GPP TS 24.008 * [3] 10.5.1.1 Cell Identity */ @@ -2241,13 +2180,11 @@ de_ciph_key_seq_num( tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu guint16 de_lai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { - guint8 octs[3]; guint16 value; guint32 curr_offset; proto_tree *subtree; proto_item *item; - gchar mcc[4]; - gchar mnc[4]; + gchar *mcc_mnc_str; curr_offset = offset; @@ -2255,19 +2192,15 @@ de_lai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin tvb, curr_offset, 5, ett_gsm_common_elem[DE_LAI], &item, val_to_str_ext_const(DE_LAI, &gsm_common_elem_strings_ext, "")); - octs[0] = tvb_get_guint8(tvb, curr_offset); - octs[1] = tvb_get_guint8(tvb, curr_offset + 1); - octs[2] = tvb_get_guint8(tvb, curr_offset + 2); - - mcc_mnc_aux(octs, mcc, mnc); + mcc_mnc_str = dissect_e212_mcc_mnc_wmem_packet_str(tvb, pinfo, subtree, curr_offset, E212_LAI, TRUE); - curr_offset = dissect_e212_mcc_mnc(tvb, pinfo, subtree, curr_offset, E212_LAI, TRUE); + curr_offset += 3; value = tvb_get_ntohs(tvb, curr_offset); proto_tree_add_item(subtree, hf_gsm_a_lac, tvb, curr_offset, 2, ENC_BIG_ENDIAN); - proto_item_append_text(item, " - %s/%s/%u", mcc,mnc,value); + proto_item_append_text(item, " - %s, LAC %u", mcc_mnc_str, value); curr_offset += 2; @@ -2303,7 +2236,7 @@ de_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin proto_tree_add_item(tree, hf_gsm_a_mobile_identity_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN); if (add_string) - g_snprintf(add_string, string_len, " - No Identity Code"); + snprintf(add_string, string_len, " - No Identity Code"); curr_offset++; @@ -2347,7 +2280,7 @@ de_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin } if (add_string) - g_snprintf(add_string, string_len, " - %s (%s)", + snprintf(add_string, string_len, " - %s (%s)", ((oct & 0x07) == 3) ? "IMEISV" : "IMSI", digit_str); @@ -2379,7 +2312,7 @@ de_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin digit_str); if (add_string) - g_snprintf(add_string, string_len, " - IMEI (%s)", digit_str); + snprintf(add_string, string_len, " - IMEI (%s)", digit_str); curr_offset += len - (curr_offset - offset); break; @@ -2393,7 +2326,7 @@ de_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin proto_tree_add_item_ret_uint(tree, hf_3gpp_tmsi, tvb, curr_offset, 4, ENC_BIG_ENDIAN, &value); if (add_string) - g_snprintf(add_string, string_len, " - TMSI/P-TMSI (0x%04x)", value); + snprintf(add_string, string_len, " - TMSI/P-TMSI (0x%04x)", value); curr_offset += 4; break; @@ -2435,7 +2368,7 @@ de_mid(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guin expert_add_info_format(pinfo, ti, &ei_gsm_a_mobile_identity_type, "Unknown format %u", (oct & 0x07)); if (add_string) - g_snprintf(add_string, string_len, " - Format Unknown"); + snprintf(add_string, string_len, " - Format Unknown"); curr_offset += len; break; @@ -3546,10 +3479,8 @@ de_ps_domain_spec_sys_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint16 de_plmn_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string, int string_len) { - guint8 octs[3]; + gchar *mcc_mnc_str; guint32 curr_offset; - gchar mcc[4]; - gchar mnc[4]; guint8 num_plmn; proto_tree* subtree; @@ -3558,15 +3489,9 @@ de_plmn_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset num_plmn = 0; while ((len - (curr_offset - offset)) >= 3) { - octs[0] = tvb_get_guint8(tvb, curr_offset); - octs[1] = tvb_get_guint8(tvb, curr_offset + 1); - octs[2] = tvb_get_guint8(tvb, curr_offset + 2); - - mcc_mnc_aux(octs, mcc, mnc); - subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 3, ett_gsm_a_plmn, NULL, "PLMN[%u]", num_plmn + 1); - proto_tree_add_string(subtree, hf_gsm_a_mobile_country_code, tvb, curr_offset, 3, mcc); - proto_tree_add_string(subtree, hf_gsm_a_mobile_network_code, tvb, curr_offset, 3, mnc); + mcc_mnc_str = dissect_e212_mcc_mnc_wmem_packet_str(tvb, pinfo, subtree, curr_offset, E212_NONE, TRUE); + proto_item_append_text(subtree, ": %s", mcc_mnc_str); curr_offset += 3; @@ -3574,7 +3499,7 @@ de_plmn_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset } if (add_string) - g_snprintf(add_string, string_len, " - %u PLMN%s", + snprintf(add_string, string_len, " - %u PLMN%s", num_plmn, plurality(num_plmn, "", "s")); EXTRANEOUS_DATA_CHECK(len, curr_offset - offset, pinfo, &ei_gsm_a_extraneous_data); @@ -3712,7 +3637,7 @@ static void gsm_a_stat_init(stat_tap_table_ui* new_stat, const char *table_title if (msg_str) { col_str = g_strdup(msg_str); } else { - col_str = g_strdup_printf("Unknown message %d", i); + col_str = ws_strdup_printf("Unknown message %d", i); } items[IEI_COLUMN].value.uint_value = i; @@ -3802,61 +3727,61 @@ gsm_a_stat_packet(void *tapdata, const void *gatr_ptr, guint8 pdu_type, int prot } static tap_packet_status -gsm_a_bssmap_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr) +gsm_a_bssmap_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr, tap_flags_t flags _U_) { return gsm_a_stat_packet(tapdata, gatr_ptr, BSSAP_PDU_TYPE_BSSMAP, 0); } static tap_packet_status -gsm_a_dtap_mm_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr) +gsm_a_dtap_mm_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr, tap_flags_t flags _U_) { return gsm_a_stat_packet(tapdata, gatr_ptr, BSSAP_PDU_TYPE_DTAP, PD_MM); } static tap_packet_status -gsm_a_dtap_rr_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr) +gsm_a_dtap_rr_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr, tap_flags_t flags _U_) { return gsm_a_stat_packet(tapdata, gatr_ptr, BSSAP_PDU_TYPE_DTAP, PD_RR); } static tap_packet_status -gsm_a_dtap_cc_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr) +gsm_a_dtap_cc_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr, tap_flags_t flags _U_) { return gsm_a_stat_packet(tapdata, gatr_ptr, BSSAP_PDU_TYPE_DTAP, PD_CC); } static tap_packet_status -gsm_a_dtap_gmm_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr) +gsm_a_dtap_gmm_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr, tap_flags_t flags _U_) { return gsm_a_stat_packet(tapdata, gatr_ptr, BSSAP_PDU_TYPE_DTAP, PD_GMM); } static tap_packet_status -gsm_a_dtap_sms_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr) +gsm_a_dtap_sms_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr, tap_flags_t flags _U_) { return gsm_a_stat_packet(tapdata, gatr_ptr, BSSAP_PDU_TYPE_DTAP, PD_SMS); } static tap_packet_status -gsm_a_dtap_sm_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr) +gsm_a_dtap_sm_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr, tap_flags_t flags _U_) { return gsm_a_stat_packet(tapdata, gatr_ptr, BSSAP_PDU_TYPE_DTAP, PD_SM); } static tap_packet_status -gsm_a_dtap_ss_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr) +gsm_a_dtap_ss_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr, tap_flags_t flags _U_) { return gsm_a_stat_packet(tapdata, gatr_ptr, BSSAP_PDU_TYPE_DTAP, PD_SS); } static tap_packet_status -gsm_a_dtap_tp_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr) +gsm_a_dtap_tp_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr, tap_flags_t flags _U_) { return gsm_a_stat_packet(tapdata, gatr_ptr, BSSAP_PDU_TYPE_DTAP, PD_TP); } static tap_packet_status -gsm_a_sacch_rr_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr) +gsm_a_sacch_rr_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gatr_ptr, tap_flags_t flags _U_) { return gsm_a_stat_packet(tapdata, gatr_ptr, GSM_A_PDU_TYPE_SACCH, 0); } @@ -4093,7 +4018,7 @@ proto_register_gsm_a_common(void) NULL, HFILL } }, { &hf_gsm_a_type_of_ciph_alg, - { "Call priority", "gsm_a.call_prio", + { "Type of ciphering algorithm", "gsm_a.type_of_ciph_alg", FT_UINT8, BASE_DEC, VALS(gsm_a_gm_type_of_ciph_alg_vals), 0x07, NULL, HFILL } }, @@ -4154,17 +4079,17 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_pgsm_supported, { "P-GSM Supported", "gsm_a.classmark3.pgsmSupported", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL} }, { &hf_gsm_a_egsm_supported, { "E-GSM or R-GSM Supported", "gsm_a.classmark3.egsmSupported", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL} }, { &hf_gsm_a_gsm1800_supported, { "GSM 1800 Supported", "gsm_a.classmark3.gsm1800Supported", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL} }, { &hf_gsm_a_ass_radio_cap1, @@ -4184,7 +4109,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_rsupport, { "R Support", "gsm_a.classmark3.rsupport", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL} }, { &hf_gsm_a_r_capabilities, @@ -4194,7 +4119,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_multislot_capabilities, { "HSCSD Multi Slot Capability", "gsm_a.classmark3.multislot_capabilities", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL} }, { &hf_gsm_a_multislot_class, @@ -4209,12 +4134,12 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_extended_measurement_cap, { "Extended Measurement Capability", "gsm_a.classmark3.ext_meas_cap", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL} }, { &hf_gsm_a_ms_measurement_capability, { "MS measurement capability", "gsm_a.classmark3.ms_measurement_capability", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL} }, { &hf_gsm_a_sms_value, @@ -4229,7 +4154,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_ms_pos_method_cap_present, { "MS Positioning Method Capability present", "gsm_a.classmark3.ms_pos_method_cap_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_ms_pos_method, @@ -4264,7 +4189,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_ecsd_multi_slot_capability, { "ECSD Multi Slot Capability present", "gsm_a.classmark3.ecsd_multi_slot_capability", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_ecsd_multi_slot_class, @@ -4274,7 +4199,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_8_psk_struct_present, { "8-PSK Struct present", "gsm_a.classmark3.8_psk_struct_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_8_psk_struct, @@ -4289,7 +4214,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_8_psk_rf_power_capability_1_present, { "8-PSK RF Power Capability 1 present", "gsm_a.classmark3.8_psk_rf_power_capability_1_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_8_psk_rf_power_capability_1, @@ -4299,7 +4224,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_8_psk_rf_power_capability_2_present, { "8-PSK RF Power Capability 2 present", "gsm_a.classmark3.8_psk_rf_power_capability_2_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_8_psk_rf_power_capability_2, @@ -4309,7 +4234,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_gsm_400_band_info_present, { "GSM 400 Band Information present", "gsm_a.classmark3.gsm_400_band_info_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_gsm_400_bands_supported, @@ -4324,7 +4249,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_gsm_850_assoc_radio_cap_present, { "GSM 850 Associated Radio Capability present", "gsm_a.classmark3.gsm_850_assoc_radio_cap_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_gsm_850_assoc_radio_cap, @@ -4334,7 +4259,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_gsm_1900_assoc_radio_cap_present, { "GSM 1900 Associated Radio Capability present", "gsm_a.classmark3.gsm_1900_assoc_radio_cap_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_gsm_1900_assoc_radio_cap, @@ -4359,7 +4284,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_dtm_e_gprs_multi_slot_info_present, { "DTM E/GPRS Multi Slot Information present", "gsm_a.classmark3.dtm_e_gprs_multi_slot_info_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_dtm_gprs_multi_slot_class, @@ -4374,7 +4299,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_dtm_egprs_multi_slot_class_present, { "DTM EGPRS Multi Slot Class present", "gsm_a.classmark3.dtm_egprs_multi_slot_class_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_dtm_egprs_multi_slot_class, @@ -4384,7 +4309,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_single_band_support, { "Single Band Support", "gsm_a.classmark3.single_band_support", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_gsm_band, @@ -4394,7 +4319,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_gsm_750_assoc_radio_cap_present, { "GSM 750 Associated Radio Capability present", "gsm_a.classmark3.gsm_750_assoc_radio_cap_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_gsm_750_assoc_radio_cap, @@ -4414,7 +4339,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_ext_dtm_e_gprs_multi_slot_info_present, { "Extended DTM E/GPRS Multi Slot Information present", "gsm_a.classmark3.ext_dtm_e_gprs_info_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_ext_dtm_gprs_multi_slot_class, @@ -4429,7 +4354,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_high_multislot_cap_present, { "High Multislot Capability present", "gsm_a.classmark3.high_multislot_cap_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_high_multislot_cap, @@ -4439,7 +4364,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_geran_iu_mode_support, { "GERAN Iu Mode Support", "gsm_a.classmark3.geran_iu_mode_support", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_geran_iu_mode_cap, @@ -4474,7 +4399,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_t_gsm_400_band_info_present, { "T-GSM 400 Band Information present", "gsm_a.classmark3.gsm_400_band_info_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_t_gsm_400_bands_supported, @@ -4489,7 +4414,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_t_gsm_900_assoc_radio_cap_present, { "T-GSM 900 Associated Radio Capability present", "gsm_a.classmark3.t_gsm_900_assoc_radio_cap_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_t_gsm_900_assoc_radio_cap, @@ -4509,7 +4434,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_dtm_e_gprs_high_multi_slot_info_present, { "DTM E/GPRS High Multi Slot Information present", "gsm_a.classmark3.dtm_e_gprs_high_mutli_slot_info_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_dtm_gprs_high_multi_slot_class, @@ -4524,7 +4449,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_dtm_egprs_high_multi_slot_class_present, { "DTM EGPRS High Multi Slot Class present", "gsm_a.classmark3.dtm_egprs_high_multi_slot_class_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_dtm_egprs_high_multi_slot_class, @@ -4539,7 +4464,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_gsm_710_assoc_radio_cap_present, { "GSM 710 Associated Radio Capability present", "gsm_a.classmark3.gsm_710_assoc_radio_cap_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_gsm_710_assoc_radio_cap, @@ -4549,7 +4474,7 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_t_gsm_810_assoc_radio_cap_present, { "T-GSM 810 Associated Radio Capability present", "gsm_a.classmark3.t_gsm_810_assoc_radio_cap_present", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_t_gsm_810_assoc_radio_cap, @@ -4619,32 +4544,32 @@ proto_register_gsm_a_common(void) }, { &hf_gsm_a_geran_network_sharing_support, { "GERAN Network Sharing support", "gsm_a.classmark3.geran_network_sharing_support", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_eutra_wb_rsrq_support, { "E-UTRA Wideband RSRQ measurements support", "gsm_a.classmark3.eutra_wb_rsrq_support", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_er_band_support, { "ER Band support", "gsm_a.classmark3.er_band_support", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_utra_mfbi_support, { "UTRA Multiple Frequency Band Indicators support", "gsm_a.classmark3.utra_mfbi_support", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_eutra_mfbi_support, { "E-UTRA Multiple Frequency Band Indicators support", "gsm_a.classmark3.eutra_mfbi_support", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_ext_tsc_set_cap_support, { "Extended TSC Set Capability support", "gsm_a.classmark3.ext_tsc_set_cap_support", - FT_BOOLEAN, BASE_NONE, TFS(&tfs_true_false), 0x00, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL} }, { &hf_gsm_a_ext_earfcn_value_range, @@ -4707,16 +4632,31 @@ proto_register_gsm_a_common(void) FT_UINT8, BASE_DEC, NULL, 0x7f, NULL, HFILL } }, + { &hf_gsm_a_geo_loc_uncertainty_range, + { "Uncertainty Range", "gsm_a.gad.uncertainty_range", + FT_UINT8, BASE_DEC, VALS(uncertainty_range), 0x80, + NULL, HFILL } + }, { &hf_gsm_a_geo_loc_horizontal_confidence, { "Horizontal confidence(%)", "gsm_a.gad.horizontal_confidence", FT_UINT8, BASE_DEC, NULL, 0x7f, NULL, HFILL } }, + { &hf_gsm_a_geo_loc_horizontal_uncertainty_range, + { "Horizontal Uncertainty Range", "gsm_a.gad.horizontal_uncertainty_range", + FT_UINT8, BASE_DEC, VALS(uncertainty_range), 0x80, + NULL, HFILL } + }, { &hf_gsm_a_geo_loc_vertical_confidence, { "Vertical Confidence(%)", "gsm_a.gad.vertical_confidence", FT_UINT8, BASE_DEC, NULL, 0x7f, NULL, HFILL } }, + { &hf_gsm_a_geo_loc_vertical_uncertainty_range, + { "Vertical Uncertainty Range", "gsm_a.gad.vertical_uncertainty_range", + FT_UINT8, BASE_DEC, VALS(uncertainty_range), 0x80, + NULL, HFILL } + }, { &hf_gsm_a_geo_loc_high_acc_uncertainty_alt, { "High accuracy uncertainty altitude", "gsm_a.gad.high_acc_uncertainty_alt", FT_UINT8, BASE_DEC, NULL, 0x0, @@ -4846,8 +4786,6 @@ proto_register_gsm_a_common(void) { &hf_gsm_a_call_priority, { "Call Priority", "gsm_a.call_priority", FT_UINT32, BASE_DEC, VALS(gsm_a_call_priority_vals), 0x00000007, NULL, HFILL }}, { &hf_gsm_a_ciphering_info, { "Ciphering Information", "gsm_a.ciphering_info", FT_UINT8, BASE_HEX, NULL, 0xf0, NULL, HFILL }}, { &hf_gsm_a_sapi, { "SAPI (Service Access Point Identifier)", "gsm_a.sapi", FT_UINT8, BASE_DEC, VALS(gsm_a_sapi_vals), 0x30, NULL, HFILL }}, - { &hf_gsm_a_mobile_country_code, { "Mobile Country Code (MCC)", "gsm_a.mobile_country_code", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, - { &hf_gsm_a_mobile_network_code, { "Mobile Network Code (MNC)", "gsm_a.mobile_network_code", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, }; /* Setup protocol subtree array */ @@ -5037,7 +4975,6 @@ proto_register_gsm_a_common(void) ett[1] = &ett_gsm_a_poly_pnt; for (i=0; i < NUM_GSM_COMMON_ELEM; i++, last_offset++) { - ett_gsm_common_elem[i] = -1; ett[last_offset] = &ett_gsm_common_elem[i]; } |