aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2011-04-27 22:18:00 +0000
committerAnders Broman <anders.broman@ericsson.com>2011-04-27 22:18:00 +0000
commit7dce5861cc948636c3cfd4718bd90b0724da9bf2 (patch)
treed5eb6b9b0a21dec56220cf68e3096204c553497b /epan/dissectors
parentb798f159bf5ed9642964000973ff08d0a67a352a (diff)
From Pascal Quantin:
Enhance the dissection of MM, GMM, SM, EPS EMM and EPS ESM protocols according to 3GPP 24.008 V9.6.0 and 24.301 V9.6.0. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5866 svn path=/trunk/; revision=36918
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-gsm_a_common.c506
-rw-r--r--epan/dissectors/packet-gsm_a_common.h59
-rw-r--r--epan/dissectors/packet-gsm_a_dtap.c35
-rw-r--r--epan/dissectors/packet-gsm_a_gm.c470
-rw-r--r--epan/dissectors/packet-nas_eps.c275
5 files changed, 970 insertions, 375 deletions
diff --git a/epan/dissectors/packet-gsm_a_common.c b/epan/dissectors/packet-gsm_a_common.c
index 9da0029fb5..e84e03d4e4 100644
--- a/epan/dissectors/packet-gsm_a_common.c
+++ b/epan/dissectors/packet-gsm_a_common.c
@@ -81,16 +81,14 @@ static const value_string gsm_a_msc_rev_vals[] = {
};
/* ES IND (octet 3, bit 5) "Controlled Early Classmark Sending" option implementation */
-static const value_string ES_IND_vals[] = {
- { 0, "Controlled Early Classmark Sending option is not implemented in the MS"},
- { 1, "Controlled Early Classmark Sending option is implemented in the MS"},
- { 0, NULL }
+static const true_false_string ES_IND_vals = {
+ "Controlled Early Classmark Sending option is implemented in the MS",
+ "Controlled Early Classmark Sending option is not implemented in the MS"
};
-/* A5/1 algorithm supported (octet 3, bit 4 */
-static const value_string A5_1_algorithm_sup_vals[] = {
- { 0, "encryption algorithm A5/1 available"},
- { 1, "encryption algorithm A5/1 not available"},
- { 0, NULL }
+/* A5/1 algorithm supported (octet 3, bit 4) */
+static const true_false_string A5_1_algorithm_sup_vals = {
+ "encryption algorithm A5/1 not available",
+ "encryption algorithm A5/1 available"
};
/* RF Power Capability (Octet 3) */
static const value_string RF_power_capability_vals[] = {
@@ -103,10 +101,9 @@ static const value_string RF_power_capability_vals[] = {
{ 0, NULL }
};
/* PS capability (pseudo-synchronization capability) (octet 4) */
-static const value_string ps_sup_cap_vals[] = {
- { 0, "PS capability not present"},
- { 1, "PS capability present"},
- { 0, NULL }
+static const true_false_string ps_sup_cap_vals = {
+ "PS capability present",
+ "PS capability not present"
};
/* SS Screening Indicator (octet 4)defined in 3GPP TS 24.080 */
static const value_string SS_screening_indicator_vals[] = {
@@ -117,96 +114,79 @@ static const value_string SS_screening_indicator_vals[] = {
{ 0, NULL }
};
/* SM capability (MT SMS pt to pt capability) (octet 4)*/
-static const value_string SM_capability_vals[] = {
- { 0, "Mobile station does not support mobile terminated point to point SMS"},
- { 1, "Mobile station supports mobile terminated point to point SMS"},
- { 0, NULL }
+static const true_false_string SM_capability_vals = {
+ "Mobile station supports mobile terminated point to point SMS",
+ "Mobile station does not support mobile terminated point to point SMS"
};
/* VBS notification reception (octet 4) */
-static const value_string VBS_notification_rec_vals[] = {
- { 0, "no VBS capability or no notifications wanted"},
- { 1, "VBS capability and notifications wanted"},
- { 0, NULL }
+static const true_false_string VBS_notification_rec_vals = {
+ "VBS capability and notifications wanted",
+ "no VBS capability or no notifications wanted"
};
/* VGCS notification reception (octet 4) */
-static const value_string VGCS_notification_rec_vals[] = {
- { 0, "no VGCS capability or no notifications wanted"},
- { 1, "VGCS capability and notifications wanted"},
- { 0, NULL }
+static const true_false_string VGCS_notification_rec_vals = {
+ "VGCS capability and notifications wanted",
+ "no VGCS capability or no notifications wanted"
};
/* FC Frequency Capability (octet 4 ) */
-static const value_string FC_frequency_cap_vals[] = {
- { 0, "The MS does not support the E-GSM or R-GSM band"},
- { 1, "The MS does support the E-GSM or R-GSM "},
- { 0, NULL }
+static const true_false_string FC_frequency_cap_vals = {
+ "The MS does support the E-GSM or R-GSM",
+ "The MS does not support the E-GSM or R-GSM band"
};
/* CM3 (octet 5, bit 8) */
-static const value_string CM3_vals[] = {
- { 0, "The MS does not support any options that are indicated in CM3"},
- { 1, "The MS supports options that are indicated in classmark 3 IE"},
- { 0, NULL }
+static const true_false_string CM3_vals = {
+ "The MS supports options that are indicated in classmark 3 IE",
+ "The MS does not support any options that are indicated in CM3"
};
/* LCS VA capability (LCS value added location request notification capability) (octet 5,bit 6) */
-static const value_string LCS_VA_cap_vals[] = {
- { 0, "LCS value added location request notification capability not supported"},
- { 1, "LCS value added location request notification capability supported"},
- { 0, NULL }
+static const true_false_string LCS_VA_cap_vals = {
+ "LCS value added location request notification capability supported",
+ "LCS value added location request notification capability not supported"
};
/* UCS2 treatment (octet 5, bit 5) */
-static const value_string UCS2_treatment_vals[] = {
- { 0, "the ME has a preference for the default alphabet"},
- { 1, "the ME has no preference between the use of the default alphabet and the use of UCS2"},
- { 0, NULL }
+static const true_false_string UCS2_treatment_vals = {
+ "the ME has no preference between the use of the default alphabet and the use of UCS2",
+ "the ME has a preference for the default alphabet"
};
/* SoLSA (octet 5, bit 4) */
-static const value_string SoLSA_vals[] = {
- { 0, "The ME does not support SoLSA"},
- { 1, "The ME supports SoLSA"},
- { 0, NULL }
+static const true_false_string SoLSA_vals = {
+ "The ME supports SoLSA",
+ "The ME does not support SoLSA"
};
/* CMSP: CM Service Prompt (octet 5, bit 3) */
-static const value_string CMSP_vals[] = {
- { 0, "Network initiated MO CM connection request not supported"},
- { 1, "Network initiated MO CM connection request supported for at least one CM protocol"},
- { 0, NULL }
+static const true_false_string CMSP_vals = {
+ "Network initiated MO CM connection request supported for at least one CM protocol",
+ "Network initiated MO CM connection request not supported"
};
-/* A5/4 algorithm supported */
-static const value_string A5_7_algorithm_sup_vals[] = {
- { 0, "encryption algorithm A5/7 not available"},
- { 1, "encryption algorithm A5/7 available"},
- { 0, NULL }
+/* A5/7 algorithm supported */
+static const true_false_string A5_7_algorithm_sup_vals = {
+ "encryption algorithm A5/7 available",
+ "encryption algorithm A5/7 not available"
};
-/* A5/4 algorithm supported */
-static const value_string A5_6_algorithm_sup_vals[] = {
- { 0, "encryption algorithm A5/6 not available"},
- { 1, "encryption algorithm A5/6 available"},
- { 0, NULL }
+/* A5/6 algorithm supported */
+static const true_false_string A5_6_algorithm_sup_vals = {
+ "encryption algorithm A5/6 available",
+ "encryption algorithm A5/6 not available"
};
/* A5/5 algorithm supported */
-static const value_string A5_5_algorithm_sup_vals[] = {
- { 0, "encryption algorithm A5/5 not available"},
- { 1, "encryption algorithm A5/5 available"},
- { 0, NULL }
+static const true_false_string A5_5_algorithm_sup_vals = {
+ "encryption algorithm A5/5 available",
+ "encryption algorithm A5/5 not available"
};
/* A5/4 algorithm supported */
-static const value_string A5_4_algorithm_sup_vals[] = {
- { 0, "encryption algorithm A5/4 not available"},
- { 1, "encryption algorithm A5/4 available"},
- { 0, NULL }
+static const true_false_string A5_4_algorithm_sup_vals = {
+ "encryption algorithm A5/4 available",
+ "encryption algorithm A5/4 not available"
};
-
/* A5/3 algorithm supported (octet 5, bit 2) */
-static const value_string A5_3_algorithm_sup_vals[] = {
- { 0, "encryption algorithm A5/3 not available"},
- { 1, "encryption algorithm A5/3 available"},
- { 0, NULL }
+static const true_false_string A5_3_algorithm_sup_vals = {
+ "encryption algorithm A5/3 available",
+ "encryption algorithm A5/3 not available"
};
-
/* A5/2 algorithm supported (octet 5, bit 1) */
-static const value_string A5_2_algorithm_sup_vals[] = {
- { 0, "encryption algorithm A5/2 not available"},
- { 1, "encryption algorithm A5/2 available"},
- { 0, NULL }
+static const true_false_string A5_2_algorithm_sup_vals = {
+ "encryption algorithm A5/2 available",
+ "encryption algorithm A5/2 not available"
};
static const value_string mobile_identity_type_vals[] = {
@@ -219,16 +199,14 @@ static const value_string mobile_identity_type_vals[] = {
{ 0, NULL }
};
-static const value_string oddevenind_vals[] = {
- { 0, "Even number of identity digits"},
- { 1, "Odd number of identity digits"},
- { 0, NULL }
+static const true_false_string oddevenind_vals = {
+ "Odd number of identity digits",
+ "Even number of identity digits"
};
-static const value_string true_false_vals[] = {
- { 0, "false" },
- { 1, "true" },
- { 0, NULL}
+static const true_false_string true_false_vals = {
+ "true",
+ "false"
};
const value_string gsm_a_sms_vals[] = {
@@ -251,40 +229,34 @@ const value_string gsm_a_sms_vals[] = {
{ 0, NULL}
};
-static const value_string ms_assisted_e_otd_vals[] = {
- { 0, "MS assisted E-OTD not supported" },
- { 1, "MS assisted E-OTD supported" },
- { 0, NULL}
+static const true_false_string ms_assisted_e_otd_vals = {
+ "MS assisted E-OTD supported",
+ "MS assisted E-OTD not supported"
};
-static const value_string ms_based_e_otd_vals[] = {
- { 0, "MS based E-OTD not supported" },
- { 1, "MS based E-OTD supported" },
- { 0, NULL}
+static const true_false_string ms_based_e_otd_vals = {
+ "MS based E-OTD supported",
+ "MS based E-OTD not supported"
};
-static const value_string ms_assisted_gps_vals[] = {
- { 0, "MS assisted GPS not supported" },
- { 1, "MS assisted GPS supported" },
- { 0, NULL}
+static const true_false_string ms_assisted_gps_vals = {
+ "MS assisted GPS supported",
+ "MS assisted GPS not supported"
};
-static const value_string ms_based_gps_vals[] = {
- { 0, "MS based GPS not supported" },
- { 1, "MS based GPS supported" },
- { 0, NULL}
+static const true_false_string ms_based_gps_vals = {
+ "MS based GPS supported",
+ "MS based GPS not supported"
};
-static const value_string ms_conventional_gps_vals[] = {
- { 0, "Conventional GPS not supported" },
- { 1, "Conventional GPS supported" },
- { 0, NULL}
+static const true_false_string ms_conventional_gps_vals = {
+ "Conventional GPS supported",
+ "Conventional GPS not supported"
};
-static const value_string modulation_capability_vals[] = {
- { 0, "8-PSK supported for downlink reception only" },
- { 1, "8-PSK supported for uplink transmission and downlink reception" },
- { 0, NULL}
+static const true_false_string modulation_capability_vals = {
+ "8-PSK supported for uplink transmission and downlink reception",
+ "8-PSK supported for downlink reception only"
};
static const value_string eight_psk_rf_power_capability_vals[] = {
@@ -302,22 +274,19 @@ static const value_string gsm_400_bands_supported_vals[] = {
{ 0, NULL}
};
-static const value_string umts_fdd_rat_cap_vals[] = {
- { 0, "UMTS FDD not supported" },
- { 1, "UMTS FDD supported" },
- { 0, NULL}
+static const true_false_string umts_fdd_rat_cap_vals = {
+ "UMTS FDD supported",
+ "UMTS FDD not supported"
};
-static const value_string umts_384_mcps_tdd_rat_cap_vals[] = {
- { 0, "UMTS 3.84 Mcps TDD not supported" },
- { 1, "UMTS 3.84 Mcps TDD supported" },
- { 0, NULL}
+static const true_false_string umts_384_mcps_tdd_rat_cap_vals = {
+ "UMTS 3.84 Mcps TDD supported",
+ "UMTS 3.84 Mcps TDD not supported"
};
-static const value_string cdma_2000_rat_cap_vals[] = {
- { 0, "CDMA 2000 not supported" },
- { 1, "CDMA 2000 supported" },
- { 0, NULL}
+static const true_false_string cdma_2000_rat_cap_vals = {
+ "CDMA 2000 supported",
+ "CDMA 2000 not supported"
};
static const value_string dtm_gprs_multi_slot_class_vals[] = {
@@ -328,10 +297,9 @@ static const value_string dtm_gprs_multi_slot_class_vals[] = {
{ 0, NULL}
};
-static const value_string single_slot_dtm_vals[] = {
- { 0, "Single Slot DTM not supported" },
- { 1, "Single Slot DTM supported" },
- { 0, NULL}
+static const true_false_string single_slot_dtm_vals = {
+ "Single Slot DTM supported",
+ "Single Slot DTM not supported"
};
static const value_string gsm_band_vals[] = {
@@ -348,28 +316,24 @@ static const value_string gsm_band_vals[] = {
{ 0, NULL}
};
-static const value_string umts_128_mcps_tdd_rat_cap_vals[] = {
- { 0, "UMTS 1.28 Mcps TDD not supported" },
- { 1, "UMTS 1.28 Mcps TDD supported" },
- { 0, NULL}
+static const true_false_string umts_128_mcps_tdd_rat_cap_vals = {
+ "UMTS 1.28 Mcps TDD supported",
+ "UMTS 1.28 Mcps TDD not supported"
};
-static const value_string geran_feature_package_1_vals[] = {
- { 0, "GERAN feature package 1 not supported" },
- { 1, "GERAN feature package 1 supported" },
- { 0, NULL}
+static const true_false_string geran_feature_package_1_vals = {
+ "GERAN feature package 1 supported",
+ "GERAN feature package 1 not supported"
};
-static const value_string flo_iu_cap_vals[] = {
- { 0, "FLO in GERAN Iu Mode not supported" },
- { 1, "FLO in GERAN Iu Mode supported" },
- { 0, NULL}
+static const true_false_string flo_iu_cap_vals = {
+ "FLO in GERAN Iu Mode supported",
+ "FLO in GERAN Iu Mode not supported"
};
-static const value_string geran_feature_package_2_vals[] = {
- { 0, "GERAN feature package 2 not supported" },
- { 1, "GERAN feature package 2 supported" },
- { 0, NULL}
+static const true_false_string geran_feature_package_2_vals = {
+ "GERAN feature package 2 supported",
+ "GERAN feature package 2 not supported"
};
static const value_string gmsk_multislot_power_prof_vals[] = {
@@ -402,16 +366,14 @@ static const value_string downlink_adv_receiver_perf_vals[] = {
{ 0, NULL}
};
-static const value_string dtm_enhancements_cap_vals[] = {
- { 0, "The mobile station does not support enhanced DTM CS establishment and release procedures" },
- { 1, "The mobile station supports enhanced DTM CS establishment and release procedures" },
- { 0, NULL}
+static const true_false_string dtm_enhancements_cap_vals = {
+ "The mobile station supports enhanced DTM CS establishment and release procedures",
+ "The mobile station does not support enhanced DTM CS establishment and release procedures"
};
-static const value_string offset_required_vals[] = {
- { 0, "The mobile station does not require the offset" },
- { 1, "The mobile station requires the offset" },
- { 0, NULL}
+static const true_false_string offset_required_vals = {
+ "The mobile station requires the offset",
+ "The mobile station does not require the offset"
};
static const value_string dtm_gprs_high_multi_slot_class_vals[] = {
@@ -426,39 +388,51 @@ static const value_string dtm_gprs_high_multi_slot_class_vals[] = {
{ 0, NULL}
};
-static const value_string repeated_acch_cap_vals[] = {
- { 0, "The mobile station does not support Repeated SACCH" },
- { 1, "The mobile station supports Repeated SACCH and Repeated Downlink FACCH" },
- { 0, NULL}
+static const true_false_string repeated_acch_cap_vals = {
+ "The mobile station supports Repeated SACCH and Repeated Downlink FACCH",
+ "The mobile station does not support Repeated SACCH"
};
-static const value_string ciphering_mode_setting_cap_vals[] = {
- { 0, "The mobile station does not support the Ciphering Mode Setting IE in the DTM ASSIGNMENT COMMAND message" },
- { 1, "The mobile station supports the Ciphering Mode Setting IE in the DTM ASSIGNMENT COMMAND message" },
- { 0, NULL}
+static const true_false_string ciphering_mode_setting_cap_vals = {
+ "The mobile station supports the Ciphering Mode Setting IE in the DTM ASSIGNMENT COMMAND message",
+ "The mobile station does not support the Ciphering Mode Setting IE in the DTM ASSIGNMENT COMMAND message"
};
-static const value_string additional_positioning_caps_vals[] = {
- { 0, "The mobile station does not support additional positioning capabilities which can be retrieved using RRLP" },
- { 1, "The mobile station supports additional positioning capabilities which can be retrieved using RRLP" },
- { 0, NULL}
+static const true_false_string additional_positioning_caps_vals = {
+ "The mobile station supports additional positioning capabilities which can be retrieved using RRLP",
+ "The mobile station does not support additional positioning capabilities which can be retrieved using RRLP"
};
-static const value_string e_utra_fdd_support_vals[] = {
- { 0, "E-UTRA FDD not supported" },
- { 1, "E-UTRA FDD supported" },
- { 0, NULL}
+static const true_false_string e_utra_fdd_support_vals = {
+ "E-UTRA FDD supported",
+ "E-UTRA FDD not supported"
};
-static const value_string e_utra_tdd_support_vals[] = {
- { 0, "E-UTRA TDD not supported" },
- { 1, "E-UTRA TDD supported" },
- { 0, NULL}
+static const true_false_string e_utra_tdd_support_vals = {
+ "E-UTRA TDD supported",
+ "E-UTRA TDD not supported"
+};
+
+static const true_false_string e_utra_meas_and_report_support_vals = {
+ "E-UTRAN Neighbour Cell measurements and measurement reporting while having an RR connection supported",
+ "E-UTRAN Neighbour Cell measurements and measurement reporting while having an RR connection not supported"
+};
+
+static const true_false_string prio_based_resel_support_vals = {
+ "Priority-based cell reselection supported",
+ "Priority-based cell reselection not supported"
+};
+
+static const true_false_string utra_csg_cells_reporting_vals = {
+ "Reporting of UTRAN CSG cells supported",
+ "Reporting of UTRAN CSG cells not supported"
};
-static const value_string e_utra_meas_and_report_support_vals[] = {
- { 0, "E-UTRAN Neighbour Cell measurements and measurement reporting while having an RR connection not supported" },
- { 1, "E-UTRAN Neighbour Cell measurements and measurement reporting while having an RR connection supported" },
+static const value_string vamos_level_vals[] = {
+ { 0, "VAMOS not supported" },
+ { 1, "VAMOS I supported" },
+ { 2, "VAMOS II supported" },
+ { 3, "Unused. If received, the network shall interpret this as VAMOS II supported" },
{ 0, NULL}
};
@@ -668,6 +642,9 @@ 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 hg_gsm_a_vamos_level = -1;
static int hf_gsm_a_geo_loc_type_of_shape = -1;
static int hf_gsm_a_geo_loc_sign_of_lat = -1;
@@ -2388,7 +2365,7 @@ de_ms_cm_2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
/*
* [3] 10.5.1.7 Mobile Station Classmark 3
- * 3GPP TS 24.008 version 8.6.0 Release 8
+ * 3GPP TS 24.008 version 9.6.0 Release 9
*/
#define AVAILABLE_BITS_CHECK(n) \
bits_left = ((len + offset) << 3) - bit_offset; \
@@ -2988,7 +2965,7 @@ de_ms_cm_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
/*
* Release 8 starts here
*
- * { 0 | 1 <E-UTRA FDD support : bit > } -- Release 8 starts here.
+ * <E-UTRA FDD support : bit > -- Release 8 starts here.
* Extract E-UTRA FDD support
*/
AVAILABLE_BITS_CHECK(1);
@@ -2996,7 +2973,7 @@ de_ms_cm_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
bit_offset = bit_offset + 1;
/*
- * { 0 | 1 <E-UTRA TDD support : bit > }
+ * <E-UTRA TDD support : bit >
* Extract E-UTRA TDD support
*/
AVAILABLE_BITS_CHECK(1);
@@ -3004,7 +2981,7 @@ de_ms_cm_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
bit_offset = bit_offset + 1;
/*
- * { 0 | 1 <E-UTRA Measurement and Reporting support : bit > }
+ * <E-UTRA Measurement and Reporting support : bit >
* Extract E-UTRA Measurement and Reporting support
*/
AVAILABLE_BITS_CHECK(1);
@@ -3012,6 +2989,32 @@ de_ms_cm_3(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
bit_offset = bit_offset + 1;
/*
+ * <Priority-based reselection support : bit >
+ * Extract Priority-based reselection support
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_prio_based_resel_support, tvb, bit_offset, 1, FALSE);
+ bit_offset = bit_offset + 1;
+
+ /*
+ * Release 9 starts here
+ *
+ * <UTRA CSG Cells Reporting : bit > -- Release 9 starts here.
+ * Extract UTRA CSG Cells Reporting
+ */
+ AVAILABLE_BITS_CHECK(1);
+ proto_tree_add_bits_item(tree, hf_gsm_a_utra_csg_cells_reporting, tvb, bit_offset, 1, FALSE);
+ bit_offset = bit_offset + 1;
+
+ /*
+ * <VAMOS Level : bit(2) >
+ * Extract VAMOS Level
+ */
+ AVAILABLE_BITS_CHECK(2);
+ proto_tree_add_bits_item(tree, hg_gsm_a_vamos_level, tvb, bit_offset, 2, FALSE);
+ bit_offset = bit_offset + 2;
+
+ /*
* Add spare bits until we reach an octet boundary
*/
bits_left = (((len + offset) << 3) - bit_offset) & 0x07;
@@ -3348,12 +3351,12 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_ES_IND,
{ "ES IND","gsm_a.MSC2_rev",
- FT_UINT8,BASE_DEC, VALS(ES_IND_vals), 0x10,
+ FT_BOOLEAN,8, TFS(&ES_IND_vals), 0x10,
NULL, HFILL }
},
{ &hf_gsm_a_A5_1_algorithm_sup,
{ "A5/1 algorithm supported","gsm_a.MSC2_rev",
- FT_UINT8,BASE_DEC, VALS(A5_1_algorithm_sup_vals), 0x08,
+ FT_BOOLEAN,8, TFS(&A5_1_algorithm_sup_vals), 0x08,
NULL, HFILL }
},
{ &hf_gsm_a_RF_power_capability,
@@ -3363,7 +3366,7 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_ps_sup_cap,
{ "PS capability (pseudo-synchronization capability)","gsm_a.ps_sup_cap",
- FT_UINT8,BASE_DEC, VALS(ps_sup_cap_vals), 0x40,
+ FT_BOOLEAN,8, TFS(&ps_sup_cap_vals), 0x40,
NULL, HFILL }
},
{ &hf_gsm_a_SS_screening_indicator,
@@ -3373,77 +3376,77 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_SM_capability,
{ "SM capability (MT SMS pt to pt capability)","gsm_a.SM_cap",
- FT_UINT8,BASE_DEC, VALS(SM_capability_vals), 0x08,
+ FT_BOOLEAN,8, TFS(&SM_capability_vals), 0x08,
NULL, HFILL }
},
{ &hf_gsm_a_VBS_notification_rec,
{ "VBS notification reception","gsm_a.VBS_notification_rec",
- FT_UINT8,BASE_DEC, VALS(VBS_notification_rec_vals), 0x04,
+ FT_BOOLEAN,8, TFS(&VBS_notification_rec_vals), 0x04,
NULL, HFILL }
},
{ &hf_gsm_a_VGCS_notification_rec,
{ "VGCS notification reception","gsm_a.VGCS_notification_rec",
- FT_UINT8,BASE_DEC, VALS(VGCS_notification_rec_vals), 0x02,
+ FT_BOOLEAN,8, TFS(&VGCS_notification_rec_vals), 0x02,
NULL, HFILL }
},
{ &hf_gsm_a_FC_frequency_cap,
{ "FC Frequency Capability","gsm_a.FC_frequency_cap",
- FT_UINT8,BASE_DEC, VALS(FC_frequency_cap_vals), 0x01,
+ FT_BOOLEAN,8, TFS(&FC_frequency_cap_vals), 0x01,
NULL, HFILL }
},
{ &hf_gsm_a_CM3,
{ "CM3","gsm_a.CM3",
- FT_UINT8,BASE_DEC, VALS(CM3_vals), 0x80,
+ FT_BOOLEAN,8, TFS(&CM3_vals), 0x80,
NULL, HFILL }
},
{ &hf_gsm_a_LCS_VA_cap,
{ "LCS VA capability (LCS value added location request notification capability)","gsm_a.LCS_VA_cap",
- FT_UINT8,BASE_DEC, VALS(LCS_VA_cap_vals), 0x20,
+ FT_BOOLEAN,8, TFS(&LCS_VA_cap_vals), 0x20,
NULL, HFILL }
},
{ &hf_gsm_a_UCS2_treatment,
{ "UCS2 treatment","gsm_a.UCS2_treatment",
- FT_UINT8,BASE_DEC, VALS(UCS2_treatment_vals), 0x10,
+ FT_BOOLEAN,8, TFS(&UCS2_treatment_vals), 0x10,
NULL, HFILL }
},
{ &hf_gsm_a_SoLSA,
{ "SoLSA","gsm_a.SoLSA",
- FT_UINT8,BASE_DEC, VALS(SoLSA_vals), 0x08,
+ FT_BOOLEAN,8, TFS(&SoLSA_vals), 0x08,
NULL, HFILL }
},
{ &hf_gsm_a_CMSP,
{ "CMSP: CM Service Prompt","gsm_a.CMSP",
- FT_UINT8,BASE_DEC, VALS(CMSP_vals), 0x04,
+ FT_BOOLEAN,8, TFS(&CMSP_vals), 0x04,
NULL, HFILL }
},
{ &hf_gsm_a_A5_7_algorithm_sup,
{ "A5/7 algorithm supported","gsm_a.A5_7_algorithm_sup",
- FT_UINT8,BASE_DEC, VALS(A5_7_algorithm_sup_vals), 0x0,
+ FT_BOOLEAN,8, TFS(&A5_7_algorithm_sup_vals), 0x0,
NULL, HFILL }
},
{ &hf_gsm_a_A5_6_algorithm_sup,
{ "A5/6 algorithm supported","gsm_a.A5_6_algorithm_sup",
- FT_UINT8,BASE_DEC, VALS(A5_6_algorithm_sup_vals), 0x0,
+ FT_BOOLEAN,8, TFS(&A5_6_algorithm_sup_vals), 0x0,
NULL, HFILL }
},
{ &hf_gsm_a_A5_5_algorithm_sup,
{ "A5/5 algorithm supported","gsm_a.A5_5_algorithm_sup",
- FT_UINT8,BASE_DEC, VALS(A5_5_algorithm_sup_vals), 0x0,
+ FT_BOOLEAN,8, TFS(&A5_5_algorithm_sup_vals), 0x0,
NULL, HFILL }
},
{ &hf_gsm_a_A5_4_algorithm_sup,
{ "A5/4 algorithm supported","gsm_a.A5_4_algorithm_sup",
- FT_UINT8,BASE_DEC, VALS(A5_4_algorithm_sup_vals), 0x0,
+ FT_BOOLEAN,8, TFS(&A5_4_algorithm_sup_vals), 0x0,
NULL, HFILL }
},
{ &hf_gsm_a_A5_3_algorithm_sup,
{ "A5/3 algorithm supported","gsm_a.A5_3_algorithm_sup",
- FT_UINT8,BASE_DEC, VALS(A5_3_algorithm_sup_vals), 0x02,
+ FT_BOOLEAN,8, TFS(&A5_3_algorithm_sup_vals), 0x02,
NULL, HFILL }
},
{ &hf_gsm_a_A5_2_algorithm_sup,
{ "A5/2 algorithm supported","gsm_a.A5_2_algorithm_sup",
- FT_UINT8,BASE_DEC, VALS(A5_2_algorithm_sup_vals), 0x01,
+ FT_BOOLEAN,8, TFS(&A5_2_algorithm_sup_vals), 0x01,
NULL, HFILL }
},
{ &hf_gsm_a_mobile_identity_type,
@@ -3453,7 +3456,7 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_odd_even_ind,
{ "Odd/even indication","gsm_a.oddevenind",
- FT_UINT8, BASE_DEC, oddevenind_vals, 0x08,
+ FT_BOOLEAN, 8, TFS(&oddevenind_vals), 0x08,
NULL, HFILL }
},
{ &hf_gsm_a_tmgi_mcc_mnc_ind,
@@ -3528,17 +3531,17 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_pgsm_supported,
{ "P-GSM Supported", "gsm_a.classmark3.pgsmSupported",
- FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_egsm_supported,
{ "E-GSM or R-GSM Supported", "gsm_a.classmark3.egsmSupported",
- FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_gsm1800_supported,
{ "GSM 1800 Supported", "gsm_a.classmark3.gsm1800Supported",
- FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_ass_radio_cap1,
@@ -3558,7 +3561,7 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_rsupport,
{ "R Support", "gsm_a.classmark3.rsupport",
- FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_r_capabilities,
@@ -3568,7 +3571,7 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_multislot_capabilities,
{ "HSCSD Multi Slot Capability", "gsm_a.classmark3.multislot_capabilities",
- FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_multislot_class,
@@ -3578,17 +3581,17 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_ucs2_treatment,
{ "UCS2 treatment","gsm_a.UCS2_treatment",
- FT_UINT8,BASE_DEC, VALS(UCS2_treatment_vals), 0x0,
+ FT_BOOLEAN,8, TFS(&UCS2_treatment_vals), 0x0,
NULL, HFILL }
},
{ &hf_gsm_a_extended_measurement_cap,
{ "Extended Measurement Capability", "gsm_a.classmark3.ext_meas_cap",
- FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_ms_measurement_capability,
{ "MS measurement capability", "gsm_a.classmark3.ms_measurement_capability",
- FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_sms_value,
@@ -3603,7 +3606,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_ms_pos_method,
@@ -3613,32 +3616,32 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_ms_assisted_e_otd,
{ "MS assisted E-OTD", "gsm_a.classmark3.ms_assisted_e_otd",
- FT_UINT8, BASE_DEC, VALS(ms_assisted_e_otd_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&ms_assisted_e_otd_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_ms_based_e_otd,
{ "MS based E-OTD", "gsm_a.classmark3.ms_based_e_otd",
- FT_UINT8, BASE_DEC, VALS(ms_based_e_otd_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&ms_based_e_otd_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_ms_assisted_gps,
{ "MS assisted GPS", "gsm_a.classmark3.ms_assisted_gps",
- FT_UINT8, BASE_DEC, VALS(ms_assisted_gps_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&ms_assisted_gps_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_ms_based_gps,
{ "MS based GPS", "gsm_a.classmark3.ms_based_gps",
- FT_UINT8, BASE_DEC, VALS(ms_based_gps_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&ms_based_gps_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_ms_conventional_gps,
{ "MS Conventional GPS", "gsm_a.classmark3.ms_conventional_gps",
- FT_UINT8, BASE_DEC, VALS(ms_conventional_gps_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&ms_conventional_gps_vals), 0x0,
NULL, HFILL}
},
{ &hf_gsm_a_ecsd_multi_slot_capability,
{ "ECSD Multi Slot Capability present", "gsm_a.classmark3.ecsd_multi_slot_capability",
- FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_ecsd_multi_slot_class,
@@ -3648,7 +3651,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_8_psk_struct,
@@ -3658,7 +3661,7 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_modulation_capability,
{ "Modulation Capability", "gsm_a.classmark3.modulation_capability",
- FT_UINT8, BASE_DEC, VALS(modulation_capability_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&modulation_capability_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_8_psk_rf_power_capability_1,
@@ -3673,7 +3676,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_gsm_400_bands_supported,
@@ -3688,7 +3691,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_gsm_850_assoc_radio_cap,
@@ -3698,7 +3701,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_gsm_1900_assoc_radio_cap,
@@ -3708,22 +3711,22 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_umts_fdd_rat_cap,
{ "UMTS FDD Radio Access Technology Capability", "gsm_a.classmark3.umts_fdd_rat_cap",
- FT_UINT8, BASE_DEC, VALS(umts_fdd_rat_cap_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&umts_fdd_rat_cap_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_umts_384_mcps_tdd_rat_cap,
{ "UMTS 3.84 Mcps TDD Radio Access Technology Capability", "gsm_a.classmark3.umts_384_mcps_tdd_rat_cap",
- FT_UINT8, BASE_DEC, VALS(umts_384_mcps_tdd_rat_cap_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&umts_384_mcps_tdd_rat_cap_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_cdma_2000_rat_cap,
{ "CDMA 2000 Radio Access Technology Capability", "gsm_a.classmark3.cdma_2000_rat_cap",
- FT_UINT8, BASE_DEC, VALS(cdma_2000_rat_cap_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&cdma_2000_rat_cap_vals), 0x00,
NULL, HFILL}
},
{ &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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_dtm_gprs_multi_slot_class,
@@ -3733,12 +3736,12 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_single_slot_dtm,
{ "Single Slot DTM", "gsm_a.classmark3.single_slot_dtm_supported",
- FT_UINT8, BASE_DEC, VALS(single_slot_dtm_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&single_slot_dtm_vals), 0x0,
NULL, HFILL}
},
{ &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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_dtm_egprs_multi_slot_class,
@@ -3748,7 +3751,7 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_single_band_support,
{ "Single Band Support", "gsm_a.classmark3.single_band_support",
- FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_gsm_band,
@@ -3758,7 +3761,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_gsm_750_assoc_radio_cap,
@@ -3768,17 +3771,17 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_umts_128_mcps_tdd_rat_cap,
{ "UMTS 1.28 Mcps TDD Radio Access Technology Capability", "gsm_a.classmark3.umts_128_mcps_tdd_rat_cap",
- FT_UINT8, BASE_DEC, VALS(umts_128_mcps_tdd_rat_cap_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&umts_128_mcps_tdd_rat_cap_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_geran_feature_package_1,
{ "GERAN Feature Package 1", "gsm_a.classmark3.geran_feature_package_1",
- FT_UINT8, BASE_DEC, VALS(geran_feature_package_1_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&geran_feature_package_1_vals), 0x00,
NULL, HFILL}
},
{ &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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_ext_dtm_gprs_multi_slot_class,
@@ -3793,7 +3796,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_high_multislot_cap,
@@ -3803,7 +3806,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_geran_iu_mode_cap,
@@ -3818,12 +3821,12 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_flo_iu_cap,
{ "FLO Iu Capability", "gsm_a.classmark3.geran_iu_mode_cap.flo_iu_cap",
- FT_UINT8, BASE_DEC, VALS(flo_iu_cap_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&flo_iu_cap_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_geran_feature_package_2,
{ "GERAN Feature Package 2", "gsm_a.classmark3.geran_feature_package_2",
- FT_UINT8, BASE_DEC, VALS(geran_feature_package_2_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&geran_feature_package_2_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_gmsk_multislot_power_prof,
@@ -3838,7 +3841,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_t_gsm_400_bands_supported,
@@ -3853,7 +3856,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_t_gsm_900_assoc_radio_cap,
@@ -3868,12 +3871,12 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_dtm_enhancements_cap,
{ "DTM Enhancements Capability", "gsm_a.classmark3.dtm_enhancements_capability",
- FT_UINT8, BASE_DEC, VALS(dtm_enhancements_cap_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&dtm_enhancements_cap_vals), 0x00,
NULL, HFILL}
},
{ &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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_dtm_gprs_high_multi_slot_class,
@@ -3883,12 +3886,12 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_offset_required,
{ "Offset required", "gsm_a.classmark3.offset_required",
- FT_UINT8, BASE_DEC, VALS(offset_required_vals), 0x0,
+ FT_BOOLEAN, 8, TFS(&offset_required_vals), 0x0,
NULL, HFILL}
},
{ &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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_dtm_egprs_high_multi_slot_class,
@@ -3898,12 +3901,12 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_repeated_acch_cap,
{ "Repeated ACCH Capability", "gsm_a.classmark3.repeated_acch_cap",
- FT_UINT8, BASE_DEC, VALS(repeated_acch_cap_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&repeated_acch_cap_vals), 0x00,
NULL, HFILL}
},
{ &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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_gsm_710_assoc_radio_cap,
@@ -3913,7 +3916,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_UINT8, BASE_DEC, VALS(true_false_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&true_false_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_t_gsm_810_assoc_radio_cap,
@@ -3923,27 +3926,42 @@ proto_register_gsm_a_common(void)
},
{ &hf_gsm_a_ciphering_mode_setting_cap,
{ "Ciphering Mode Setting Capability", "gsm_a.classmark3.ciphering_mode_setting_cap",
- FT_UINT8, BASE_DEC, VALS(ciphering_mode_setting_cap_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&ciphering_mode_setting_cap_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_additional_positioning_caps,
{ "Additional Positioning Capabilities", "gsm_a.classmark3.additional_positioning_caps",
- FT_UINT8, BASE_DEC, VALS(additional_positioning_caps_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&additional_positioning_caps_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_e_utra_fdd_support,
{ "E-UTRA FDD support", "gsm_a.classmark3.e_utra_fdd_support",
- FT_UINT8, BASE_DEC, VALS(e_utra_fdd_support_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&e_utra_fdd_support_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_e_utra_tdd_support,
{ "E-UTRA TDD support", "gsm_a.classmark3.e_utra_tdd_support",
- FT_UINT8, BASE_DEC, VALS(e_utra_tdd_support_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&e_utra_tdd_support_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_e_utra_meas_and_report_support,
{ "E-UTRA Measurement and Reporting support", "gsm_a.classmark3.e_utra_meas_and_report_support",
- FT_UINT8, BASE_DEC, VALS(e_utra_meas_and_report_support_vals), 0x00,
+ FT_BOOLEAN, 8, TFS(&e_utra_meas_and_report_support_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_prio_based_resel_support,
+ { "Priority-based reselection support", "gsm_a.classmark3.prio_based_resel_support",
+ FT_BOOLEAN, 8, TFS(&prio_based_resel_support_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hf_gsm_a_utra_csg_cells_reporting,
+ { "UTRA CSG Cells Reporting", "gsm_a.classmark3.utra_csg_cells_reporting",
+ FT_BOOLEAN, 8, TFS(&utra_csg_cells_reporting_vals), 0x00,
+ NULL, HFILL}
+ },
+ { &hg_gsm_a_vamos_level,
+ { "VAMOS Level", "gsm_a.classmark3.vamos_level",
+ FT_UINT8, BASE_DEC, VALS(vamos_level_vals), 0x00,
NULL, HFILL}
},
{ &hf_gsm_a_geo_loc_type_of_shape,
diff --git a/epan/dissectors/packet-gsm_a_common.h b/epan/dissectors/packet-gsm_a_common.h
index cd3b33760d..a0627be9ab 100644
--- a/epan/dissectors/packet-gsm_a_common.h
+++ b/epan/dissectors/packet-gsm_a_common.h
@@ -968,6 +968,7 @@ typedef enum
DE_LSA_ID, /* LSA Identifier */
DE_DAY_SAVING_TIME, /* Daylight Saving Time */
DE_EMERGENCY_NUM_LIST, /* Emergency Number List */
+ DE_ADD_UPD_PARAMS, /* Additional update parameters */
/* Call Control Information Elements 10.5.4 */
DE_AUX_STATES, /* Auxiliary States */
DE_BEARER_CAP, /* Bearer Capability */
@@ -1033,33 +1034,37 @@ dtap_elem_idx_t;
typedef enum
{
/* GPRS Mobility Management Information Elements [3] 10.5.5 */
- DE_ATTACH_RES, /* [7] 10.5.1 Attach Result*/
- DE_ATTACH_TYPE, /* [7] 10.5.2 Attach Type */
- DE_CIPH_ALG, /* [7] 10.5.3 Cipher Algorithm */
- DE_TMSI_STAT, /* [7] 10.5.4 TMSI Status */
- DE_DETACH_TYPE, /* [7] 10.5.5 Detach Type */
- DE_DRX_PARAM, /* [7] 10.5.6 DRX Parameter */
- DE_FORCE_TO_STAND, /* [7] 10.5.7 Force to Standby */
- DE_FORCE_TO_STAND_H, /* [7] 10.5.8 Force to Standby - Info is in the high nibble */
- DE_P_TMSI_SIG, /* [7] 10.5.9 P-TMSI Signature */
- DE_P_TMSI_SIG_2, /* [7] 10.5.10 P-TMSI Signature 2 */
- DE_ID_TYPE_2, /* [7] 10.5.11 Identity Type 2 */
- DE_IMEISV_REQ, /* [7] 10.5.12 IMEISV Request */
- DE_REC_N_PDU_NUM_LIST, /* [7] 10.5.13 Receive N-PDU Numbers List */
- DE_MS_NET_CAP, /* [7] 10.5.14 MS Network Capability */
- DE_MS_RAD_ACC_CAP, /* [7] 10.5.15 MS Radio Access Capability */
- DE_GMM_CAUSE, /* [7] 10.5.16 GMM Cause */
- DE_RAI, /* [7] 10.5.17 Routing Area Identification */
- DE_UPD_RES, /* [7] 10.5.18 Update Result */
- DE_UPD_TYPE, /* [7] 10.5.19 Update Type */
- DE_AC_REF_NUM, /* [7] 10.5.20 A&C Reference Number */
+ DE_ATTACH_RES, /* [7] 10.5.5.1 Attach Result*/
+ DE_ATTACH_TYPE, /* [7] 10.5.5.2 Attach Type */
+ DE_CIPH_ALG, /* [7] 10.5.5.3 Cipher Algorithm */
+ DE_TMSI_STAT, /* [7] 10.5.5.4 TMSI Status */
+ DE_DETACH_TYPE, /* [7] 10.5.5.5 Detach Type */
+ DE_DRX_PARAM, /* [7] 10.5.5.6 DRX Parameter */
+ DE_FORCE_TO_STAND, /* [7] 10.5.5.7 Force to Standby */
+ DE_FORCE_TO_STAND_H, /* [7] 10.5.5.7 Force to Standby - Info is in the high nibble */
+ DE_P_TMSI_SIG, /* [7] 10.5.5.8 P-TMSI Signature */
+ DE_P_TMSI_SIG_2, /* [7] 10.5.5.8a P-TMSI Signature 2 */
+ DE_ID_TYPE_2, /* [7] 10.5.5.9 Identity Type 2 */
+ DE_IMEISV_REQ, /* [7] 10.5.5.10 IMEISV Request */
+ DE_REC_N_PDU_NUM_LIST, /* [7] 10.5.5.11 Receive N-PDU Numbers List */
+ DE_MS_NET_CAP, /* [7] 10.5.5.12 MS Network Capability */
+ DE_MS_RAD_ACC_CAP, /* [7] 10.5.5.12a MS Radio Access Capability */
+ DE_GMM_CAUSE, /* [7] 10.5.5.14 GMM Cause */
+ DE_RAI, /* [7] 10.5.5.15 Routing Area Identification */
+ DE_RAI_2, /* [7] 10.5.5.15a Routing Area Identification 2 */
+ DE_UPD_RES, /* [7] 10.5.5.17 Update Result */
+ DE_UPD_TYPE, /* [7] 10.5.5.18 Update Type */
+ DE_AC_REF_NUM, /* [7] 10.5.5.19 A&C Reference Number */
DE_AC_REF_NUM_H, /* A&C Reference Number - Info is in the high nibble */
- DE_SRVC_TYPE, /* [7] 10.5.20 Service Type */
- DE_CELL_NOT, /* [7] 10.5.21 Cell Notification */
- DE_PS_LCS_CAP, /* [7] 10.5.22 PS LCS Capability */
- DE_NET_FEAT_SUP, /* [7] 10.5.23 Network Feature Support */
- DE_RAT_INFO_CONTAINER, /* [7] 10.5.24 Inter RAT information container */
- /* [7] 10.5.25 Requested MS information */
+ DE_SRVC_TYPE, /* [7] 10.5.5.20 Service Type */
+ DE_CELL_NOT, /* [7] 10.5.5.21 Cell Notification */
+ DE_PS_LCS_CAP, /* [7] 10.5.5.22 PS LCS Capability */
+ DE_NET_FEAT_SUP, /* [7] 10.5.5.23 Network Feature Support */
+ DE_RAT_INFO_CONTAINER, /* [7] 10.5.5.24 Inter RAT information container */
+ DE_REQ_MS_INFO, /* [7] 10.5.5.25 Requested MS information */
+ DE_UE_NETWORK_CAP, /* [7] 10.5.5.26 UE network capability */
+ DE_EUTRAN_IRAT_INFO_CONTAINER, /* [7] 10.5.5.27 E-UTRAN inter RAT information container */
+ DE_VOICE_DOMAIN_PREF, /* [7] 10.5.5.28 Voice domain preference and UE's usage setting */
/* Session Management Information Elements [3] 10.5.6 */
DE_ACC_POINT_NAME, /* Access Point Name */
DE_NET_SAPI, /* Network Service Access Point Identifier */
@@ -1078,6 +1083,7 @@ typedef enum
DE_MBMS_PROT_CONF_OPT, /* MBMS protocol configuration options */
DE_ENH_NSAPI, /* Enhanced network service access point identifier */
DE_REQ_TYPE, /* Request type */
+ DE_SM_NOTIF_IND, /* Notification indicator */
/* GPRS Common Information Elements [8] 10.5.7 */
DE_PDP_CONTEXT_STAT, /* [8] 10.5.7.1 PDP Context Status */
DE_RAD_PRIO, /* [8] 10.5.7.2 Radio Priority */
@@ -1085,6 +1091,7 @@ typedef enum
DE_GPRS_TIMER_2, /* [8] 10.5.7.4 GPRS Timer 2 */
DE_RAD_PRIO_2, /* [8] 10.5.7.5 Radio Priority 2 */
DE_MBMS_CTX_STATUS, /* [8] 10.5.7.6 MBMS context status */
+ DE_UPLINK_DATA_STATUS, /* [8] 10.5.7.7 Uplink data status */
DE_GM_NONE /* NONE */
}
gm_elem_idx_t;
diff --git a/epan/dissectors/packet-gsm_a_dtap.c b/epan/dissectors/packet-gsm_a_dtap.c
index 6d4becebc5..d565ae7422 100644
--- a/epan/dissectors/packet-gsm_a_dtap.c
+++ b/epan/dissectors/packet-gsm_a_dtap.c
@@ -64,7 +64,7 @@
* Mobile radio interface Layer 3 specification;
* Core network protocols;
* Stage 3
- * (3GPP TS 24.008 version 8.6.0 Release 8)
+ * (3GPP TS 24.008 version 9.6.0 Release 9)
*
* $Id$
*
@@ -247,6 +247,7 @@ const value_string gsm_dtap_elem_strings[] = {
{ 0x00, "LSA Identifier" },
{ 0x00, "Daylight Saving Time" },
{ 0x00, "Emergency Number List" },
+ { 0x00, "Additional update parameters" },
/* Call Control Information Elements 10.5.4 */
{ 0x00, "Auxiliary States" }, /* 10.5.4.4 Auxiliary states */
{ 0x00, "Bearer Capability" }, /* 10.5.4.4a Backup bearer capability */
@@ -422,6 +423,7 @@ static int hf_gsm_a_dtap_serv_cat_b4 = -1;
static int hf_gsm_a_dtap_serv_cat_b3 = -1;
static int hf_gsm_a_dtap_serv_cat_b2 = -1;
static int hf_gsm_a_dtap_serv_cat_b1 = -1;
+static int hf_gsm_a_dtap_csmt = -1;
static int hf_gsm_a_dtap_alerting_pattern = -1;
static int hf_gsm_a_dtap_ccbs_activation = -1;
static int hf_gsm_a_dtap_stream_identifier = -1;
@@ -976,6 +978,7 @@ de_day_saving_time(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
return(curr_offset - offset);
}
+
/*
* 10.5.3.13 Emergency Number List
*/
@@ -1052,6 +1055,26 @@ de_emerg_num_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
count++;
}
+ return(len);
+}
+
+/*
+ * 10.5.3.14 Additional update parameters
+ */
+static const true_false_string gsm_a_dtap_csmt_vals = {
+ "CS fallback mobile terminating call",
+ "No additional information"
+};
+
+static guint16
+de_add_upd_params(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+4, 3, FALSE);
+ proto_tree_add_bits_item(tree, hf_gsm_a_dtap_csmt, tvb, (curr_offset<<3)+7, 1, FALSE);
return(len);
}
@@ -4072,6 +4095,7 @@ guint16 (*dtap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
de_lsa_id, /* LSA Identifier */
de_day_saving_time, /* Daylight Saving Time */
de_emerg_num_list, /* Emergency Number List */
+ de_add_upd_params, /* Additional update parameters */
/* Call Control Information Elements 10.5.4 */
de_aux_states, /* Auxiliary States */
de_bearer_cap, /* Bearer Capability */
@@ -4720,7 +4744,9 @@ dtap_mm_loc_upd_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
ELEM_MAND_LV(GSM_A_PDU_TYPE_COMMON, DE_MID, NULL);
- ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_2, NULL);
+ ELEM_OPT_TLV(0x33, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_2, " - Mobile station classmark for UMTS");
+
+ ELEM_OPT_TV_SHORT(0xc0, GSM_A_PDU_TYPE_DTAP, DE_ADD_UPD_PARAMS, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -6449,6 +6475,11 @@ proto_register_gsm_a_dtap(void)
FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
+ { &hf_gsm_a_dtap_csmt,
+ { "CSMT", "gsm_a.dtap.csmt",
+ FT_BOOLEAN, 8, TFS(&gsm_a_dtap_csmt_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_dtap_alerting_pattern,
{ "Alerting Pattern", "gsm_a.dtap.alerting_pattern",
FT_UINT8, BASE_DEC, VALS(gsm_a_alerting_pattern_vals), 0x0f,
diff --git a/epan/dissectors/packet-gsm_a_gm.c b/epan/dissectors/packet-gsm_a_gm.c
index 2130d3b0e1..4f01017296 100644
--- a/epan/dissectors/packet-gsm_a_gm.c
+++ b/epan/dissectors/packet-gsm_a_gm.c
@@ -33,7 +33,7 @@
* Mobile radio interface Layer 3 specification;
* Core network protocols;
* Stage 3
- * (3GPP TS 24.008 version 8.6.0 Release 8)
+ * (3GPP TS 24.008 version 9.6.0 Release 9)
*
* $Id$
*
@@ -132,6 +132,9 @@ const value_string gsm_a_dtap_msg_sm_strings[] = {
{ 0x58, "Activate MBMS Context Reject" },
{ 0x59, "Request MBMS Context Activation" },
{ 0x5a, "Request MBMS Context Activation Reject" },
+ { 0x5b, "Request Secondary PDP Context Activation" },
+ { 0x5c, "Request Secondary PDP Context Activation Reject" },
+ { 0x5d, "Notification" },
{ 0, NULL }
};
@@ -154,6 +157,7 @@ const value_string gsm_gm_elem_strings[] = {
{ 0x00, "MS Radio Access Capability" },
{ 0x00, "GMM Cause" },
{ 0x00, "Routing Area Identification" },
+ { 0x00, "Routing Area Identification 2" },
{ 0x00, "Update Result" },
{ 0x00, "Update Type" },
{ 0x00, "A&C Reference Number" },
@@ -163,6 +167,10 @@ const value_string gsm_gm_elem_strings[] = {
{ 0x00, "PS LCS Capability" },
{ 0x00, "Network Feature Support" },
{ 0x00, "Inter RAT information container" },
+ { 0x00, "Requested MS information" },
+ { 0x00, "UE network capability" },
+ { 0x00, "E-UTRAN inter RAT information container" },
+ { 0x00, "Voice domain preference and UE's usage setting" },
/* Session Management Information Elements 10.5.6 */
{ 0x00, "Access Point Name" },
{ 0x00, "Network Service Access Point Identifier" },
@@ -181,6 +189,7 @@ const value_string gsm_gm_elem_strings[] = {
{ 0x00, "MBMS protocol configuration options" },
{ 0x00, "Enhanced network service access point identifier" },
{ 0x00, "Request type" },
+ { 0x00, "Notification indicator" },
/* GPRS Common Information Elements 10.5.7 */
{ 0x00, "PDP Context Status" },
{ 0x00, "Radio Priority" },
@@ -188,6 +197,7 @@ const value_string gsm_gm_elem_strings[] = {
{ 0x00, "GPRS Timer 2" },
{ 0x00, "Radio Priority 2"},
{ 0x00, "MBMS context status"},
+ { 0x00, "Uplink data status"},
{ 0x00, "Spare Nibble"},
{ 0, NULL }
};
@@ -256,6 +266,17 @@ static int hf_gsm_a_gm_tmsi_flag = -1;
static int hf_gsm_a_gm_update_type = -1;
static int hf_gsm_a_gm_gprs_timer_unit = -1;
static int hf_gsm_a_gm_gprs_timer_value = -1;
+static int hf_gsm_a_gm_nsapi_5_ul_stat = -1;
+static int hf_gsm_a_gm_nsapi_6_ul_stat = -1;
+static int hf_gsm_a_gm_nsapi_7_ul_stat = -1;
+static int hf_gsm_a_gm_nsapi_8_ul_stat = -1;
+static int hf_gsm_a_gm_nsapi_9_ul_stat = -1;
+static int hf_gsm_a_gm_nsapi_10_ul_stat = -1;
+static int hf_gsm_a_gm_nsapi_11_ul_stat = -1;
+static int hf_gsm_a_gm_nsapi_12_ul_stat = -1;
+static int hf_gsm_a_gm_nsapi_13_ul_stat = -1;
+static int hf_gsm_a_gm_nsapi_14_ul_stat = -1;
+static int hf_gsm_a_gm_nsapi_15_ul_stat = -1;
static int hf_gsm_a_gm_pco_pid = -1;
static int hf_gsm_a_gm_type_of_identity = -1;
static int hf_gsm_a_gm_rac = -1;
@@ -265,6 +286,10 @@ static int hf_gsm_a_gm_otd_b = -1;
static int hf_gsm_a_gm_gps_a = -1;
static int hf_gsm_a_gm_gps_b = -1;
static int hf_gsm_a_gm_gps_c = -1;
+static int hf_gsm_a_gm_req_ms_info_irat = -1;
+static int hf_gsm_a_gm_req_ms_info_irat2 = -1;
+static int hf_gsm_a_gm_ue_usage_setting = -1;
+static int hf_gsm_a_gm_voice_domain_pref_for_eutran = -1;
static int hf_gsm_a_sm_pdp_type_org = -1;
static int hf_gsm_a_qos_mean_thr = -1;
static int hf_gsm_a_qos_peak_thr = -1;
@@ -289,6 +314,7 @@ static int hf_gsm_a_sm_packet_flow_id = -1;
static int hf_gsm_a_sm_tmgi = -1;
static int hf_gsm_a_sm_enh_nsapi = -1;
static int hf_gsm_a_sm_req_type = -1;
+static int hf_gsm_a_sm_notif_ind = -1;
static int hf_gsm_a_gm_rac_ctrled_early_cm_sending = -1;
static int hf_gsm_a_gm_rac_multislot_capability = -1;
static int hf_gsm_a_gm_rac_single_slt_dtm = -1;
@@ -320,10 +346,11 @@ static int hf_gsm_a_gmm_net_cap_gea7 = -1;
static int hf_gsm_a_gmm_net_cap_lcs = -1;
static int hf_gsm_a_gmm_net_cap_ps_irat_iu = -1;
static int hf_gsm_a_gmm_net_cap_ps_irat_s1 = -1;
-static int hf_gsm_a_gmm_net_cap_csfb = -1;
+static int hf_gsm_a_gmm_net_cap_comb_proc = -1;
static int hf_gsm_a_gmm_net_cap_isr = -1;
static int hf_gsm_a_gmm_net_cap_srvcc_to_geran = -1;
static int hf_gsm_a_gmm_net_cap_epc = -1;
+static int hf_gsm_a_gmm_net_cap_nf = -1;
/* Initialize the subtree pointers */
static gint ett_tc_component = -1;
@@ -349,6 +376,7 @@ static gint ett_sm_tft = -1;
static dissector_handle_t data_handle;
static dissector_handle_t rrc_irat_ho_info_handle;
+static dissector_handle_t lte_rrc_ue_eutra_cap_handle;
static dissector_table_t gprs_sm_pco_subdissector_table; /* GPRS SM PCO PPP Protocols */
@@ -876,9 +904,9 @@ static const true_false_string gsm_a_gmm_net_cap_ps_irat_s1_vals = {
"PS inter-RAT HO to E-UTRAN S1 mode not supported"
};
-static const true_false_string gsm_a_gmm_net_cap_csfb_vals = {
- "Mobile station supports CS fallback",
- "Mobile station does not support CS fallback"
+static const true_false_string gsm_a_gmm_net_cap_comb_proc_vals = {
+ "Mobile station supports EMM combined procedures",
+ "Mobile station does not support EMM combined procedures"
};
static const true_false_string gsm_a_gmm_net_cap_isr_vals = {
@@ -896,6 +924,11 @@ static const true_false_string gsm_a_gmm_net_cap_epc_vals = {
"EPC not supported"
};
+static const true_false_string gsm_a_gmm_net_cap_nf_vals = {
+ "Mobile station supports the notification procedure",
+ "Mobile station does not support the notification procedure"
+};
+
guint16
de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
@@ -954,8 +987,8 @@ de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
/* bit 7: PS inter-RAT HO to E-UTRAN S1 mode capability */
proto_tree_add_item(tree, hf_gsm_a_gmm_net_cap_ps_irat_s1, tvb, curr_offset, 1, FALSE);
- /* bit 6: CSFB Capability */
- proto_tree_add_item(tree, hf_gsm_a_gmm_net_cap_csfb, tvb, curr_offset, 1, FALSE);
+ /* bit 6: EMM Combined procedures capability */
+ proto_tree_add_item(tree, hf_gsm_a_gmm_net_cap_comb_proc, tvb, curr_offset, 1, FALSE);
/* bit 5: ISR support */
proto_tree_add_item(tree, hf_gsm_a_gmm_net_cap_isr, tvb, curr_offset, 1, FALSE);
@@ -966,8 +999,11 @@ de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 o
/* bit 3: EPC capability */
proto_tree_add_item(tree, hf_gsm_a_gmm_net_cap_epc, tvb, curr_offset, 1, FALSE);
- /* bits 2 1: Spare bits */
- proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+6, 2, FALSE);
+ /* bit 3: NF capability */
+ proto_tree_add_item(tree, hf_gsm_a_gmm_net_cap_nf, tvb, curr_offset, 1, FALSE);
+
+ /* bits 1: Spare bit */
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, (curr_offset<<3)+7, 1, FALSE);
curr_offset++;
EXTRANEOUS_DATA_CHECK_EXPERT(len, curr_offset - offset, pinfo);
@@ -2472,6 +2508,16 @@ de_gmm_rai(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset,
}
/*
+ * [7] 10.5.5.15a Routing area identification 2
+ */
+guint16
+de_gmm_rai2(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ /* The routing area identification 2 value is coded as octet 2 to 7 of the Routing area identification information element. */
+ return de_gmm_rai(tvb, tree, pinfo, offset, len, add_string, string_len);
+}
+
+/*
* [7] 10.5.5.17
*/
static guint16
@@ -2709,6 +2755,93 @@ defined in 3GPP TS 25.331 [23c]. If this field includes padding bits, they are d
}
+/* [7] 10.5.5.25 Requested MS information */
+static const true_false_string gsm_a_gm_req_ms_info_irat_vals = {
+ "Inter RAT information container IE requested",
+ "Inter RAT information container IE not requested"
+};
+static const true_false_string gsm_a_gm_req_ms_info_irat2_vals = {
+ "E-UTRAN inter RAT information container IE requested",
+ "E-UTRAN inter RAT information container IE not requested"
+};
+
+static guint16
+de_gmm_req_ms_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+ guint32 bit_offset;
+
+ curr_offset = offset;
+ bit_offset = (curr_offset<<3)+4;
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_req_ms_info_irat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_req_ms_info_irat2, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset+=2;
+ curr_offset++;
+
+ return len;
+}
+
+/* [7] 10.5.5.26 UE network capability
+ * See subclause 9.9.3.x in 3GPP TS 24.301 [120].
+ */
+
+/* [7] 10.5.5.27 E-UTRAN inter RAT information container */
+static guint16
+de_gmm_eutran_irat_info_container(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+ tvbuff_t *lte_rrc_ue_eutra_cap_tvb;
+
+ curr_offset = offset;
+
+/* The value part of the E-UTRAN inter RAT information container information element
+ is formatted and coded according to the UE-EUTRA-Capability IE defined in 3GPP TS 36.331 [129]*/
+ lte_rrc_ue_eutra_cap_tvb = tvb_new_subset(tvb, curr_offset, len, len);
+ if (lte_rrc_ue_eutra_cap_handle)
+ call_dissector(lte_rrc_ue_eutra_cap_handle, lte_rrc_ue_eutra_cap_tvb, pinfo, tree);
+ else
+ proto_tree_add_text(tree, tvb, curr_offset, len,"E-UTRAN Inter RAT information container - Not decoded");
+
+ return len;
+}
+
+/* [7] 10.5.5.28 Voice domain preference and UE's usage setting */
+static const true_false_string gsm_a_gm_ue_usage_setting_vals = {
+ "Data centric",
+ "Voice centric"
+};
+static const value_string gsm_a_gm_voice_domain_pref_for_eutran_vals[] = {
+ {0x0, "CS Voice only"},
+ {0x1, "IMS PS Voice only"},
+ {0x2, "CS voice preferred, IMS PS Voice as secondary"},
+ {0x3, "IMS PS voice preferred, CS Voice as secondary"},
+ { 0, NULL }
+};
+
+static guint16
+de_gmm_voice_domain_pref(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+ guint32 bit_offset;
+
+ curr_offset = offset;
+ bit_offset = curr_offset<<3;
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
+ bit_offset+=5;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_ue_usage_setting, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_voice_domain_pref_for_eutran, tvb, bit_offset, 2, ENC_BIG_ENDIAN);
+ bit_offset+=2;
+ curr_offset++;
+
+ return len;
+}
+
/*
* [7] 10.5.7.1
*/
@@ -2924,7 +3057,7 @@ static guint16
de_gc_mbms_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
guint32 curr_offset;
- guint i;
+ guint i;
guint8 oct, j;
proto_item *tf = NULL;
proto_tree *tf_tree = NULL;
@@ -2957,6 +3090,54 @@ de_gc_mbms_context_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
return(len);
}
+
+/*
+ * [8] 10.5.7.7 Uplink data status
+ */
+static const true_false_string gsm_a_gm_nsapi_ul_stat_vals = {
+ "uplink data are pending for the preserved PDP context",
+ "no uplink data are pending for the preserved PDP context or the PDP context is PDP-INACTIVE or is PDP-ACTIVE with a RAB already established"
+};
+
+static guint16
+de_gc_uplink_data_stat(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+ guint32 bit_offset;
+
+ curr_offset = offset;
+ bit_offset = curr_offset<<3;
+
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_7_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_6_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_5_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 5, ENC_BIG_ENDIAN);
+ bit_offset+=5;
+ curr_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_15_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_14_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_13_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_12_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_11_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_10_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_9_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_gm_nsapi_8_ul_stat, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+ curr_offset++;
+
+ return(len);
+}
+
/*
* [7] 10.5.6.1
*/
@@ -4377,6 +4558,28 @@ de_sm_req_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
return(1);
}
+/*
+ * [9] 10.5.6.18 Notification indicator
+ */
+static const value_string gsm_a_sm_notif_ind_vals[] = {
+ { 0x0, "Reserved"},
+ { 0x1, "SRVCC handover cancelled, IMS session re-establishment required"},
+ { 0, NULL }
+};
+
+static guint16
+de_sm_notif_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ proto_tree_add_item(tree, hf_gsm_a_sm_notif_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+
+ return(len);
+}
+
+
guint16 (*gm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len) = {
/* GPRS Mobility Management Information Elements 10.5.5 */
de_gmm_attach_res, /* Attach Result */
@@ -4396,6 +4599,7 @@ guint16 (*gm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
de_gmm_ms_radio_acc_cap,/* MS Radio Access Capability */
de_gmm_cause, /* GMM Cause */
de_gmm_rai, /* Routing Area Identification */
+ de_gmm_rai2, /* Routing Area Identification 2 */
de_gmm_update_res, /* Update Result */
de_gmm_update_type, /* Update Type */
de_gmm_ac_ref_nr, /* A&C Reference Number */
@@ -4405,6 +4609,10 @@ guint16 (*gm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
de_gmm_ps_lcs_cap, /* PS LCS Capability */
de_gmm_net_feat_supp, /* Network Feature Support */
de_gmm_rat_info_container, /* Inter RAT information container */
+ de_gmm_req_ms_info, /* Requested MS information */
+ NULL, /* UE network capability */
+ de_gmm_eutran_irat_info_container, /* E-UTRAN inter RAT information container */
+ de_gmm_voice_domain_pref, /* Voice domain preference and UE's usage setting */
/* Session Management Information Elements 10.5.6 */
de_sm_apn, /* Access Point Name */
de_sm_nsapi, /* Network Service Access Point Identifier */
@@ -4423,6 +4631,7 @@ guint16 (*gm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
de_sm_mbms_prot_conf_opt, /* MBMS protocol configuration options */
de_sm_enh_nsapi, /* Enhanced network service access point identifier */
de_sm_req_type, /* Request type */
+ de_sm_notif_ind, /* Notification indicator */
/* GPRS Common Information Elements 10.5.7 */
de_gc_context_stat, /* PDP Context Status */
de_gc_radio_prio, /* Radio Priority */
@@ -4430,6 +4639,7 @@ guint16 (*gm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
de_gc_timer2, /* GPRS Timer 2 */
de_gc_radio_prio2, /* Radio Priority 2 */
de_gc_mbms_context_stat,/* 10.5.7.6 MBMS context status */
+ de_gc_uplink_data_stat, /* 10.5.7.7 Uplink data status */
NULL, /* NONE */
};
@@ -4476,6 +4686,20 @@ dtap_gmm_attach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TV_SHORT( 0x90 , GSM_A_PDU_TYPE_GM, DE_TMSI_STAT , NULL);
ELEM_OPT_TLV( 0x33 , GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP , NULL);
+
+ ELEM_OPT_TLV(0x11, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_2, NULL);
+
+ ELEM_OPT_TLV(0x20, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_3, NULL);
+
+ ELEM_OPT_TLV(0x40, GSM_A_PDU_TYPE_DTAP, DE_SUP_CODEC_LIST, NULL);
+
+ ELEM_OPT_TLV(0x58, NAS_PDU_TYPE_EMM, DE_EMM_UE_NET_CAP, NULL);
+
+ ELEM_OPT_TLV(0x1A, GSM_A_PDU_TYPE_COMMON, DE_MID, " - Additional mobile identity");
+
+ ELEM_OPT_TLV(0x1B, GSM_A_PDU_TYPE_GM, DE_RAI_2, " - Additional old routing area identification");
+
+ ELEM_OPT_TLV(0x5D, GSM_A_PDU_TYPE_GM, DE_VOICE_DOMAIN_PREF, NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -4530,6 +4754,12 @@ dtap_gmm_attach_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TV_SHORT( 0xB0 , GSM_A_PDU_TYPE_GM, DE_NET_FEAT_SUP , NULL);
ELEM_OPT_TLV( 0x34 , GSM_A_PDU_TYPE_DTAP, DE_EMERGENCY_NUM_LIST , NULL);
+
+ ELEM_OPT_TV_SHORT( 0xA0 , GSM_A_PDU_TYPE_GM , DE_REQ_MS_INFO , NULL);
+
+ ELEM_OPT_TLV( 0x37 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3319" );
+
+ ELEM_OPT_TLV( 0x38 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3323" );
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -4542,7 +4772,7 @@ dtap_gmm_attach_com(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
{
guint32 curr_offset;
-/* guint32 consumed; */
+ guint32 consumed;
guint curr_len;
curr_offset = offset;
@@ -4550,6 +4780,10 @@ dtap_gmm_attach_com(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
pinfo->p2p_dir = P2P_DIR_RECV;
+ ELEM_OPT_TLV(0x27, GSM_A_PDU_TYPE_GM, DE_RAT_INFO_CONTAINER, " - Inter RAT handover information");
+
+ ELEM_OPT_TLV(0x2B, GSM_A_PDU_TYPE_GM, DE_EUTRAN_IRAT_INFO_CONTAINER, " - E-UTRAN inter RAT handover information");
+
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -4601,7 +4835,7 @@ dtap_gmm_detach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_OPT_TLV( 0x18 , GSM_A_PDU_TYPE_COMMON, DE_MID , " - P-TMSI" );
- ELEM_OPT_TLV( 0x19 , GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG , NULL);
+ ELEM_OPT_TLV( 0x19 , GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG_2 , NULL);
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -4658,7 +4892,7 @@ dtap_gmm_ptmsi_realloc_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo,
ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_FORCE_TO_STAND, NULL);
- ELEM_OPT_TV( 0x19 , GSM_A_PDU_TYPE_COMMON, DE_MID , " - P-TMSI Signature" );
+ ELEM_OPT_TV( 0x19 , GSM_A_PDU_TYPE_GM, DE_P_TMSI_SIG , " - P-TMSI Signature" );
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -4905,6 +5139,22 @@ dtap_gmm_rau_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
ELEM_OPT_TLV( 0x33 , GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP , NULL);
+ ELEM_OPT_TLV(0x35, GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS, NULL);
+
+ ELEM_OPT_TLV(0x58, NAS_PDU_TYPE_EMM, DE_EMM_UE_NET_CAP, NULL);
+
+ ELEM_OPT_TLV(0x1A, GSM_A_PDU_TYPE_COMMON, DE_MID, " - Additional mobile identity");
+
+ ELEM_OPT_TLV(0x1B, GSM_A_PDU_TYPE_GM, DE_RAI_2, " - Additional old routing area identification");
+
+ ELEM_OPT_TLV(0x11, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_2, NULL);
+
+ ELEM_OPT_TLV(0x20, GSM_A_PDU_TYPE_COMMON, DE_MS_CM_3, NULL);
+
+ ELEM_OPT_TLV(0x40, GSM_A_PDU_TYPE_DTAP, DE_SUP_CODEC_LIST, NULL);
+
+ ELEM_OPT_TLV(0x5D, GSM_A_PDU_TYPE_GM, DE_VOICE_DOMAIN_PREF, NULL);
+
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -4937,7 +5187,7 @@ dtap_gmm_rau_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
ELEM_OPT_TLV( 0x18 , GSM_A_PDU_TYPE_COMMON, DE_MID , " - Allocated P-TMSI");
- ELEM_OPT_TLV( 0x23 , GSM_A_PDU_TYPE_COMMON, DE_MID , NULL);
+ ELEM_OPT_TLV( 0x23 , GSM_A_PDU_TYPE_COMMON, DE_MID , " - MS identity");
ELEM_OPT_TLV( 0x26 , GSM_A_PDU_TYPE_GM, DE_REC_N_PDU_NUM_LIST , NULL);
@@ -4957,6 +5207,14 @@ dtap_gmm_rau_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
ELEM_OPT_TLV( 0x34 , GSM_A_PDU_TYPE_DTAP, DE_EMERGENCY_NUM_LIST , NULL);
+ ELEM_OPT_TLV(0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS , NULL);
+
+ ELEM_OPT_TV_SHORT(0xA0 , GSM_A_PDU_TYPE_GM , DE_REQ_MS_INFO , NULL);
+
+ ELEM_OPT_TLV(0x37 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3319");
+
+ ELEM_OPT_TLV(0x38 , GSM_A_PDU_TYPE_GM, DE_GPRS_TIMER_2 , " - T3323");
+
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -4977,8 +5235,9 @@ dtap_gmm_rau_com(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of
/* [7] 10.5.5.11 */
ELEM_OPT_TLV( 0x26 , GSM_A_PDU_TYPE_GM, DE_REC_N_PDU_NUM_LIST , NULL);
/* Inter RAT information container 10.5.5.24 TS 24.008 version 6.8.0 Release 6 */
- /*TO DO: Implement */
- ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_RAT_INFO_CONTAINER , NULL);
+ ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_RAT_INFO_CONTAINER , " - Inter RAT handover information");
+
+ ELEM_OPT_TLV(0x2B, GSM_A_PDU_TYPE_GM, DE_EUTRAN_IRAT_INFO_CONTAINER, " - E-UTRAN inter RAT handover information");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5092,6 +5351,8 @@ dtap_gmm_service_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint3
/* MBMS context status 10.5.7.6 TLV 2 - 18 */
ELEM_OPT_TLV( 0x35 , GSM_A_PDU_TYPE_GM, DE_MBMS_CTX_STATUS , NULL);
+ ELEM_OPT_TLV(0x36, GSM_A_PDU_TYPE_GM, DE_UPLINK_DATA_STATUS, NULL);
+
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5204,13 +5465,13 @@ dtap_sm_act_pdp_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32
ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_RAD_PRIO, NULL);
- ELEM_OPT_TLV( 0x2B , GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR , NULL);
+ ELEM_OPT_TLV( 0x2B , GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR , " - PDP address");
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
ELEM_OPT_TLV( 0x34 , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
- ELEM_OPT_TLV( 0x39 , GSM_A_PDU_TYPE_GM, DE_SM_CAUSE_2, NULL );
+ ELEM_OPT_TLV( 0x39 , GSM_A_PDU_TYPE_GM, DE_SM_CAUSE_2, " - SM cause");
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5419,12 +5680,14 @@ dtap_sm_mod_pdp_req_net(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gui
ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_QOS , " - New QoS" );
- ELEM_OPT_TLV( 0x2B , GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR , NULL);
+ ELEM_OPT_TLV( 0x2B , GSM_A_PDU_TYPE_GM, DE_PD_PRO_ADDR , " - PDP address");
ELEM_OPT_TLV( 0x34 , GSM_A_PDU_TYPE_GM, DE_PACKET_FLOW_ID , NULL);
ELEM_OPT_TLV( 0x27 , GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT , NULL);
+ ELEM_OPT_TLV(0x36 , GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE , NULL);
+
EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
}
@@ -5592,6 +5855,80 @@ dtap_sm_deact_pdp_acc(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint
}
/*
+ * [8] 9.5.15a Request Secondary PDP Context Activation
+ * Direction: network to MS
+ */
+static void
+dtap_sm_req_sec_pdp_act(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ pinfo->p2p_dir = P2P_DIR_UNKNOWN;
+ pinfo->link_dir = P2P_DIR_DL;
+
+ ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_QOS , " - Required QoS");
+
+ ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_LINKED_TI , NULL);
+
+ ELEM_OPT_TLV(0x36, GSM_A_PDU_TYPE_GM, DE_TRAFFIC_FLOW_TEMPLATE, NULL);
+
+ ELEM_OPT_TLV(0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
+
+ EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
+}
+
+/*
+ * [8] 9.5.15b Request Secondary PDP Context Activation Reject
+ * Direction: MS to network
+ */
+static void
+dtap_sm_req_sec_pdp_act_rej(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ pinfo->p2p_dir = P2P_DIR_UNKNOWN;
+ pinfo->link_dir = P2P_DIR_UL;
+
+ ELEM_MAND_V(GSM_A_PDU_TYPE_GM, DE_SM_CAUSE, NULL);
+
+ ELEM_OPT_TLV(0x27, GSM_A_PDU_TYPE_GM, DE_PRO_CONF_OPT, NULL);
+
+ EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
+}
+
+/*
+ * [8] 9.5.16a Notification
+ * Direction: network to MS
+ */
+static void
+dtap_sm_notif(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ pinfo->p2p_dir = P2P_DIR_UNKNOWN;
+ pinfo->link_dir = P2P_DIR_DL;
+
+ ELEM_MAND_LV(GSM_A_PDU_TYPE_GM, DE_SM_NOTIF_IND, NULL);
+
+ EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, pinfo);
+}
+
+/*
* [8] 9.5.21 SM Status
* Direction: both
*/
@@ -5806,6 +6143,9 @@ static void (*dtap_msg_sm_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *p
dtap_sm_act_mbms_rej, /* Activate MBMS Context Reject */
dtap_sm_req_mbms_act, /* Request MBMS Context Activation */
dtap_sm_req_mbms_rej, /* Request MBMS Context Activation Reject */
+ dtap_sm_req_sec_pdp_act, /* Request Secondary PDP Context Activation */
+ dtap_sm_req_sec_pdp_act_rej,/* Request Secondary PDP Context Activation Reject */
+ dtap_sm_notif, /* Notification */
NULL, /* NONE */
};
@@ -6114,6 +6454,61 @@ proto_register_gsm_a_gm(void)
FT_UINT8, BASE_DEC, NULL, 0x1f,
NULL, HFILL }
},
+ { &hf_gsm_a_gm_nsapi_5_ul_stat,
+ { "NSAPI(5) uplink status", "gsm_a.gm.nsapi_5_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_6_ul_stat,
+ { "NSAPI(6) uplink status", "gsm_a.gm.nsapi_6_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_7_ul_stat,
+ { "NSAPI(7) uplink status", "gsm_a.gm.nsapi_7_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_8_ul_stat,
+ { "NSAPI(8) uplink status", "gsm_a.gm.nsapi_8_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_9_ul_stat,
+ { "NSAPI(9) uplink status", "gsm_a.gm.nsapi_9_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_10_ul_stat,
+ { "NSAPI(10) uplink status", "gsm_a.gm.nsapi_10_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_11_ul_stat,
+ { "NSAPI(11) uplink status", "gsm_a.gm.nsapi_11_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_12_ul_stat,
+ { "NSAPI(12) uplink status", "gsm_a.gm.nsapi_12_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_13_ul_stat,
+ { "NSAPI(13) uplink status", "gsm_a.gm.nsapi_13_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_14_ul_stat,
+ { "NSAPI(14) uplink status", "gsm_a.gm.nsapi_14_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_nsapi_15_ul_stat,
+ { "NSAPI(15) uplink status", "gsm_a.gm.nsapi_15_ul_stat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_nsapi_ul_stat_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_gm_pco_pid,
{ "Protocol or Container ID", "gsm_a.gm.pco_pid",
FT_UINT16, BASE_DEC, NULL, 0x0,
@@ -6159,6 +6554,26 @@ proto_register_gsm_a_gm(void)
FT_BOOLEAN, 8, TFS(&gsm_a_gm_gps_c_vals), 0x01,
NULL, HFILL }
},
+ { &hf_gsm_a_gm_req_ms_info_irat,
+ { "I-RAT","gsm_a.gm.req_ms_info_irat",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_req_ms_info_irat_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_req_ms_info_irat2,
+ { "I-RAT2","gsm_a.gm.req_ms_info_irat2",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_req_ms_info_irat2_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_ue_usage_setting,
+ { "UE's usage setting","gsm_a.gm.ue_usage_setting",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gm_ue_usage_setting_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_a_gm_voice_domain_pref_for_eutran,
+ { "Voice domain preference for E-UTRAN","gsm_a.gm.voice_domain_pref_for_eutran",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_gm_voice_domain_pref_for_eutran_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_sm_pdp_type_org,
{ "PDP type organization", "gsm_a.sm.pdp_type_org",
FT_UINT8, BASE_DEC, VALS(gsm_a_sm_pdp_type_org_vals), 0x0f,
@@ -6354,9 +6769,9 @@ proto_register_gsm_a_gm(void)
FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_ps_irat_s1_vals), 0x40,
NULL, HFILL }
},
- { &hf_gsm_a_gmm_net_cap_csfb,
- { "CSFB Capability", "gsm_a.gmm.net_cap.csfb",
- FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_csfb_vals), 0x20,
+ { &hf_gsm_a_gmm_net_cap_comb_proc,
+ { "EMM Combined procedures capability", "gsm_a.gmm.net_cap.comb_proc",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_comb_proc_vals), 0x20,
NULL, HFILL }
},
{ &hf_gsm_a_gmm_net_cap_isr,
@@ -6374,6 +6789,11 @@ proto_register_gsm_a_gm(void)
FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_epc_vals), 0x04,
NULL, HFILL }
},
+ { &hf_gsm_a_gmm_net_cap_nf,
+ { "NF Capability", "gsm_a.gmm.net_cap.nf",
+ FT_BOOLEAN, 8, TFS(&gsm_a_gmm_net_cap_nf_vals), 0x02,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_sm_tmgi,
{ "Temporary Mobile Group Identity (TMGI)", "gsm_a.sm.tmgi",
FT_UINT24, BASE_HEX, NULL, 0x0,
@@ -6389,6 +6809,11 @@ proto_register_gsm_a_gm(void)
FT_UINT8, BASE_DEC, VALS(gsm_a_sm_req_type_vals), 0x07,
NULL, HFILL }
},
+ { &hf_gsm_a_sm_notif_ind,
+ { "Notification indicator value", "gsm_a.sm.notif_ind",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sm_notif_ind_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_gsm_a_gm_rac_ctrled_early_cm_sending,
{ "Controlled early Classmark Sending", "gsm_a.gm.rac.comp_int_meas_cap",
FT_BOOLEAN, 8, TFS(&tfs_implemented_not_implemented), 0x0,
@@ -6514,4 +6939,5 @@ proto_reg_handoff_gsm_a_gm(void)
{
data_handle = find_dissector("data");
rrc_irat_ho_info_handle = find_dissector("rrc.irat.irat_ho_info");
+ lte_rrc_ue_eutra_cap_handle = find_dissector("lte-rrc.ue_eutra_cap");
}
diff --git a/epan/dissectors/packet-nas_eps.c b/epan/dissectors/packet-nas_eps.c
index efe0b22c64..10b183861d 100644
--- a/epan/dissectors/packet-nas_eps.c
+++ b/epan/dissectors/packet-nas_eps.c
@@ -23,7 +23,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * References: 3GPP TS 24.301 V9.0.0 (2009-09)
+ * References: 3GPP TS 24.301 V9.6.0 (2011-03)
*/
#ifdef HAVE_CONFIG_H
@@ -77,7 +77,9 @@ static int hf_nas_eps_emm_ebi13 = -1;
static int hf_nas_eps_emm_ebi14 = -1;
static int hf_nas_eps_emm_ebi15 = -1;
static int hf_nas_eps_emm_dl_nas_cnt = -1;
-static int hf_nas_eps_emm_nounce_mme = -1;
+static int hf_nas_eps_emm_nonce_mme = -1;
+static int hf_nas_eps_emm_nonce = -1;
+static int hf_nas_eps_emm_paging_id = -1;
static int hf_nas_eps_emm_eps_att_type = -1;
static int hf_nas_eps_emm_cs_lcs_type = -1;
static int hf_nas_eps_emm_epc_lcs_type = -1;
@@ -133,7 +135,6 @@ static int hf_nas_eps_emm_uea5 = -1;
static int hf_nas_eps_emm_uea6 = -1;
static int hf_nas_eps_emm_uea7 = -1;
static int hf_nas_eps_emm_ucs2_supp = -1;
-static int hf_nas_eps_emm_uia0 = -1;
static int hf_nas_eps_emm_uia1 = -1;
static int hf_nas_eps_emm_uia2 = -1;
static int hf_nas_eps_emm_uia3 = -1;
@@ -148,10 +149,14 @@ static int hf_nas_eps_emm_gea4 = -1;
static int hf_nas_eps_emm_gea5 = -1;
static int hf_nas_eps_emm_gea6 = -1;
static int hf_nas_eps_emm_gea7 = -1;
+static int hf_nas_eps_emm_lpp_cap = -1;
+static int hf_nas_eps_emm_lcs_cap = -1;
static int hf_nas_eps_emm_1xsrvcc_cap = -1;
+static int hf_nas_eps_emm_nf_cap = -1;
static int hf_nas_eps_emm_ue_ra_cap_inf_upd_need_flg;
static int hf_nas_eps_emm_ss_code = -1;
static int hf_nas_eps_emm_lcs_ind = -1;
+static int hf_nas_eps_emm_gen_msg_cont_type = -1;
static int hf_nas_eps_emm_apn_ambr_ul = -1;
static int hf_nas_eps_emm_apn_ambr_dl = -1;
static int hf_nas_eps_emm_apn_ambr_ul_ext = -1;
@@ -176,6 +181,7 @@ static int hf_nas_eps_egbr_dl = -1;
static int hf_nas_eps_esm_cause = -1;
static int hf_nas_eps_esm_eit = -1;
static int hf_nas_eps_esm_lnkd_eps_bearer_id = -1;
+static int hf_nas_eps_esm_notif_ind = -1;
static int hf_nas_eps_esm_pdn_type = -1;
static int hf_nas_eps_esm_pdn_ipv4 = -1;
static int hf_nas_eps_esm_pdn_ipv6_if_id = -1;
@@ -291,6 +297,7 @@ static const value_string security_header_type_vals[] = {
static value_string_ext security_header_type_vals_ext = VALUE_STRING_EXT_INIT(security_header_type_vals);
const value_string nas_eps_common_elem_strings[] = {
+ { 0x00, "Additional information" }, /* 9.9.2.0 Additional information */
{ 0x00, "EPS bearer context status" }, /* 9.9.2.1 EPS bearer context status */
{ 0x00, "Location area identification" }, /* 9.9.2.2 Location area identification */
{ 0x00, "Mobile identity" }, /* 9.9.2.3 Mobile identity */
@@ -344,6 +351,7 @@ gint ett_nas_eps_common_elem[NUM_NAS_EPS_COMMON_ELEM];
typedef enum
{
+ DE_EPS_CMN_ADD_INFO, /* 9.9.2.0 Additional information */
DE_EPS_CMN_EPS_BE_CTX_STATUS, /* 9.9.2.1 EPS bearer context status */
DE_EPS_CMN_LOC_AREA_ID, /* 9.9.2.2 Location area identification */
DE_EPS_CMN_MOB_ID, /* 9.9.2.3 Mobile identity */
@@ -361,6 +369,15 @@ nas_eps_common_elem_idx_t;
* 9.9.2 Common information elements
*/
+/* 9.9.2.0 Additional information */
+static guint16
+de_eps_cmn_add_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ proto_tree_add_text(tree, tvb, offset, len, "Not dissected yet");
+
+ return(len);
+}
+
/*
* 9.9.2.1 EPS bearer context status
*/
@@ -417,17 +434,6 @@ de_eps_cmn_eps_be_ctx_status(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
* 9.9.2.5 Mobile station classmark 3
* See subclause 10.5.1.7 in 3GPP TS 24.008 [13].
*/
-/*
- * 9.9.2.8 PLMN list
- * See subclause 10.5.1.13 in 3GPP TS 24.008 [6].
- */
-/*
- * 9.9.2.7 Spare half octet
- * This element is used in the description of EMM and ESM messages when an odd number of
- * half octet type 1 information elements are used. This element is filled with spare bits
- * set to zero and is placed in bits 5 to 8 of the octet unless otherwise specified.
- * Coded Inline
- */
/*
* 9.9.2.6 NAS security parameters from E-UTRA
@@ -461,7 +467,7 @@ de_sec_par_to_eutra(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
/* NonceMME value (octet 1 to 5)
* This field is coded as the nonce value in the Nonce information element (see subclause 9.9.3.25).
*/
- proto_tree_add_item(tree, hf_nas_eps_emm_nounce_mme, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_nas_eps_emm_nonce_mme, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
curr_offset+=4;
/* type of ciphering algorithm (octet 6, bit 5 to 7)
* These fields are coded as the type of integrity protection algorithm and type of ciphering algorithm
@@ -491,13 +497,26 @@ de_sec_par_to_eutra(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui
}
/*
+ * 9.9.2.8 PLMN list
+ * See subclause 10.5.1.13 in 3GPP TS 24.008 [6].
+ */
+/*
+ * 9.9.2.9 Spare half octet
+ * This element is used in the description of EMM and ESM messages when an odd number of
+ * half octet type 1 information elements are used. This element is filled with spare bits
+ * set to zero and is placed in bits 5 to 8 of the octet unless otherwise specified.
+ * Coded Inline
+ */
+
+/*
* 9.9.2.10 Supported codec list
* See subclause 10.5.4.32 in 3GPP TS 24.008 [13].
- * Dissectecd in packet-gsm_a_dtap.c
+ * Dissected in packet-gsm_a_dtap.c
*/
guint16 (*nas_eps_common_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string, int string_len) = {
/* 9.9.2 Common information elements */
+ de_eps_cmn_add_info, /* 9.9.2.0 Additional information */
de_eps_cmn_eps_be_ctx_status, /* 9.9.2.1 EPS bearer context status */
de_lai, /* 9.9.2.2 Location area identification */
de_mid, /* 9.9.2.3 Mobile identity See subclause 10.5.1.4 in 3GPP TS 24.008*/
@@ -566,7 +585,7 @@ gint ett_nas_eps_emm_elem[NUM_NAS_EMM_ELEM];
#if 0
This enum has been moved to packet-gsm_a_common to
-make it possible to use element dissecton from this dissector
+make it possible to use element dissection from this dissector
in other dissectors.
It is left here as a comment for easier reference.
@@ -753,6 +772,12 @@ de_emm_csfb_resp(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
static const value_string nas_eps_emm_switch_off_vals[] = {
{ 0x0, "Normal detach"},
{ 0x1, "Switch off"},
+ { 0x2, "Reserved"},
+ { 0x3, "Reserved"},
+ { 0x4, "Reserved"},
+ { 0x5, "Reserved"},
+ { 0x6, "Reserved"},
+ { 0x7, "Reserved"},
{ 0, NULL }
};
/* Type of detach (octet 1)
@@ -777,8 +802,8 @@ static const value_string nas_eps_emm_type_of_dtatch_DL_vals[] = {
{ 0x1, "Re-attach required"},
{ 0x2, "Re-attach not required"},
{ 0x3, "IMSI detach"},
- { 0x4, "IMSI detach"}, /* All other values are interpreted as "re-attach not required" in this version of the protocol.*/
- { 0x5, "IMSI detach"}, /* -"- */
+ { 0x4, "Re-attach not required"}, /* All other values are interpreted as "re-attach not required" in this version of the protocol.*/
+ { 0x5, "Re-attach not required"}, /* -"- */
{ 0x6, "Reserved"},
{ 0x7, "Reserved"},
{ 0, NULL }
@@ -792,7 +817,7 @@ static const value_string nas_eps_emm_type_of_dtatch_DL_vals[] = {
* 9.9.3.9 EMM cause
*/
static const value_string nas_eps_emm_cause_values[] = {
- { 0x2, "IMSI unknown in HLR"},
+ { 0x2, "IMSI unknown in HSS"},
{ 0x3, "Illegal UE"},
{ 0x5, "IMEI not accepted"},
{ 0x6, "Illegal ME"},
@@ -816,8 +841,7 @@ static const value_string nas_eps_emm_cause_values[] = {
{ 0x18, "Security mode rejected, unspecified"},
{ 0x19, "Not authorized for this CSG"},
{ 0x1a, "Non-EPS authentication unacceptable"},
- { 0x26, "CS fallback call establishment not allowed"},
- { 0x27, "CS service temporarily not available"},
+ { 0x27, "CS domain temporarily not available"},
{ 0x28, "No EPS bearer context activated"},
{ 0x5f, "Semantically incorrect message"},
{ 0x60, "Invalid mandatory information"},
@@ -1029,8 +1053,12 @@ de_emm_eps_net_feature_sup(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
static const value_string nas_eps_emm_eps_update_result_vals[] = {
{ 0, "TA updated"},
{ 1, "Combined TA/LA updated"},
- { 2, "TA updated and ISR activated"},
- { 3, "Combined TA/LA updated and ISR activated"},
+ { 2, "Reserved"},
+ { 3, "Reserved"},
+ { 4, "TA updated and ISR activated"},
+ { 5, "Combined TA/LA updated and ISR activated"},
+ { 6, "Reserved"},
+ { 7, "Reserved"},
{ 0, NULL }
};
@@ -1047,8 +1075,10 @@ static const value_string nas_eps_emm_eps_update_type_vals[] = {
{ 1, "Combined TA/LA updating"},
{ 2, "Combined TA/LA updating with IMSI attach"},
{ 3, "Periodic updating"},
- { 4, "unused; shall be interpreted as 'TA updating', if received by the network"},
- { 5, "unused; shall be interpreted as 'TA updating', if received by the network"},
+ { 4, "Unused; shall be interpreted as 'TA updating', if received by the network"},
+ { 5, "Unused; shall be interpreted as 'TA updating', if received by the network"},
+ { 6, "Reserved"},
+ { 7, "Reserved"},
{ 0, NULL }
};
@@ -1156,8 +1186,8 @@ de_emm_nas_ksi_and_seq_no(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
* Type of security context flag (TSC) (octet 1)
*/
static const value_string nas_eps_tsc_vals[] = {
- { 0, "Native security context"},
- { 1, "Mapped security context"},
+ { 0, "Native security context (for KSIasme)"},
+ { 1, "Mapped security context (for KSIsgsn)"},
{ 0, NULL }
};
@@ -1297,7 +1327,6 @@ de_emm_nas_sec_alsgs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
*/
/*
* 9.9.3.25 Nonce
- * Editor's note: The coding of this information element is FFS.
*/
static guint16
de_emm_nonce(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
@@ -1306,15 +1335,19 @@ de_emm_nonce(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 of
curr_offset = offset;
-
- proto_tree_add_text(tree, tvb, curr_offset, 4 , "Nounce");
- curr_offset+=5;
+ proto_tree_add_item(tree, hf_nas_eps_emm_nonce, tvb, curr_offset, 4, ENC_BIG_ENDIAN);
+ curr_offset+=4;
return(len);
}
/*
* 9.9.3.25A Paging identity
*/
+ static const true_false_string nas_eps_emm_paging_id_vals = {
+ "TMSI",
+ "IMSI"
+};
+
static guint16
de_emm_paging_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
@@ -1322,8 +1355,8 @@ de_emm_paging_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
curr_offset = offset;
-
- proto_tree_add_text(tree, tvb, curr_offset, len , "Paging identity value (Not dissected yet)");
+ proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, curr_offset<<3, 7, ENC_BIG_ENDIAN);
+ proto_tree_add_bits_item(tree, hf_nas_eps_emm_paging_id, tvb, (curr_offset<<3)+7, 1, ENC_BIG_ENDIAN);
curr_offset+=len;
return(len);
@@ -1497,11 +1530,26 @@ static const true_false_string nas_eps_emm_ucs2_supp_flg_value = {
"The UE has no preference between the use of the default alphabet and the use of UCS2",
"The UE has a preference for the default alphabet"
};
+/* LPP capability (octet 7, bit 4) */
+static const true_false_string nas_eps_emm_lpp_cap_flg = {
+ "LTE Positioning Protocol supported",
+ "LTE Positioning Protocol not supported"
+};
+/* LCS capability (octet 7, bit 3) */
+static const true_false_string nas_eps_emm_lcs_cap_flg = {
+ "Location services notification mechanisms supported",
+ "Location services notification mechanisms not supported"
+};
/* 1xSRVCC capability (octet 7, bit 2) */
static const true_false_string nas_eps_emm_1xsrvcc_cap_flg = {
- "SRVCC from E-UTRAN to cdma2000 1xCS supported",
+ "SRVCC from E-UTRAN to cdma2000 1xCS supported",
"SRVCC from E-UTRAN to cdma2000 1x CS not supported"
};
+/* NF capability (octet 7, bit 1) */
+static const true_false_string nas_eps_emm_nf_cap_flg = {
+ "Notification procedure supported",
+ "Notification procedure not supported"
+};
guint16
de_emm_ue_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -1604,11 +1652,17 @@ de_emm_ue_net_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
if ((curr_offset - offset) >= len)
return (len);
- /* Bits 8 to 3 and bit 1 of octet 7 are spare and shall be coded as zero. */
- proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, (curr_offset<<3), 6, ENC_BIG_ENDIAN);
+ /* Bits 8 to 5 of octet 7 are spare and shall be coded as zero. */
+ proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, (curr_offset<<3), 4, ENC_BIG_ENDIAN);
+ /* LPP capability (octet 7, bit 4) */
+ proto_tree_add_item(tree, hf_nas_eps_emm_lpp_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* LCS capability (octet 7, bit 3) */
+ proto_tree_add_item(tree, hf_nas_eps_emm_lcs_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* 1xSRVCC capability (octet 7, bit 2) */
proto_tree_add_item(tree, hf_nas_eps_emm_1xsrvcc_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, (curr_offset<<3)+7, 1, ENC_BIG_ENDIAN);
+ /* NF capability (octet 7, bit 1) */
+ proto_tree_add_item(tree, hf_nas_eps_emm_nf_cap, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
return(len);
}
@@ -1644,6 +1698,7 @@ de_emm_ue_sec_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
curr_offset = offset;
+ /* EPS encryption algorithms supported (octet 3) */
/* EPS encryption algorithm EEA0 supported (octet 3, bit 8) */
proto_tree_add_item(tree, hf_nas_eps_emm_eea0, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* EPS encryption algorithm 128-EEA1 supported (octet 3, bit 7) */
@@ -1689,9 +1744,7 @@ de_emm_ue_sec_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
if(len==2)
return(len);
- /* UMTS encryption algorithms supported (octet 5)
- * UMTS encryption algorithm UEA0 supported (octet 5, bit 8)
- */
+ /* UMTS encryption algorithms supported (octet 5) */
/* UMTS encryption algorithm UEA0 supported (octet 5, bit 8) */
proto_tree_add_item(tree, hf_nas_eps_emm_uea0, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* UMTS encryption algorithm UEA1 supported (octet 5, bit 7) */
@@ -1710,8 +1763,9 @@ de_emm_ue_sec_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
proto_tree_add_item(tree, hf_nas_eps_emm_uea7, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
curr_offset++;
- /* UMTS integrity algorithm UIA0 supported (octet 6, bit ) */
- proto_tree_add_item(tree, hf_nas_eps_emm_uia0, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* UMTS integrity algorithms supported (octet 6) */
+ /* Bit 8 of octet 6 is spare and shall be coded as zero. */
+ proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, (curr_offset<<3), 1, ENC_BIG_ENDIAN);
/* UMTS integrity algorithm UIA1 supported (octet 6, bit 7) */
proto_tree_add_item(tree, hf_nas_eps_emm_uia1, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* UMTS integrity algorithm UIA2 supported (octet 6, bit 6) */
@@ -1730,6 +1784,7 @@ de_emm_ue_sec_cap(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
if(len==4)
return(len);
+
/* Bit 8 of octet 7 is spare and shall be coded as zero. */
proto_tree_add_bits_item(tree, hf_nas_eps_spare_bits, tvb, (curr_offset<<3), 1, ENC_BIG_ENDIAN);
/* GPRS encryption algorithm GEA1 supported (octet 7, bit 7) */
@@ -1833,6 +1888,12 @@ de_emm_lcs_client_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
/*
* 9.9.3.42 Generic message container type
*/
+static const value_string nas_eps_emm_gen_msg_cont_type_vals[] = {
+ { 0, "Reserved"},
+ { 1, "LTE Positioning Protocol (LPP) message container"},
+ { 2, "Location services message container "},
+ { 0, NULL }
+};
static guint16
de_emm_gen_msg_cont_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
@@ -1841,7 +1902,8 @@ de_emm_gen_msg_cont_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
curr_offset = offset;
- proto_tree_add_text(tree, tvb, offset, len, "Not dissected yet");
+ proto_tree_add_item(tree, hf_nas_eps_emm_gen_msg_cont_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ curr_offset++;
return(len);
}
@@ -1851,29 +1913,17 @@ de_emm_gen_msg_cont_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
static guint16
de_emm_gen_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
- guint32 curr_offset;
-
- curr_offset = offset;
-
proto_tree_add_text(tree, tvb, offset, len, "Not dissected yet");
return(len);
}
/*
* 9.9.3.44 Voice domain preference and UE's usage setting
+ * See subclause 10.5.5.28 in 3GPP TS 24.008 [13].
+ * packet-gsm_a_dtap.c
*/
-static guint16
-de_emm_gen_voice_dmn_pref(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
-{
- guint32 curr_offset;
- curr_offset = offset;
-
- proto_tree_add_text(tree, tvb, offset, len, "Not dissected yet");
-
- return(len);
-}
-/*
+ /*
* 9.9.4 EPS Session Management (ESM) information elements
*/
@@ -2159,7 +2209,7 @@ static const value_string nas_eps_esm_cause_vals[] = {
{ 0x24, "Regular deactivation"},
{ 0x25, "EPS QoS not accepted"},
{ 0x26, "Network failure"},
- { 0x28, "Feature not supported"},
+ { 0x27, "Reactivation requested"},
{ 0x29, "Semantic error in the TFT operation"},
{ 0x2a, "Syntactical error in the TFT operation"},
{ 0x2b, "Invalid EPS bearer identity"},
@@ -2262,10 +2312,33 @@ de_esm_lnkd_eps_bearer_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
return(len);
}
+
/*
* 9.9.4.7 LLC service access point identifier
* See subclause 10.5.6.9 in 3GPP TS 24.008
*/
+
+/*
+ * 9.9.4.7a Notification indicator
+ */
+static const value_string nas_eps_esm_notif_ind_vals[] = {
+ { 0x0, "Reserved"},
+ { 0x1, "SRVCC handover cancelled, IMS session re-establishment required"},
+ { 0, NULL }
+};
+
+static guint16
+de_esm_notif_ind(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ proto_tree_add_item(tree, hf_nas_eps_esm_notif_ind, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+
+ return(len);
+}
+
/*
* 9.9.4.8 Packet flow identifier
* See subclause 10.5.6.11 in 3GPP TS 24.008
@@ -2330,6 +2403,7 @@ static const value_string nas_eps_esm_pdn_type_values[] = {
{ 0x1, "IPv4" },
{ 0x2, "IPv6" },
{ 0x3, "IPv4v6" },
+ { 0x4, "Unused; shall be interpreted as IPv6 if received by the network" },
{ 0, NULL }
};
@@ -2416,7 +2490,7 @@ guint16 (*emm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
de_emm_lcs_client_id, /* 9.9.3.41 LCS client identity */
de_emm_gen_msg_cont_type, /* 9.9.3.42 Generic message container type */
de_emm_gen_msg_cont, /* 9.9.3.43 Generic message container */
- de_emm_gen_voice_dmn_pref, /* 9.9.3.44 Voice domain preference and UE's usage setting */
+ NULL, /* 9.9.3.44 Voice domain preference and UE's usage setting */
NULL, /* NONE */
};
@@ -2429,6 +2503,7 @@ const value_string nas_esm_elem_strings[] = {
{ 0x00, "ESM information transfer flag" }, /* 9.9.4.5 ESM information transfer flag */
{ 0x00, "Linked EPS bearer identity" }, /* 9.9.4.6 Linked EPS bearer identity */
{ 0x00, "LLC service access point identifier" }, /* 9.9.4.7 LLC service access point identifier */
+ { 0x00, "Notification indicator" }, /* 9.9.4.7a Notification indicator */
{ 0x00, "Packet flow identifier" }, /* 9.9.4.8 Packet flow identifier */
{ 0x00, "PDN address" }, /* 9.9.4.9 PDN address */
{ 0x00, "PDN type" }, /* 9.9.4.10 PDN type */
@@ -2455,6 +2530,7 @@ typedef enum
DE_ESM_INF_TRF_FLG, /* 9.9.4.5 ESM information transfer flag */
DE_ESM_LNKED_EPS_B_ID, /* 9.9.4.6 Linked EPS bearer identity */
DE_ESM_LLC_SAPI, /* 9.9.4.7 LLC service access point identifier */
+ DE_ESM_NOTIF_IND, /* 9.9.4.7a Notification indicator */
DE_ESM_P_FLW_ID, /* 9.9.4.8 Packet flow identifier */
DE_ESM_PDN_ADDR, /* 9.9.4.9 PDN address */
DE_ESM_PDN_TYPE, /* 9.9.4.10 PDN type */
@@ -2478,6 +2554,7 @@ guint16 (*esm_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
de_esm_inf_trf_flg, /* 9.9.4.5 ESM information transfer flag */
de_esm_lnkd_eps_bearer_id, /* 9.9.4.6 Linked EPS bearer identity */
NULL, /* 9.9.4.7 LLC service access point identifier */
+ de_esm_notif_ind, /* 9.9.4.7a Notification indicator */
NULL, /* 9.9.4.8 Packet flow identifier */
de_esm_pdn_addr, /* 9.9.4.9 PDN address */
NULL, /* 9.9.4.10 PDN type */
@@ -2648,8 +2725,7 @@ nas_emm_attach_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
/* F- Additional update type Additional update type 9.9.3.0B O TV 1 */
ELEM_OPT_TV_SHORT( 0xF0 , NAS_PDU_TYPE_EMM, DE_EMM_ADD_UPD_TYPE, NULL );
/* 5D Voice domain preference and UE's usage setting Voice domain preference and UE's usage setting 9.9.3.44 O TLV 3 */
- /* ELEM_OPT_TLV(0x5D, xxxxxx, xxxxxx, NULL); */
-
+ ELEM_OPT_TLV(0x5D, GSM_A_PDU_TYPE_GM, DE_VOICE_DOMAIN_PREF, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3377,7 +3453,7 @@ nas_emm_trac_area_upd_req(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
/* F- Additional update type Additional update type 9.9.3.0B O TV 1 */
ELEM_OPT_TV_SHORT( 0xF0 , NAS_PDU_TYPE_EMM, DE_EMM_ADD_UPD_TYPE, NULL );
/* 5D Voice domain preference and UE's usage setting Voice domain preference and UE's usage setting 9.9.3.44 O TLV 3 */
- /* ELEM_OPT_TLV(0x5D, xxxxxx, xxxxxx, NULL); */
+ ELEM_OPT_TLV(0x5D, GSM_A_PDU_TYPE_GM, DE_VOICE_DOMAIN_PREF, NULL);
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
@@ -3405,7 +3481,7 @@ nas_emm_ul_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
* 8.2.31 Downlink generic NAS transport
*/
static void
-nas_emm_ul_gen_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_emm_dl_gen_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
guint32 curr_offset;
guint32 consumed;
@@ -3415,17 +3491,20 @@ nas_emm_ul_gen_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
curr_len = len;
/* Generic message container type Generic message container type 9.9.3.42 M V 1 */
- ELEM_MAND_V(NAS_PDU_TYPE_ESM, DE_EMM_GEN_MSG_CONT_TYPE, NULL);
+ ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_GEN_MSG_CONT_TYPE, NULL);
/* Generic message container Generic message container 9.9.3.43 M LV-E 3-n */
- ELEM_MAND_LV_E(NAS_PDU_TYPE_EMM, DE_EMM_GEN_MSG_CONT, NULL)
+ ELEM_MAND_LV_E(NAS_PDU_TYPE_EMM, DE_EMM_GEN_MSG_CONT, NULL)
/* 65 Additional information Additional information 9.9.2.0 O TLV 3-n */
+ ELEM_OPT_TLV(0x65, NAS_PDU_TYPE_EMM, DE_EPS_CMN_ADD_INFO, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
* 8.2.32 Uplink generic NAS transport
*/
static void
-nas_emm_dl_gen_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
+nas_emm_ul_gen_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
guint32 curr_offset;
guint32 consumed;
@@ -3435,11 +3514,13 @@ nas_emm_dl_gen_nas_trans(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
curr_len = len;
/* Generic message container type Generic message container type 9.9.3.42 M V 1 */
- ELEM_MAND_V(NAS_PDU_TYPE_ESM, DE_EMM_GEN_MSG_CONT_TYPE, NULL);
+ ELEM_MAND_V(NAS_PDU_TYPE_EMM, DE_EMM_GEN_MSG_CONT_TYPE, NULL);
/* Generic message container Generic message container 9.9.3.43 M LV-E 3-n */
- ELEM_MAND_LV_E(NAS_PDU_TYPE_EMM, DE_EMM_GEN_MSG_CONT, NULL)
+ ELEM_MAND_LV_E(NAS_PDU_TYPE_EMM, DE_EMM_GEN_MSG_CONT, NULL)
/* 65 Additional information Additional information 9.9.2.0 O TLV 3-n */
+ ELEM_OPT_TLV(0x65, NAS_PDU_TYPE_EMM, DE_EPS_CMN_ADD_INFO, NULL);
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -3952,13 +4033,16 @@ static void
nas_esm_notification(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len)
{
guint32 curr_offset;
+ guint32 consumed;
guint curr_len;
curr_offset = offset;
curr_len = len;
/* Notification indicator Notification indicator 9.9.4.7A M LV 2 */
- proto_tree_add_text(tree, tvb, offset, len, "Not dissected yet");
+ ELEM_MAND_LV(NAS_PDU_TYPE_ESM, DE_ESM_NOTIF_IND, NULL);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
@@ -4159,8 +4243,8 @@ static void (*nas_msg_emm_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *p
nas_emm_dl_nas_trans, /* Downlink NAS transport */
nas_emm_ul_nas_trans, /* Uplink NAS transport */
nas_emm_cs_serv_not, /* 8.2.9 CS service notification */
- nas_emm_ul_gen_nas_trans, /* Downlink generic NAS transport */
- nas_emm_dl_gen_nas_trans, /* Uplink generic NAS transport */
+ nas_emm_dl_gen_nas_trans, /* Downlink generic NAS transport */
+ nas_emm_ul_gen_nas_trans, /* Uplink generic NAS transport */
NULL, /* NONE */
};
@@ -4639,11 +4723,21 @@ void proto_register_nas_eps(void) {
FT_UINT8,BASE_DEC, NULL, 0x0f,
NULL, HFILL }
},
- {&hf_nas_eps_emm_nounce_mme,
- { "NonceMME","nas_eps.emm.nounce_mme",
+ {&hf_nas_eps_emm_nonce_mme,
+ { "NonceMME","nas_eps.emm.nonce_mme",
+ FT_UINT32,BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ {&hf_nas_eps_emm_nonce,
+ { "Nonce","nas_eps.emm.nonce",
FT_UINT32,BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
+ { &hf_nas_eps_emm_paging_id,
+ { "Paging identity value","nas_eps.emm.paging_id",
+ FT_BOOLEAN, 8, TFS(&nas_eps_emm_paging_id_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_nas_eps_emm_eps_att_type,
{ "EPS attach type","nas_eps.emm.eps_att_type",
FT_UINT8,BASE_DEC, VALS(nas_eps_emm_eps_att_type_vals), 0x0,
@@ -4921,11 +5015,6 @@ void proto_register_nas_eps(void) {
FT_BOOLEAN, 8, TFS(&nas_eps_emm_ucs2_supp_flg_value), 0x80,
NULL, HFILL }
},
- { &hf_nas_eps_emm_uia0,
- { "UMTS integrity algorithm UIA0","nas_eps.emm.uia0",
- FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x80,
- NULL, HFILL }
- },
{ &hf_nas_eps_emm_uia1,
{ "UMTS integrity algorithm UIA1","nas_eps.emm.uia1",
FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x40,
@@ -4996,12 +5085,26 @@ void proto_register_nas_eps(void) {
FT_BOOLEAN, 8, TFS(&nas_eps_emm_supported_flg_value), 0x01,
NULL, HFILL }
},
-
+ { &hf_nas_eps_emm_lpp_cap,
+ { "LPP capability","nas_eps.emm.lpp_cap",
+ FT_BOOLEAN, 8, TFS(&nas_eps_emm_lpp_cap_flg), 0x08,
+ NULL, HFILL }
+ },
+ { &hf_nas_eps_emm_lcs_cap,
+ { "LCS capability","nas_eps.emm.lcs_cap",
+ FT_BOOLEAN, 8, TFS(&nas_eps_emm_lcs_cap_flg), 0x04,
+ NULL, HFILL }
+ },
{ &hf_nas_eps_emm_1xsrvcc_cap,
{ "1xSRVCC capability","nas_eps.emm.1xsrvcc_cap",
FT_BOOLEAN, 8, TFS(&nas_eps_emm_1xsrvcc_cap_flg), 0x02,
NULL, HFILL }
},
+ { &hf_nas_eps_emm_nf_cap,
+ { "NF capability","nas_eps.emm.nf_cap",
+ FT_BOOLEAN, 8, TFS(&nas_eps_emm_nf_cap_flg), 0x01,
+ NULL, HFILL }
+ },
{ &hf_nas_eps_emm_ue_ra_cap_inf_upd_need_flg,
{ "1xSRVCC capability","nas_eps.emm.ue_ra_cap_inf_upd_need_flg",
FT_BOOLEAN, 8, TFS(&nas_eps_emm_ue_ra_cap_inf_upd_need_flg), 0x01,
@@ -5017,6 +5120,11 @@ void proto_register_nas_eps(void) {
FT_UINT8,BASE_DEC, VALS(nas_eps_emm_lcs_ind_vals), 0x0,
NULL, HFILL }
},
+ { &hf_nas_eps_emm_gen_msg_cont_type,
+ { "Container type","nas_eps.emm.gen_msg_cont_type",
+ FT_UINT8,BASE_DEC, VALS(nas_eps_emm_gen_msg_cont_type_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_nas_eps_emm_apn_ambr_ul,
{ "APN-AMBR for uplink","nas_eps.emm.apn_ambr_ul",
FT_UINT8,BASE_DEC, NULL, 0x0,
@@ -5122,6 +5230,11 @@ void proto_register_nas_eps(void) {
FT_UINT8,BASE_DEC, VALS(nas_eps_esm_linked_bearer_id_vals), 0x0f,
NULL, HFILL }
},
+ { &hf_nas_eps_esm_notif_ind,
+ { "Notification indicator value","nas_eps.esm.notif_ind",
+ FT_UINT8,BASE_DEC, VALS(nas_eps_esm_notif_ind_vals), 0x0,
+ NULL, HFILL }
+ },
{ &hf_nas_eps_esm_pdn_ipv4,
{"PDN IPv4", "nas_eps.esm.pdn_ipv4",
FT_IPv4, BASE_NONE, NULL, 0x0,