aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2006-05-23 19:02:05 +0000
committerAnders Broman <anders.broman@ericsson.com>2006-05-23 19:02:05 +0000
commitb727e4e35586e64981b6a6949671b307e2abe51a (patch)
tree40744f3c2f79201165dfdfc3f0d36ab48d866751
parent55600fb60adbd522e512b278d1da2b88dfa14039 (diff)
From Markus Meier:
The UMA-message Handover From UMAN Command includes the complete L3-message (and header) and not only the handover-IE's. svn path=/trunk/; revision=18215
-rw-r--r--epan/dissectors/packet-uma.c71
1 files changed, 9 insertions, 62 deletions
diff --git a/epan/dissectors/packet-uma.c b/epan/dissectors/packet-uma.c
index 6a426bac20..00c28fe6af 100644
--- a/epan/dissectors/packet-uma.c
+++ b/epan/dissectors/packet-uma.c
@@ -66,6 +66,7 @@
#include "prefs.h"
#include "packet-bssap.h"
#include "packet-gsm_a.h"
+#include "packet-gsm_map.h"
#include "packet-rtp.h"
#include "packet-rtcp.h"
#include "packet-e212.h"
@@ -114,10 +115,6 @@ static int hf_uma_urr_gc = -1;
static int hf_uma_urr_uc = -1;
static int hf_uma_urr_tlra = -1;
static int hf_uma_urr_rrs = -1;
-static int hf_uma_urr_location_estimate = -1;
-static int hf_uma_urr_sign_of_latitude = -1;
-static int hf_uma_urr_degrees_of_latitude =-1;
-static int hf_uma_urr_degrees_of_longitude =-1;
static int hf_uma_urr_IP_Address_type = -1;
static int hf_uma_urr_FQDN = -1;
static int hf_uma_urr_sgw_ipv4 = -1;
@@ -432,25 +429,6 @@ static const value_string rrs_vals[] = {
{ 1, "RTP Redundancy supported"},
{ 0, NULL }
};
-/* TS 23 032 Table 2a: Coding of Type of Shape */
-static const value_string type_of_shape_vals[] = {
- { 0, "Ellipsoid Point"},
- { 1, "Ellipsoid point with uncertainty Circle"},
- { 2, "Ellipsoid point with uncertainty Ellipse"},
- { 5, "Polygon"},
- { 8, "Ellipsoid point with altitude"},
- { 9, "Ellipsoid point with altitude and uncertainty Ellipsoid"},
- { 10, "Ellipsoid Arc"},
- { 0, NULL }
-};
-
-
-/* 3GPP TS 23.032 7.3.1 */
-static const value_string sign_of_latitude_vals[] = {
- { 0, "North"},
- { 1, "South"},
- { 0, NULL }
-};
/*IP address type number value (octet 3)*/
static const value_string IP_address_type_vals[] = {
@@ -807,6 +785,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
tvbuff_t *l3_tvb;
tvbuff_t *llc_tvb;
+ tvbuff_t *new_tvb;
int ie_offset;
guint8 ie_value;
guint16 ie_len = 0;
@@ -898,21 +877,8 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
* The Location Estimate field is composed of 1 or more octets with an internal structure
* according to section 7 in [23.032].
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_location_estimate, tvb, ie_offset, 1, FALSE);
- /* TODO:Add further dissecton here ? */
- octet = tvb_get_guint8(tvb,ie_offset);
- switch (octet){
- case 0: /* Ellipsoid Point */
- ie_offset++;
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_sign_of_latitude, tvb, ie_offset, 1, FALSE);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_degrees_of_latitude, tvb, ie_offset, 3, FALSE);
- ie_offset = ie_offset + 3;
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_degrees_of_longitude, tvb, ie_offset, 3, FALSE);
- break;
- default:
- break;
- }
-
+ new_tvb = tvb_new_subset(tvb, ie_offset,ie_len, ie_len );
+ dissect_geographical_description(new_tvb, pinfo, urr_ie_tree);
break;
case 9:
/* UNC SGW IP Address
@@ -1056,13 +1022,14 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
case 32:
/* Handover From UMAN Command
* If the target RAT is GERAN, the rest of the IE is coded as HANDOVER COMMAND message in [TS 44.018]
- * TODO: Find out RAT target
- */
- dtap_rr_ho_cmd(tvb, urr_ie_tree, offset, ie_len);
- /*
* If the target RAT is UTRAN, the rest of the IE is coded as
* HANDOVER TO UTRAN COMMAND message in [TS 25.331].
*/
+ proto_tree_add_item(urr_ie_tree, hf_uma_urr_L3_protocol_discriminator, tvb, ie_offset, 1, FALSE);
+ proto_tree_add_item(urr_ie_tree, hf_uma_urr_L3_Message, tvb, ie_offset, ie_len, FALSE);
+ l3_tvb = tvb_new_subset(tvb, ie_offset,ie_len, ie_len );
+ if (!dissector_try_port(bssap_pdu_type_table,BSSAP_PDU_TYPE_DTAP, l3_tvb, pinfo, urr_ie_tree))
+ call_dissector(data_handle, l3_tvb, pinfo, urr_ie_tree);
break;
case 33: /* UL Quality Indication */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_ULQI, tvb, ie_offset, 1, FALSE);
@@ -1796,26 +1763,6 @@ proto_register_uma(void)
FT_UINT8,BASE_DEC, VALS(rrs_vals), 0xc,
"RTP Redundancy Support(RRS)", HFILL }
},
- { &hf_uma_urr_location_estimate,
- { "Location estimate","uma.urr.location_estimate",
- FT_UINT8,BASE_DEC, VALS(type_of_shape_vals), 0xf,
- "Location estimate", HFILL }
- },
- { &hf_uma_urr_sign_of_latitude,
- { "ign of latitude","uma.urr.sign_of_latitude",
- FT_UINT8,BASE_DEC, VALS(sign_of_latitude_vals), 0x80,
- "Sign of latitude", HFILL }
- },
- { &hf_uma_urr_degrees_of_latitude,
- { "Degrees of latitude","uma.urr.sign_of_latitude",
- FT_UINT32,BASE_DEC, NULL, 0x3fffff,
- "Degrees of latitude", HFILL }
- },
- { &hf_uma_urr_degrees_of_longitude,
- { "Degrees of longitude","uma.urr.sign_of_longitude",
- FT_UINT32,BASE_DEC, NULL, 0xffffff,
- "Degrees of longitude", HFILL }
- },
{ &hf_uma_urr_IP_Address_type,
{ "IP address type number value","uma.urr.ip_type",
FT_UINT8,BASE_DEC, VALS(IP_address_type_vals), 0x0,