aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-uma.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2005-11-30 20:11:45 +0000
committerAnders Broman <anders.broman@ericsson.com>2005-11-30 20:11:45 +0000
commit0fd0ebef0e2f013444316afc261f949a7478017c (patch)
tree5dd5721e1c5d06bf848971b912d82dd8282a1faa /epan/dissectors/packet-uma.c
parentaf27e7c520b8990a8553fade6591b457dd496eb6 (diff)
Dissct Ptotocol Id 0
svn path=/trunk/; revision=16627
Diffstat (limited to 'epan/dissectors/packet-uma.c')
-rw-r--r--epan/dissectors/packet-uma.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/epan/dissectors/packet-uma.c b/epan/dissectors/packet-uma.c
index ac37f3125c..eaffc1f8ff 100644
--- a/epan/dissectors/packet-uma.c
+++ b/epan/dissectors/packet-uma.c
@@ -109,6 +109,9 @@ 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;
@@ -439,6 +442,13 @@ static const value_string type_of_shape_vals[] = {
};
+/* 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[] = {
{ 0x21, "IPv4 address"},
@@ -944,8 +954,21 @@ 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, ie_len, FALSE);
+ 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;
+ }
+
break;
case 9:
/* UNC SGW IP Address
@@ -1544,6 +1567,7 @@ dissect_uma(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(uma_tree, hf_uma_pd, tvb, offset, 1, FALSE);
switch ( pd ){
+ case 0: /* URR_C */
case 1: /* URR */
offset++;
octet = tvb_get_guint8(tvb,offset);
@@ -1826,6 +1850,21 @@ proto_register_uma(void)
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,