aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2008-10-26 19:44:06 +0000
committerAnders Broman <anders.broman@ericsson.com>2008-10-26 19:44:06 +0000
commit799b8635f3d723158d6d9f62612f894ea15c600b (patch)
tree08d95af575a40ff4f1fb0bf94780bac4193953b6 /epan
parente6eaa7c82e3b62b8fea456d4617ca565bf0e9511 (diff)
Update towards 48.008 8.4.0
svn path=/trunk/; revision=26558
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-gsm_a_bssmap.c365
-rw-r--r--epan/dissectors/packet-gsm_a_common.c351
-rw-r--r--epan/dissectors/packet-gsm_a_common.h3
3 files changed, 646 insertions, 73 deletions
diff --git a/epan/dissectors/packet-gsm_a_bssmap.c b/epan/dissectors/packet-gsm_a_bssmap.c
index c13135f981..05a83df49d 100644
--- a/epan/dissectors/packet-gsm_a_bssmap.c
+++ b/epan/dissectors/packet-gsm_a_bssmap.c
@@ -314,6 +314,7 @@ static int hf_gsm_a_bssmap_ch_mode = -1;
static int hf_gsm_a_bssmap_be_rnc_id = -1;
static int hf_gsm_a_bssmap_apdu_protocol_id = -1;
static int hf_gsm_a_bssmap_periodicity = -1;
+static int hf_gsm_a_bssmap_lcs_pri = -1;
/* Initialize the subtree pointers */
static gint ett_bssmap_msg = -1;
@@ -409,7 +410,7 @@ typedef enum
BE_LCS_CLIENT, /. LCS Client Type ./
BE_APDU, /. APDU ./
BE_NE_ID, /. Network Element Identity ./
- BE_GSP_ASSIST_DATA, /. GPS Assistance Data ./
+ BE_GPS_ASSIST_DATA, /. GPS Assistance Data ./
BE_DECIPH_KEYS, /. Deciphering Keys ./
BE_RET_ERR_REQ, /. Return Error Request ./
BE_RET_ERR_CAUSE, /. Return Error Cause ./
@@ -2130,12 +2131,67 @@ be_speech_ver(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gc
* 3.2.2.60 LCS QoS
* (The QoS octets 3 to n are coded in the same way as the equivalent octets
* in the LCS QoS element of 3GPP TS 49.031.)
+ */
+static guint8
+be_lcs_qos(tvbuff_t *tvb, proto_tree *tree, 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_rr_chnl_needed_ch1, tvb, curr_offset, 1, FALSE);
+ */
+ proto_tree_add_text(tree, tvb, curr_offset+1, len -1, "Not decoded yet");
+
+
+ return(len);
+}
+/*
* 3.2.2.61 LSA Access Control Suppression
+ */
+/*
* 3.2.2.62 LCS Priority
* The Priority octets 3 to n are coded in the same way as the equivalent octets
* in the LCS Priority element of 3GPP TS 49.031.
+ */
+/* Location Information definitions */
+static const value_string lcs_priority_vals[] = {
+ { 0, "highest" },
+ { 1, "normal" },
+ { 0, NULL}
+};
+
+static guint8
+be_lcs_prio(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ /* This octet is coded as the LCS-Priority octet in 3GPP TS 29.002 */
+ proto_tree_add_item(tree, hf_gsm_a_bssmap_lcs_pri, tvb, curr_offset, 1, FALSE);
+
+ return(len);
+}
+
+/*
* 3.2.2.63 Location Type (Location Type element of 3GPP TS 49.031 BSSAP-LE.)
*/
+static guint8
+be_loc_type(tvbuff_t *tvb, proto_tree *tree, 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_rr_chnl_needed_ch1, tvb, curr_offset, 1, FALSE);
+ */
+ proto_tree_add_text(tree, tvb, curr_offset+1, len -1, "Not decoded yet");
+
+
+ return(len);
+}
+
/*
* 3.2.2.64 Location Estimate
* The Location Estimate field is composed of 1 or more octets with an internal structure
@@ -2177,10 +2233,34 @@ be_pos_data(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
* 3.2.2.66 LCS Cause
* LCS Cause element of 3GPP TS 49.031 BSSAP-LE.
*/
+static guint8
+be_lcs_cause(tvbuff_t *tvb, proto_tree *tree, 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, curr_offset+1, len -1, "Not decoded yet");
+
+
+ return(len);
+}
/*
* 3.2.2.67 LCS Client Type
* LCS Client Type element of 3GPP TS 49.031 BSSAP-LE.
*/
+static guint8
+be_lcs_client(tvbuff_t *tvb, proto_tree *tree, 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, curr_offset+1, len -1, "Not decoded yet");
+
+
+ return(len);
+}
/*
* 3.2.2.68 3GPP TS 48.008 version 6.9.0 Release 6
*/
@@ -2254,14 +2334,29 @@ be_apdu(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_s
/*
* 3.2.2.69 Network Element Identity
* Network Element Identity element of 3GPP TS 49.031 BSSAP-LE.
+ */
+/*
* 3.2.2.70 GPS Assistance Data
* Requested GPS Data element of 3GPP TS 49.031 BSSAP-LE.
- *
+ */
+static guint8
+be_gps_assist_data(tvbuff_t *tvb, proto_tree *tree, 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, curr_offset+1, len -1, "Not decoded yet");
+
+
+ return(len);
+}
+/*
* 3.2.2.71 Deciphering Keys
* Deciphering Key element of 3GPP TS 49.031 BSSAP-LE.
*/
-#if 0
+
static guint8
be_decihp_keys(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
{
@@ -2276,40 +2371,93 @@ be_decihp_keys(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, g
return(len);
}
-#endif
+
/* 3.2.2.72 Return Error Request
* Return Error Request element of 3GPP TS 49.031 BSSAP-LE.
- * 3.2.2.73 Return Error Cause
- * Return Error Cause element of 3GPP TS 49.031 BSSAP-LE.
- * 3.2.2.74 Segmentation
- * Segmentation element of 3GPP TS 49.031 BSSAP-LE.
- * 3.2.2.75 Service Handover
- * 3.2.2.76 Source RNC to target RNC transparent information (UMTS)
- * 3.2.2.77 Source RNC to target RNC transparent information (cdma2000)
- * 3.2.2.78 GERAN Classmark
- * 3.2.2.79 GERAN BSC Container
- * 3.2.2.80 New BSS to Old BSS Information
- * 3.2.2.81 Inter-System Information
- * 3.2.2.82 SNA Access Information
- * 3.2.2.83 VSTK_RAND Information
- * 3.2.2.84 VSTK information
- * 3.2.2.85 Paging Information
- * 3.2.2.86 IMEI
- * 3.2.2.87 Velocity Estimate
- * 3.2.2.88 VGCS Feature Flags
- * 3.2.2.89 Talker Priority
- * 3.2.2.90 Emergency Set Indicatio
- * 3.2.2.91 Talker Identity
- * 3.2.2.92 SMS to VGCS
- * 3.2.2.93 VGCS talker mode
- * 3.2.2.94 VGCS/VBS Cell Status
- * 3.2.2.95 GANSS Assistance Data
- * 3.2.2.96 GANSS Positioning Data
- * 3.2.2.97 GANSS Location Type
- * 3.2.2.98 Application Data
- * 3.2.2.99 Data Identity
- * 3.2.2.100 Application Data Information
- * 3.2.2.101 MSISDN
+ */
+static guint8
+be_ret_err_req(tvbuff_t *tvb, proto_tree *tree, 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, curr_offset+1, len -1, "Not decoded yet");
+
+ return(len);
+}
+/*
+ * 3.2.2.73 Return Error Cause
+ * Return Error Cause element of 3GPP TS 49.031 BSSAP-LE.
+ */
+static guint8
+be_ret_err_cause(tvbuff_t *tvb, proto_tree *tree, 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, curr_offset+1, len -1, "Not decoded yet");
+
+ return(len);
+}
+/*
+ * 3.2.2.74 Segmentation
+ * Segmentation element of 3GPP TS 49.031 BSSAP-LE.
+ */
+static guint8
+be_seg(tvbuff_t *tvb, proto_tree *tree, 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, curr_offset+1, len -1, "Not decoded yet");
+
+ return(len);
+}
+/*
+ * 3.2.2.75 Service Handover
+ */
+static guint8
+be_serv_ho(tvbuff_t *tvb, proto_tree *tree, 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, curr_offset+1, len -1, "Not decoded yet");
+
+ return(len);
+}
+
+/*
+ * 3.2.2.76 Source RNC to target RNC transparent information (UMTS)
+ * 3.2.2.77 Source RNC to target RNC transparent information (cdma2000)
+ * 3.2.2.78 GERAN Classmark
+ * 3.2.2.79 GERAN BSC Container
+ * 3.2.2.80 New BSS to Old BSS Information
+ * 3.2.2.81 Inter-System Information
+ * 3.2.2.82 SNA Access Information
+ * 3.2.2.83 VSTK_RAND Information
+ * 3.2.2.84 VSTK information
+ * 3.2.2.85 Paging Information
+ * 3.2.2.86 IMEI
+ * 3.2.2.87 Velocity Estimate
+ * 3.2.2.88 VGCS Feature Flags
+ * 3.2.2.89 Talker Priority
+ * 3.2.2.90 Emergency Set Indicatio
+ * 3.2.2.91 Talker Identity
+ * 3.2.2.92 SMS to VGCS
+ * 3.2.2.93 VGCS talker mode
+ * 3.2.2.94 VGCS/VBS Cell Status
+ * 3.2.2.95 GANSS Assistance Data
+ * 3.2.2.96 GANSS Positioning Data
+ * 3.2.2.97 GANSS Location Type
+ * 3.2.2.98 Application Data
+ * 3.2.2.99 Data Identity
+ * 3.2.2.100 Application Data Information
+ * 3.2.2.101 MSISDN
* 3.2.2.102 AoIP Transport Layer Address
* 3.2.2.103 Speech Codec List
* 3.2.2.104 Speech Codec
@@ -2337,7 +2485,7 @@ guint8 (*bssmap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gui
NULL, /* Reserved */
NULL, /* Reserved */
de_ms_cm_2, /* Classmark Information Type 2 */
- NULL, /* Classmark Information Type 3 */
+ de_ms_cm_3, /* Classmark Information Type 3 */
NULL, /* Interference Band To Be Used */
de_rr_cause, /* RR Cause */
NULL, /* Reserved */
@@ -2380,21 +2528,59 @@ guint8 (*bssmap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gui
NULL, /* LSA Identifier */
NULL, /* LSA Identifier List */
NULL, /* LSA Information */
- NULL, /* LCS QoS */
+ be_lcs_qos, /* LCS QoS */
NULL, /* LSA access control suppression */
- NULL, /* LCS Priority */
- NULL, /* Location Type */
+ be_lcs_prio, /* LCS Priority */
+ be_loc_type, /* Location Type */
be_loc_est, /* Location Estimate */
be_pos_data, /* Positioning Data */
- NULL, /* LCS Cause */
- NULL, /* LCS Client Type */
+ be_lcs_cause, /* LCS Cause */
+ be_lcs_client, /* LCS Client Type */
be_apdu, /* APDU */
NULL, /* Network Element Identity */
- NULL, /* GPS Assistance Data */
- NULL, /* Deciphering Keys */
- NULL, /* Return Error Request */
- NULL, /* Return Error Cause */
- NULL, /* Segmentation */
+ be_gps_assist_data, /* GPS Assistance Data */
+ be_decihp_keys, /* Deciphering Keys */
+ be_ret_err_req, /* Return Error Request */
+ be_ret_err_cause, /* Return Error Cause */
+ be_seg, /* Segmentation */
+ be_serv_ho, /* Service Handover */
+ NULL, /* Source RNC to target RNC transparent information (UMTS) */
+ NULL, /* Source RNC to target RNC transparent information (cdma2000) */
+ NULL, /* GERAN Classmark */
+ NULL, /* GERAN BSC Container */
+ NULL, /* New BSS to Old BSS Information */
+ NULL, /* Inter-System Information */
+ NULL, /* SNA Access Information */
+ NULL, /* VSTK_RAND Information */
+ NULL, /* VSTK Information */
+ NULL, /* Paging Information */
+ NULL, /* IMEI */
+ NULL, /* Velocity Estimate */
+ NULL, /* VGCS Feature Flags */
+ NULL, /* Talker Priority */
+ NULL, /* Emergency Set Indication */
+ NULL, /* Talker Identity */
+ NULL, /* Cell Identifier List Segment */
+ NULL, /* SMS to VGCS */
+ NULL, /* VGCS Talker Mode */
+ NULL, /* VGCS/VBS Cell Status */
+ NULL, /* Cell Identifier List Segment for established cells */
+ NULL, /* Cell Identifier List Segment for cells to be established */
+ NULL, /* Cell Identifier List Segment for released cells - no user present */
+ NULL, /* Cell Identifier List Segment for not established cells - no establishment possible */
+ NULL, /* GANSS Assistance Data */
+ NULL, /* GANSS Positioning Data */
+ NULL, /* GANSS Location Type */
+ NULL, /* Application Data */
+ NULL, /* Data Identity */
+ NULL, /* Application Data Information */
+ NULL, /* MSISDN */
+ NULL, /* AoIP Transport Layer Address */
+ NULL, /* Speech Codec List */
+ NULL, /* Speech Codec */
+ NULL, /* Call Identifier */
+ NULL, /* Call Identifier List */
+
NULL, /* NONE */
};
@@ -3264,7 +3450,7 @@ bssmap_cl3_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
/* LSA Identifier List 3.2.2.16 BSS-MSC O (note 2) 3+3n */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LSA_ID_LIST].value, BSSAP_PDU_TYPE_BSSMAP, BE_LSA_ID_LIST, "");
- /* PADU 3.2.2.68 BSS-MSC O (note 3) 3-n */
+ /* APDU 3.2.2.68 BSS-MSC O (note 3) 3-n */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, "");
/* Codec List (BSS Supported) 3.2.2.103 BSS-MSC O (note 4) 3-n */
@@ -3617,8 +3803,10 @@ Cell Identifier List Segment
*
Channel Type 3.2.2.11 BSS-MSC M (note 3, 4) 5
Cell Identifier 3.2.2.17 BSS-MSC M 3-10
-ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, "");
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, "");
Chosen Channel 3.2.2.33 BSS-MSC O (note 2) 2
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, "");
+
Circuit Identity Code 3.2.2.2 BSS-MSC O (note 5) 3
Circuit Pool 3.2.2.45 BSS-MSC O (note 1) 2
*
@@ -3793,22 +3981,42 @@ bssmap_conn_oriented(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
/*
* 3.2.1.71 PERFORM LOCATION REQUEST
*/
-/*
-Location Type 3.2.2.63 M 3-n
-Cell Identifier 3.2.2.17 O 5-10
-ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, "");
-Classmark Information Type 3 3.2.2.20 O 3-14
-LCS Client Type 3.2.2.67 C (note 3) 3-n
-Chosen Channel 3.2.2.33 O 2
-LCS Priority 3.2.2.62 O 3-n
-LCS QoS 3.2.2.60 C (note 1) 3-n
-GPS Assistance Data 3.2.2.70 C (note 2) 3-n
-APDU 3.2.2.68 O 3-n
-IMSI 3.2.2.6 O (note 4) 5-10
-IMEI 3.2.2.86 O (note 4) 10
-GANSS Location Type 3.2.2.97 C 3
-GANSS Assistance Data 3.2.2.95 C (note 5) 3-n
-*/
+static void
+bssmap_perf_loc_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Location Type 3.2.2.63 M 3-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_LOC_TYPE].value, BSSAP_PDU_TYPE_BSSMAP, BE_LOC_TYPE , "");
+ /* Cell Identifier 3.2.2.17 O 5-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_CELL_ID].value, BSSAP_PDU_TYPE_BSSMAP, BE_CELL_ID, "");
+ /* Classmark Information Type 3 3.2.2.20 O 3-14 */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_CM_INFO_3].value, BSSAP_PDU_TYPE_BSSMAP, BE_CM_INFO_3, "");
+ /* LCS Client Type 3.2.2.67 C (note 3) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_CLIENT].value, BSSAP_PDU_TYPE_BSSMAP, BE_LCS_CLIENT, "");
+ /* Chosen Channel 3.2.2.33 O 2 */
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CHOSEN_CHAN].value, BSSAP_PDU_TYPE_BSSMAP, BE_CHOSEN_CHAN, "");
+ /* LCS Priority 3.2.2.62 O 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_PRIO].value, BSSAP_PDU_TYPE_BSSMAP, BE_LCS_PRIO, "");
+ /* LCS QoS 3.2.2.60 C (note 1) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_QOS].value, BSSAP_PDU_TYPE_BSSMAP, BE_LCS_QOS, "");
+ /* GPS Assistance Data 3.2.2.70 C (note 2) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_GPS_ASSIST_DATA].value, BSSAP_PDU_TYPE_BSSMAP, BE_GPS_ASSIST_DATA, "");
+ /* APDU 3.2.2.68 O 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_APDU].value, BSSAP_PDU_TYPE_BSSMAP, BE_APDU, "");
+ /* IMSI 3.2.2.6 O (note 4) 5-10 */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_IMSI].value, BSSAP_PDU_TYPE_BSSMAP, BE_IMSI, "");
+ /* IMEI 3.2.2.86 O (note 4) 10 */
+ /* GANSS Location Type 3.2.2.97 C 3 */
+ /* GANSS Assistance Data 3.2.2.95 C (note 5) 3-n */
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
+}
/*
* 3.2.1.72 PERFORM LOCATION RESPONSE
*/
@@ -3829,6 +4037,7 @@ bssmap_perf_loc_res(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
/* Deciphering Keys 3.2.2.71 C (note 2) 3-n */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_DECIPH_KEYS].value, BSSAP_PDU_TYPE_BSSMAP, BE_DECIPH_KEYS, "");
/* LCS Cause 3.2.2.66 C (note 3) 3-n */
+ ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_LCS_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_LCS_CAUSE, "");
/* Velocity Estimate 3.2.2.87 O 3-n */
/* GANSS Positioning Data 3.2.2.96 O 3-n */
@@ -3837,9 +4046,22 @@ bssmap_perf_loc_res(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
/*
* 3.2.1.73 PERFORM LOCATION ABORT
*/
-/*
-LCS Cause 3.2.2.66 M 3-n
-*/
+static void
+bssmap_perf_loc_abort(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* LCS Cause 3.2.2.66 M 3-n */
+ ELEM_MAND_TLV(gsm_bssmap_elem_strings[BE_LCS_CAUSE].value, BSSAP_PDU_TYPE_BSSMAP, BE_LCS_CAUSE, "");
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
+}
+
/*
* 3.2.1.74 CONNECTIONLESS INFORMATION
*/
@@ -3977,10 +4199,10 @@ static void (*bssmap_msg_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset,
NULL, /* Suspend */
NULL, /* Resume */
bssmap_conn_oriented, /* Connection Oriented Information */
- NULL, /* Perform Location Request */
+ bssmap_perf_loc_req, /* Perform Location Request */
bssmap_lsa_info, /* LSA Information */
bssmap_perf_loc_res, /* Perform Location Response */
- NULL, /* Perform Location Abort */
+ bssmap_perf_loc_abort, /* Perform Location Abort */
bssmap_common_id, /* Common Id */
bssmap_reset, /* Reset */
NULL /* no associated data */, /* Reset Acknowledge */
@@ -4226,6 +4448,11 @@ proto_register_gsm_a_bssmap(void)
FT_UINT8, BASE_DEC, NULL, 0x0,
"Periodicity", HFILL }
},
+ { &hf_gsm_a_bssmap_lcs_pri,
+ { "Periodicity", "gsm_a_bssmap.lcs_pri",
+ FT_UINT8, BASE_DEC, VALS(lcs_priority_vals), 0x0,
+ "Periodicity", HFILL }
+ },
};
/* Setup protocol subtree array */
diff --git a/epan/dissectors/packet-gsm_a_common.c b/epan/dissectors/packet-gsm_a_common.c
index 99c76f0f57..c82508ed26 100644
--- a/epan/dissectors/packet-gsm_a_common.c
+++ b/epan/dissectors/packet-gsm_a_common.c
@@ -169,6 +169,31 @@ static const value_string CMSP_vals[] = {
{ 1, "Network initiated MO CM connection request supported for at least one CM protocol"},
{ 0, NULL }
};
+/* 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/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/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 }
+};
+/* 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 }
+};
+
/* A5/3 algorithm supported (octet 5, bit 2) */
static const value_string A5_3_algorithm_sup_vals[] = {
{ 0, "encryption algorithm A5/3 not available"},
@@ -199,6 +224,32 @@ static const value_string oddevenind_vals[] = {
{ 0, NULL }
};
+static const value_string true_false_vals[] = {
+ { 0, "false" },
+ { 1, "true" },
+ { 0, NULL}
+};
+
+static const value_string gsm_a_sms_vals[] = {
+ {0, "1/4 timeslot (~144 microseconds)" },
+ {1, "2/4 timeslot (~288 microseconds)" },
+ {2, "3/4 timeslot (~433 microseconds)" },
+ {3, "4/4 timeslot (~577 microseconds)" },
+ {4, "5/4 timeslot (~721 microseconds)" },
+ {5, "6/4 timeslot (~865 microseconds)" },
+ {6, "7/4 timeslot (~1009 microseconds)" },
+ {7, "8/4 timeslot (~1154 microseconds)" },
+ {8, "9/4 timeslot (~1298 microseconds)" },
+ {9, "10/4 timeslot (~1442 microseconds)" },
+ {10, "11/4 timeslot (~1586 microseconds)" },
+ {11, "12/4 timeslot (~1730 microseconds)" },
+ {12, "13/4 timeslot (~1874 microseconds)" },
+ {13, "14/4 timeslot (~2019 microseconds)" },
+ {14, "15/4 timeslot (~2163 microseconds)" },
+ {15, "16/4 timeslot (~2307 microseconds)" },
+ { 0, NULL}
+};
+
/* Initialize the protocol and registered fields */
static int proto_a_common = -1;
@@ -225,6 +276,10 @@ static int hf_gsm_a_LCS_VA_cap = -1;
static int hf_gsm_a_UCS2_treatment = -1;
static int hf_gsm_a_SoLSA = -1;
static int hf_gsm_a_CMSP = -1;
+static int hf_gsm_a_A5_7_algorithm_sup= -1;
+static int hf_gsm_a_A5_6_algorithm_sup= -1;
+static int hf_gsm_a_A5_5_algorithm_sup= -1;
+static int hf_gsm_a_A5_4_algorithm_sup= -1;
static int hf_gsm_a_A5_3_algorithm_sup= -1;
static int hf_gsm_a_A5_2_algorithm_sup = -1;
@@ -239,6 +294,22 @@ int hf_gsm_a_skip_ind = -1;
static int hf_gsm_a_b7spare = -1;
int hf_gsm_a_b8spare = -1;
+static int hf_gsm_a_spare_bits = -1;
+static int hf_gsm_a_multi_bnd_sup_fields = -1;
+static int hf_gsm_a_pgsm_supported = -1;
+static int hf_gsm_a_egsm_supported = -1;
+static int hf_gsm_a_gsm1800_supported = -1;
+static int hf_gsm_a_ass_radio_cap1 = -1;
+static int hf_gsm_a_ass_radio_cap2 = -1;
+static int hf_gsm_a_rsupport = -1;
+static int hf_gsm_a_r_capabilities = -1;
+static int hf_gsm_a_multislot_capabilities = -1;
+static int hf_gsm_a_multislot_class = -1;
+static int hf_gsm_a_ucs2_treatment = -1;
+static int hf_gsm_a_extended_measurement_cap = -1;
+static int hf_gsm_a_ms_measurement_capability = -1;
+static int hf_gsm_a_sms_value =-1;
+static int hf_gsm_a_sm_value =-1;
static char a_bigbuf[1024];
@@ -1199,7 +1270,8 @@ de_ms_cm_1(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar
}
/*
- * [3] 10.5.1.6
+ * [3] 10.5.1.6 Mobile Station Classmark 2
+ * 3GPP TS 24.008 version 7.8.0 Release 7
*/
guint8
de_ms_cm_2(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -1243,7 +1315,7 @@ de_ms_cm_2(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *ad
/* CM3 (octet 5, bit 8) */
proto_tree_add_item(tree, hf_gsm_a_CM3, tvb, curr_offset, 1, FALSE);
/* spare bit 7 */
- proto_tree_add_item(tree, hf_gsm_a_b7spare, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_b7spare, tvb, curr_offset, 1, FALSE);
/* LCS VA capability (LCS value added location request notification capability) (octet 5,bit 6) */
proto_tree_add_item(tree, hf_gsm_a_LCS_VA_cap, tvb, curr_offset, 1, FALSE);
/* UCS2 treatment (octet 5, bit 5) */
@@ -1263,6 +1335,191 @@ de_ms_cm_2(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *ad
return(curr_offset - offset);
}
+
+/*
+ * [3] 10.5.1.7 Mobile Station Classmark 3
+ * 3GPP TS 24.008 version 7.8.0 Release 7
+ */
+guint8
+de_ms_cm_3(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+ guint32 bit_offset; /* Offset in bits */
+ proto_tree *subtree;
+ proto_item *item;
+ guint64 multi_bnd_sup_fields,rsupport, multislotCapability, msMeasurementCapability;
+
+ curr_offset = offset;
+
+ bit_offset = curr_offset << 3;
+
+ /* Spare bit */
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 1, FALSE);
+ bit_offset++;
+
+ /* Multiband supported field
+ * { < Multiband supported : { 000 } >
+ * < A5 bits >
+ * | < Multiband supported : { 101 | 110 } >
+ * < A5 bits >
+ * < Associated Radio Capability 2 : bit(4) >
+ * < Associated Radio Capability 1 : bit(4) >
+ * | < Multiband supported : { 001 | 010 | 100 } >
+ * < A5 bits >
+ * < spare bit >(4)
+ * < Associated Radio Capability 1 : bit(4) > }
+ */
+ item = proto_tree_add_bits_ret_val(tree, hf_gsm_a_multi_bnd_sup_fields, tvb, bit_offset, 3, &multi_bnd_sup_fields, FALSE);
+ subtree = proto_item_add_subtree(item, ett_gsm_common_elem[DE_MS_CM_3]);
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_gsm1800_supported, tvb, bit_offset, 1, FALSE);
+ bit_offset++;
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_egsm_supported, tvb, bit_offset, 1, FALSE);
+ bit_offset++;
+
+ proto_tree_add_bits_item(subtree, hf_gsm_a_pgsm_supported, tvb, bit_offset, 1, FALSE);
+ bit_offset++;
+
+ /* < A5 bits > */
+ proto_tree_add_bits_item(tree, hf_gsm_a_A5_4_algorithm_sup, tvb, bit_offset, 1, FALSE);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_A5_5_algorithm_sup, tvb, bit_offset, 1, FALSE);
+ bit_offset++;
+ proto_tree_add_bits_item(tree, hf_gsm_a_A5_6_algorithm_sup, tvb, bit_offset, 1, FALSE);
+ bit_offset++;
+ proto_tree_add_bits_item(subtree, hf_gsm_a_A5_7_algorithm_sup, tvb, bit_offset, 1, FALSE);
+ bit_offset++;
+
+ switch(multi_bnd_sup_fields){
+ case 0:
+ /* A5 bits dissected so done */
+ break;
+ /*
+ * | < Multiband supported : { 001 | 010 | 100 } >
+ */
+ case 1:
+ case 2:
+ case 4:
+ /* < spare bit >(4) */
+ proto_tree_add_bits_item(tree, hf_gsm_a_spare_bits, tvb, bit_offset, 4, FALSE);
+ bit_offset+=4;
+ /* < Associated Radio Capability 1 : bit(4) > */
+ proto_tree_add_bits_item(subtree, hf_gsm_a_ass_radio_cap1, tvb, bit_offset, 4, FALSE);
+ bit_offset+=4;
+ break;
+ /* < Multiband supported : { 101 | 110 } > */
+ case 5:
+ /* fall trough */
+ case 6:
+ /* < Associated Radio Capability 2 : bit(4) > */
+ proto_tree_add_bits_item(subtree, hf_gsm_a_ass_radio_cap2, tvb, bit_offset, 4, FALSE);
+ bit_offset+=4;
+ /* < Associated Radio Capability 1 : bit(4) > */
+ proto_tree_add_bits_item(subtree, hf_gsm_a_ass_radio_cap1, tvb, bit_offset, 4, FALSE);
+ bit_offset+=4;
+ break;
+ default:
+ break;
+ }
+ /* Extract R Support */
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_rsupport, tvb, bit_offset, 1, &rsupport, FALSE);
+ bit_offset++;
+
+ if(rsupport == 1)
+ {
+ /*
+ * { 0 | 1 < R Support > }
+ * Extract R Capabilities
+ */
+ proto_tree_add_bits_item(tree, hf_gsm_a_r_capabilities, tvb, bit_offset, 3, FALSE);
+ bit_offset = bit_offset + 3;
+ }
+
+ /*
+ * { 0 | 1 < HSCSD Multi Slot Capability > }
+ * Extract Multislot capability
+ */
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_multislot_capabilities, tvb, bit_offset, 1, &multislotCapability, FALSE);
+ bit_offset++;
+
+ if(multislotCapability == 1)
+ {
+ /* Extract Multislot Class */
+ proto_tree_add_bits_item(tree, hf_gsm_a_multislot_class, tvb, bit_offset, 5, FALSE);
+ bit_offset = bit_offset + 5;
+ }
+
+ /* < UCS2 treatment: bit > */
+ proto_tree_add_bits_item(tree, hf_gsm_a_ucs2_treatment, tvb, bit_offset, 1, FALSE);
+ bit_offset = bit_offset + 1;
+
+ /* < Extended Measurement Capability : bit > */
+ proto_tree_add_bits_item(tree, hf_gsm_a_extended_measurement_cap, tvb, bit_offset, 1, FALSE);
+ bit_offset = bit_offset + 1;
+
+ /* { 0 | 1 < MS measurement capability > }
+ * Extract MS Measurement capability
+ */
+ proto_tree_add_bits_ret_val(tree, hf_gsm_a_ms_measurement_capability, tvb, bit_offset, 1, &msMeasurementCapability, FALSE);
+ bit_offset = bit_offset + 1;
+
+ if(msMeasurementCapability == 1)
+ {
+ /* Extract SMS Value n/4 */
+ proto_tree_add_bits_item(tree, hf_gsm_a_sms_value, tvb, bit_offset, 4, FALSE);
+ bit_offset = bit_offset + 4;
+
+ /* Extract SM Value n/4 */
+ proto_tree_add_bits_item(tree, hf_gsm_a_sm_value, tvb, bit_offset, 4, FALSE);
+ bit_offset = bit_offset + 4;
+ }
+
+/*
+{ 0 | 1 < MS Positioning Method Capability > }
+{ 0 | 1 < ECSD Multi Slot Capability > }
+{ 0 | 1 < 8-PSK Struct > }
+{ 0 | 1 < GSM 400 Bands Supported : { 01 | 10 | 11 } >
+< GSM 400 Associated Radio Capability: bit(4) > }
+{ 0 | 1 <GSM 850 Associated Radio Capability : bit(4) > }
+{ 0 | 1 <GSM 1900 Associated Radio Capability : bit(4) > }
+< UMTS FDD Radio Access Technology Capability : bit >
+< UMTS 3.84 Mcps TDD Radio Access Technology Capability : bit >
+< CDMA 2000 Radio Access Technology Capability : bit >
+{ 0 | 1 < DTM GPRS Multi Slot Class : bit(2) >
+< Single Slot DTM : bit >
+{0 | 1< DTM EGPRS Multi Slot Class : bit(2) > } }
+{ 0 | 1 < Single Band Support > } -- Release 4 starts here:
+{ 0 | 1 <GSM 750 Associated Radio Capability : bit(4)>}
+< UMTS 1.28 Mcps TDD Radio Access Technology Capability : bit >
+< GERAN Feature Package 1 : bit >
+{ 0 | 1 < Extended DTM GPRS Multi Slot Class : bit(2) >
+< Extended DTM EGPRS Multi Slot Class : bit(2) > }
+{ 0 | 1 < High Multislot Capability : bit(2) > } ---Release 5 starts here.
+{ 0 | 1 < GERAN Iu Mode Capabilities > } -- "1" also means support of GERAN Iu mode
+< GERAN Feature Package 2 : bit >
+< GMSK Multislot Power Profile : bit (2) >
+< 8-PSK Multislot Power Profile : bit (2) >
+{ 0 | 1 < T-GSM 400 Bands Supported : { 01 | 10 | 11 } > -- Release 6 starts here.
+< T-GSM 400 Associated Radio Capability: bit(4) > }
+{ 0 | 1 < T-GSM 900 Associated Radio Capability: bit(4) > }
+< Downlink Advanced Receiver Performance : bit (2)>
+< DTM Enhancements Capability : bit >
+{ 0 | 1 < DTM GPRS High Multi Slot Class : bit(3) >
+< Offset required : bit>
+{ 0 | 1 < DTM EGPRS High Multi Slot Class : bit(3) > } }
+< Repeated ACCH Capability : bit >
+{ 0 | 1 <GSM 710 Associated Radio Capability : bit(4)>} -- Release 7 starts here.
+{ 0 | 1 <T-GSM 810 Associated Radio Capability : bit(4)>}
+< Ciphering Mode Setting Capability : bit >
+0 | 1 < Multislot Capability Reduction for Downlink Dual Carrier : bit (3) > } -- "1" also means that
+the mobile station supports dual carrier in the downlink during DTM
+< spare bits > ;
+*/
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+
+ return(len);
+}
/*
* [3] 10.5.1.8
*/
@@ -1495,7 +1752,7 @@ guint8 (*common_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gui
de_mid, /* Mobile Identity */
de_ms_cm_1, /* Mobile Station Classmark 1 */
de_ms_cm_2, /* Mobile Station Classmark 2 */
- NULL, /* Mobile Station Classmark 3 */
+ de_ms_cm_3, /* Mobile Station Classmark 3 */
de_spare_nibble, /* Spare Half Octet */
de_d_gb_call_ref, /* Descriptive group or broadcast call reference */
NULL /* handled inline */, /* Group Cipher Key Number */
@@ -1616,6 +1873,26 @@ proto_register_gsm_a_common(void)
FT_UINT8,BASE_DEC, VALS(CMSP_vals), 0x04,
"CMSP: CM Service Prompt", 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,
+ "A5/7 algorithm supported", 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,
+ "A5/6 algorithm supported", 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,
+ "A5/5 algorithm supported", 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,
+ "A5/4 algorithm supported", 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,
@@ -1676,6 +1953,74 @@ proto_register_gsm_a_common(void)
FT_UINT8,BASE_DEC, NULL, 0x80,
"Spare", HFILL }
},
+ { &hf_gsm_a_spare_bits,
+ { "Spare bit(s)","gsm_a.spare_bits",
+ FT_UINT8,BASE_DEC, NULL, 0x0,
+ "Spare bit(s)", HFILL }
+ },
+ { &hf_gsm_a_multi_bnd_sup_fields,
+ { "Multiband supported field","gsm_a.multi_bnd_sup_fields",
+ FT_UINT8,BASE_DEC, NULL, 0x0,
+ "Multiband supported field", HFILL }
+ },
+ { &hf_gsm_a_pgsm_supported,
+ { "P-GSM Supported", "gsm_a.classmark3.pgsmSupported",
+ FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,"P-GSM Supported", 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,"E-GSM or R-GSM Supported", HFILL}
+ },
+ { &hf_gsm_a_gsm1800_supported,
+ { "GSM 1800 Supported", "gsm_a.classmark3.gsm1800Supported",
+ FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,"GSM 1800 Supported", HFILL}
+ },
+ { &hf_gsm_a_ass_radio_cap1,
+ { "Associated Radio Capability 1", "gsm_a.classmark3.ass_radio_cap1",
+ FT_UINT8, BASE_DEC, NULL, 0x0,"Associated Radio Capability 1", HFILL}
+ },
+ { &hf_gsm_a_ass_radio_cap2,
+ { "Associated Radio Capability 1", "gsm_a.classmark3.ass_radio_cap2",
+ FT_UINT8, BASE_DEC, NULL, 0x0,"Associated Radio Capability 1", HFILL}
+ },
+ { &hf_gsm_a_rsupport,
+ { "R Support", "gsm_a.classmark3.rsupport",
+ FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,"R Support", HFILL}
+ },
+ { &hf_gsm_a_r_capabilities,
+ { "R-GSM band Associated Radio Capability", "gsm_a.classmark3.r_capabilities",
+ FT_UINT8, BASE_DEC, NULL, 0x0,"R-GSM band Associated Radio Capability", HFILL}
+ },
+ { &hf_gsm_a_multislot_capabilities,
+ { "HSCSD Multi Slot Capability", "gsm_a.classmark3.multislot_capabilities",
+ FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,"HSCSD Multi Slot Capability", HFILL}
+ },
+ { &hf_gsm_a_multislot_class,
+ { "HSCSD Multi Slot Class", "gsm_a.classmark3.multislot_cap",
+ FT_UINT8, BASE_DEC, NULL, 0x0,"HSCSD Multi Slot Class", HFILL}
+ },
+ { &hf_gsm_a_ucs2_treatment,
+ { "UCS2 treatment ","gsm_a.UCS2_treatment",
+ FT_UINT8,BASE_DEC, VALS(UCS2_treatment_vals), 0x0,
+ "UCS2 treatment ", 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,"Extended Measurement Capability", 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,"MS measurement capability", HFILL}
+ },
+ { &hf_gsm_a_sms_value,
+ { "SMS_VALUE (Switch-Measure-Switch)", "gsm_a.classmark3.sms_value",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sms_vals), 0x0,"SMS_VALUE (Switch-Measure-Switch)", HFILL}
+ },
+ { &hf_gsm_a_sm_value,
+ { "SM_VALUE (Switch-Measure", "gsm_a.classmark3.sm_value",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_sms_vals), 0x0,"SM_VALUE (Switch-Measure", HFILL}
+ },
+
};
/* Setup protocol subtree array */
diff --git a/epan/dissectors/packet-gsm_a_common.h b/epan/dissectors/packet-gsm_a_common.h
index dad5779d0a..849cf33c80 100644
--- a/epan/dissectors/packet-gsm_a_common.h
+++ b/epan/dissectors/packet-gsm_a_common.h
@@ -465,6 +465,7 @@ guint8 de_bearer_cap_uplink(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gui
guint8 de_ms_cm_1(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_);
guint8 de_ms_cm_2(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len);
+guint8 de_ms_cm_3(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len);
guint8 de_sm_apn(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len);
guint8 de_sm_qos(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len);
@@ -611,7 +612,7 @@ typedef enum
BE_LCS_CLIENT, /* LCS Client Type */
BE_APDU, /* APDU */
BE_NE_ID, /* Network Element Identity */
- BE_GSP_ASSIST_DATA, /* GPS Assistance Data */
+ BE_GPS_ASSIST_DATA, /* GPS Assistance Data */
BE_DECIPH_KEYS, /* Deciphering Keys */
BE_RET_ERR_REQ, /* Return Error Request */
BE_RET_ERR_CAUSE, /* Return Error Cause */