aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-bssgp.c
diff options
context:
space:
mode:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2011-01-31 22:25:19 +0000
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2011-01-31 22:25:19 +0000
commitff1e3df413e01d0da9d77dae9c454035aabd9d9c (patch)
tree7426488bbde5c8f54124d23365f3fff25c8c101d /epan/dissectors/packet-bssgp.c
parent92eeeb21e8381438bfd6ba8945950fb8e535e237 (diff)
More IE dissection.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@35736 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-bssgp.c')
-rw-r--r--epan/dissectors/packet-bssgp.c72
1 files changed, 66 insertions, 6 deletions
diff --git a/epan/dissectors/packet-bssgp.c b/epan/dissectors/packet-bssgp.c
index 732aba8494..485b253f2e 100644
--- a/epan/dissectors/packet-bssgp.c
+++ b/epan/dissectors/packet-bssgp.c
@@ -7249,6 +7249,10 @@ de_bssgp_nsei(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gc
/*
* 11.3.56 Deciphering Keys
*/
+/* Rest of element coded as the value part defined in
+ * 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
+ * 3GPP TS 49.031 octet length indicator
+ */
/*
* 11.3.57 LCS Priority
*/
@@ -7259,6 +7263,10 @@ de_bssgp_nsei(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gc
/*
* 11.3.58 LCS Cause
*/
+/* Rest of element coded as the value part defined in
+ * 3GPP TS 49.031, not including 3GPP TS 49.031 IEI and
+ * 3GPP TS 49.031 octet length indicator
+ */
/*
* 11.3.59 LCS Capability
*/
@@ -7877,6 +7885,21 @@ de_bssgp_active_pfcs_list(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
/*
* 11.3.96 Velocity Data
*/
+static guint16
+de_bssgp_velocity_data(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len)
+{
+ guint32 curr_offset;
+
+ curr_offset = offset;
+
+ /* The rest of the information element contains an octet sequence
+ * identical to that for Description of Velocity defined in 3GPP TS
+ * 23.032.
+ */
+ curr_offset = dissect_description_of_velocity(tvb, tree, curr_offset, len, add_string, string_len);
+
+ return(curr_offset-offset);
+}
/*
* 11.3.97 DTM Handover Command
*/
@@ -8144,11 +8167,11 @@ const value_string bssgp_elem_strings[] = {
/* 11.3.51 LCS Client Type BSSGP_IEI_LCS_CLIENT_TYPE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CLIENT_TYPE*/
/* 11.3.52 Requested GPS Assistance Data BSSGP_IEI_REQUESTED_GPS_ASSISTANCE_DATA, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_REQ_GPS_ASSIST_D*/
/* 11.3.53 Location Type 0x7c, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_GANSS_LOC_TYPE*/
- /* 11.3.54 Location Estimate */
- /* 11.3.55 Positioning Data */
- /* 11.3.56 Deciphering Keys */
- /* 11.3.57 LCS Priority */
- /* 11.3.58 LCS Cause */
+ /* 11.3.54 Location Estimate BSSGP_IEI_LOCATION_ESTIMATE, GSM_A_PDU_TYPE_BSSMAP, BE_LOC_EST*/
+ /* 11.3.55 Positioning Data 0x7d, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_POS_DATA*/
+ /* 11.3.56 Deciphering Keys BSSGP_IEI_DECIPHERING_KEYS, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_DECIPH_KEYS */
+ /* 11.3.57 LCS Priority BSSGP_IEI_LCS_PRIORITY, GSM_A_PDU_TYPE_BSSMAP, BE_LCS_PRIO;*/
+ /* 11.3.58 LCS Cause BSSGP_IEI_LCS_CAUSE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CAUSE */
/* 11.3.59 LCS Capability 0x49 , GSM_A_PDU_TYPE_GM, DE_PS_LCS_CAP*/
/* 11.3.60 RRLP Flags */
/* 11.3.61 RIM Application Identity */
@@ -8216,7 +8239,7 @@ const value_string bssgp_elem_strings[] = {
{ 0x00, "PS Handover Indications" }, /* 11.3.95a PS Handover Indications */
{ 0x00, "SI/PSI Container" }, /* 11.3.95b SI/PSI Container */
{ 0x00, "Active PFCs List" }, /* 11.3.95c Active PFCs List */
- /* 11.3.96 Velocity Data */
+ { 0x00, "Velocity Data" }, /* 11.3.96 Velocity Data */
{ 0x00, "DTM Handover Command" }, /* 11.3.97 DTM Handover Command */
{ 0x00, "PS Handover Indications" }, /* 11.3.98 CS Indication */
/* 11.3.99 Requested GANSS Assistance Data 0x7b, GSM_A_PDU_TYPE_BSSMAP, BE_GANSS_ASS_DTA*/
@@ -8310,6 +8333,7 @@ typedef enum
DE_BSSGP_PS_HO_INDICATIONS, /* 11.3.95a PS Handover Indications */
DE_BSSGP_SIPSI_CONTAINER, /* 11.3.95b SI/PSI Container */
DE_BSSGP_ACTIVE_PFCS_LIST, /* 11.3.95c Active PFCs List */
+ DE_BSSGP_VELOCITY_DATA, /* 11.3.96 Velocity Data */
DE_BBSGP_DTM_HO_CMD, /* 11.3.97 DTM Handover Command */
DE_BSSGP_CS_INDICATION, /* 11.3.98 CS Indication */
DE_BSSGP_FLOW_CONTROL_GRAN, /* 11.3.102 Flow Control Granularity */
@@ -8390,6 +8414,7 @@ guint16 (*bssgp_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset, gui
de_bssgp_ps_ho_indications, /* 11.3.95a PS Handover Indications */
de_bssgp_sipsi_container, /* 11.3.95b SI/PSI Container */
de_bssgp_active_pfcs_list, /* 11.3.95c Active PFCs List */
+ de_bssgp_velocity_data, /* 11.3.96 Velocity Data */
de_bssgp_dtm_ho_cmd, /* 11.3.97 DTM Handover Command */
de_bssgp_cs_indication, /* 11.3.98 CS Indication */
de_bssgp_flow_control_gran, /* 11.3.102 Flow Control Granularity */
@@ -9989,6 +10014,41 @@ bssgp_perform_loc_request(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
/*
* 10.5.2 PERFORM-LOCATION-RESPONSE
+ */
+static void
+bssgp_perform_loc_response(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /*This PDU allows the BSS to respond to the SGSN after the completion of the location procedure. */
+ /* Direction: BSS to SGSN */
+ gpinfo->link_dir = P2P_DIR_UL;
+
+ /* TLLI TLLI/11.3.35 M TLV 6 */
+ ELEM_MAND_TELV(BSSGP_IEI_TLLI, GSM_A_PDU_TYPE_RR, DE_RR_TLLI , NULL);
+ /* BVCI (PCU-PTP) BVCI/11.3.6 M TLV 4 */
+ ELEM_MAND_TELV(BSSGP_IEI_BVCI, BSSGP_PDU_TYPE, DE_BSSGP_BVCI , " - (PCU-PTP)");
+ /* Location Estimate (note 1) Location Estimate/11.3.54 C TLV 3-? */
+ ELEM_OPT_TELV(BSSGP_IEI_LOCATION_ESTIMATE, GSM_A_PDU_TYPE_BSSMAP, BE_LOC_EST, NULL);
+ /* Positioning Data Positioning Data/11.3.55 O TLV 3-? */
+ ELEM_OPT_TELV(0x7d, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_POS_DATA, NULL);
+ /* Deciphering Keys (note 2) Deciphering Keys/11.3.56 C TLV 3-? */
+ ELEM_OPT_TELV(BSSGP_IEI_DECIPHERING_KEYS, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_DECIPH_KEYS, NULL);
+ /* LCS Cause (note 3) LCS Cause/11.3.58 O TLV 3-? */
+ ELEM_OPT_TELV(BSSGP_IEI_LCS_CAUSE, GSM_PDU_TYPE_BSSMAP_LE, DE_BMAPLE_LCS_CAUSE, NULL);
+ /* Velocity Data Velocity Data/11.3.96 O TLV 3-? */
+ ELEM_MAND_TELV(0x78, BSSGP_PDU_TYPE, DE_BSSGP_VELOCITY_DATA , NULL);
+ /* GANSS Positioning Data GANSS Positioning Data /11.3.101 O TLV 3-? */
+
+ EXTRANEOUS_DATA_CHECK_EXPERT(curr_len, 0, gpinfo);
+}
+
+/*
* 10.5.3 PERFORM-LOCATION-ABORT
* 10.5.4 POSITION-COMMAND
* 10.5.5 POSITION-RESPONSE