diff options
Diffstat (limited to 'epan/dissectors/packet-uma.c')
-rw-r--r-- | epan/dissectors/packet-uma.c | 71 |
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, |