aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-uma.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2005-09-29 20:24:02 +0000
committerAnders Broman <anders.broman@ericsson.com>2005-09-29 20:24:02 +0000
commit855e39b91c68cdc9020fc812829ffba800d135cb (patch)
treeafd2e9d66cba775373025c3370abc5d864cc0e59 /epan/dissectors/packet-uma.c
parent647742574e15e08c03ee0f6259c6895e3589c8f8 (diff)
Update to the latest version of the standard.
svn path=/trunk/; revision=16056
Diffstat (limited to 'epan/dissectors/packet-uma.c')
-rw-r--r--epan/dissectors/packet-uma.c196
1 files changed, 114 insertions, 82 deletions
diff --git a/epan/dissectors/packet-uma.c b/epan/dissectors/packet-uma.c
index c0dbe5344a..5fae498db3 100644
--- a/epan/dissectors/packet-uma.c
+++ b/epan/dissectors/packet-uma.c
@@ -24,7 +24,7 @@
*
* References:
* http://www.umatechnology.org/
- * UMA Protocols (Stage 3) R1.0.3 (2005-02-26)
+ * UMA Protocols (Stage 3) R1.0.4 (5/16/2005)
*
* http://www.3gpp.org/specs/numbering.htm
* 3GPP TS 24.008 V6.2.0 (2003-09)
@@ -104,6 +104,8 @@ static int hf_uma_urr_mnc = -1;
static int hf_uma_urr_lac = -1;
static int hf_uma_urr_gci = -1;
static int hf_uma_urr_tura = -1;
+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;
@@ -118,7 +120,6 @@ static int hf_uma_urr_DTM = -1;
static int hf_uma_urr_GPRS = -1;
static int hf_uma_urr_NMO = -1;
static int hf_uma_urr_ECMC = -1;
-static int hf_uma_urr_EC = -1;
static int hf_uma_urr_T3212_timer = -1;
static int hf_uma_urr_RAC = -1;
static int hf_uma_urr_ap_location = -1;
@@ -145,11 +146,9 @@ static int hf_uma_urr_algorithm_id = -1;
static int hf_uma_urr_GPRS_resumption = -1;
static int hf_uma_urr_ULQI = -1;
static int hf_uma_urr_TU3920_timer = -1;
-static int hf_uma_urr_rate = -1;
-static int hf_uma_urr_precedence = -1;
-static int hf_uma_urr_a_bit = -1;
-static int hf_uma_urr_t_bit = -1;
-static int hf_uma_urr_c_r_bit = -1;
+static int hf_uma_urr_peak_tpt_cls = -1;
+static int hf_uma_urr_radio_pri = -1;
+static int hf_uma_urr_rlc_mode = -1;
static int hf_uma_urr_URLCcause = -1;
static int hf_uma_urr_udr = -1;
static int hf_uma_urr_TU4001_timer = -1;
@@ -184,6 +183,8 @@ static int hf_uma_urr_uma_service_zone_str = -1;
static int hf_uma_urr_suti = -1;
static int hf_uma_urr_uma_mps = -1;
static int hf_uma_urr_num_of_plms = -1;
+static int hf_uma_urr_cbs = -1;
+static int hf_uma_urr_num_of_cbs_frms = -1;
static int hf_uma_urr_unc_ipv4 = -1;
static int hf_uma_unc_FQDN = -1;
static int hf_uma_urr_GPRS_user_data_transport_ipv4 = -1;
@@ -212,6 +213,7 @@ static guint gbl_umaTcpPort1 = 14001;
* Protocol Discriminator (PD)
*/
static const value_string uma_pd_vals[] = {
+ { 0, "URR_C"},
{ 1, "URR"},
{ 2, "URLC"},
{ 0, NULL }
@@ -230,6 +232,7 @@ static const value_string uma_urr_msg_type_vals[] = {
{ 20, "URR DEREGISTER"},
{ 21, "URR REGISTER UPDATE UPLINK"},
{ 22, "URR REGISTER UPDATE DOWNLINK"},
+ { 23, "URR CELL BROADCAST INFO"},
{ 32, "URR CIPHERING MODE COMMAND"},
{ 33, "URR CIPHERING MODE COMPLETE"},
{ 48, "URR ACTIVATE CHANNEL"},
@@ -286,9 +289,9 @@ static const value_string uma_urr_IE_type_vals[] = {
{ 1, "Mobile Identity"},
{ 2, "UMA Release Indicator"},
{ 3, "Radio Identity"},
- { 4, "Cell Identity"},
+ { 4, "GERAN Cell Identity"},
{ 5, "Location Area Identification"},
- { 6, "GSM Coverage Indicator"},
+ { 6, "GERAN/UTRAN Coverage Indicator"},
{ 7, "UMA Classmark"},
{ 8, "Geographical Location"},
{ 9, "UNC SGW IP Address"},
@@ -299,7 +302,7 @@ static const value_string uma_urr_IE_type_vals[] = {
{ 14, "UMA Control Channel Description"},
{ 15, "Cell Identifier List"},
{ 16, "TU3907 Timer"},
- { 17, "GSM RR State"},
+ { 17, "GSM RR/UTRAN RRC State"},
{ 18, "Routing Area Identification"},
{ 19, "UMA Band"},
{ 20, "URR State"},
@@ -353,6 +356,9 @@ static const value_string uma_urr_IE_type_vals[] = {
{ 68, "Registration indicators"},
{ 69, "UMA PLMN List"},
{ 70, "Received Signal Level List"},
+ { 71, "Required UMA Services"},
+ { 72, "Broadcast Container"},
+ { 73, "3G Cell Identity"},
{ 96, "MS Radio Identity"},
{ 97, "UNC IP Address"},
{ 98, "UNC Fully Qualified Domain/Host Name"},
@@ -399,14 +405,19 @@ static const value_string tura_vals[] = {
{ 0, "No radio"},
{ 1, "Bluetooth"},
{ 2, "WLAN 802.11"},
- { 3, "Unspecified"},
+ { 15, "Unspecified"},
{ 0, NULL }
};
-
-/*TLRA, Type of Licensed Radio (octet 3)*/
-static const value_string tlra_vals[] = {
- { 0, "None"},
- { 1, "GERAN"},
+/* GC, GERAN Capable (octet 3) */
+static const value_string gc_vals[] = {
+ { 0, "The MS is not GERAN capable."},
+ { 1, "The MS is GERAN capable."},
+ { 0, NULL }
+};
+/* UC, UTRAN Capable (octet 3) */
+static const value_string uc_vals[] = {
+ { 0, "The MS is not UTRAN capable."},
+ { 1, "The MS is UTRAN capable."},
{ 0, NULL }
};
/*RRS, RTP Redundancy Support (octet 4)*/
@@ -524,6 +535,10 @@ static const value_string Three_GECS_vals[] = {
static const value_string GRS_GSM_RR_State_vals[] = {
{ 0, "GSM RR is in IDLE state"},
{ 1, "GSM RR is in DEDICATED state"},
+ { 2, "UTRAN RRC is in IDLE STATE"},
+ { 3, "UTRAN RRC is in CELL_DCH STATE"},
+ { 4, "UTRAN RRC is in CELL_FACH STATE"},
+ { 7, "Unknown"},
{ 0, NULL }
};
/* UMA Band (4 bit field) */
@@ -622,7 +637,7 @@ static const value_string ULQI_vals[] = {
{ 0, NULL }
};
-static const value_string precedence_vals[] = {
+static const value_string radio_pri_vals[] = {
{ 0, "Radio priority 1"},
{ 1, "Radio priority 2"},
{ 2, "Radio priority 3"},
@@ -630,21 +645,13 @@ static const value_string precedence_vals[] = {
{ 3, "Radio Priority Unknown"},
{ 0, NULL }
};
-static const value_string a_bit_vals[] = {
- { 0, "Radio interface uses RLC/MAC ARQ functionality"},
- { 1, "Radio interface uses RLC/MAC-UNITDATA functionality"},
- { 0, NULL }
-};
-static const value_string t_bit_vals[] = {
- { 0, "The SDU contains signalling (e.g. related to GMM)"},
- { 1, "The SDU contains data"},
- { 0, NULL }
-};
-static const value_string c_r_bit_vals[] = {
- { 0, "The SDU contains a LLC ACK or SACK command/response frame type "},
- { 1, "The SDU does not contain a LLC ACK or SACK command/response frame type"},
+
+static const value_string rlc_mode_vals[] = {
+ { 0, "RLC acknowledged mode"},
+ { 1, "RLC unacknowledged mode"},
{ 0, NULL }
};
+
/*URLC Cause (octet 3) */
static const value_string URLC_cause_vals[] = {
{ 0, "success"},
@@ -709,6 +716,7 @@ static const value_string ICMI_vals[] = {
{ 1, "The initial codec mode is defined by the Start Mode field"},
{ 0, NULL }
};
+
/* MPS, Manual PLMN Selection indicator (octet 3) */
static const value_string mps_vals[] = {
{ 0, "The MS is in Automatic PLMN selection mode."},
@@ -716,6 +724,14 @@ static const value_string mps_vals[] = {
{ 2, "The MS is in Manual PLMN selection mode and tries to register; no PLMN list is needed."},
{ 0, NULL }
};
+
+/* CBS Cell Broadcast Service (octet 3) */
+static const value_string cbs_vals[] = {
+ { 0, "CBS is not required by the Mobile station"},
+ { 1, "CBS is required by the mobile station"},
+ { 0, NULL }
+};
+
/* LBLI, Location Black List indicator (octet 3) */
static const value_string LBLI_vals[] = {
{ 0, "MCC"},
@@ -771,8 +787,9 @@ static const value_string RI_vals[] = {
/* Window Size (octet 3 to octet n) */
static const value_string window_size_vals[] = {
- { 0, "Window size 1 (single redundancy)"},
- { 1, "Window size 2 (double redundancy)"},
+ { 0, "Window size 1, No redundancy"},
+ { 1, "Window size 2 (single redundancy)"},
+ { 2, "Window size 3 (double redundancy)"},
{ 0, NULL }
};
@@ -873,6 +890,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
}
switch(ie_value){
+ /* 11.2.1 Mobile Identity */
case 1:
/* Mobile Identity
* The rest of the IE is coded as in [TS 24.008] not including IEI and
@@ -916,7 +934,8 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
case 7:
/* UMA Classmark */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_tura, tvb, ie_offset, 1, FALSE);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_tlra, tvb, ie_offset, 1, FALSE);
+ proto_tree_add_item(urr_ie_tree, hf_uma_urr_gc, tvb, ie_offset, 1, FALSE);
+ proto_tree_add_item(urr_ie_tree, hf_uma_urr_uc, tvb, ie_offset, 1, FALSE);
/* UMA Protocols (Stage 3) R1.0.3 */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_rrs, tvb, ie_offset, 1, FALSE);
break;
@@ -966,7 +985,6 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
case 14:
/* UMA Control Channel Description
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_EC, tvb, ie_offset, 1, FALSE);
proto_tree_add_item(urr_ie_tree, hf_uma_urr_ECMC, tvb, ie_offset, 1, FALSE);
proto_tree_add_item(urr_ie_tree, hf_uma_urr_NMO, tvb, ie_offset, 1, FALSE);
proto_tree_add_item(urr_ie_tree, hf_uma_urr_GPRS, tvb, ie_offset, 1, FALSE);
@@ -988,6 +1006,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
proto_tree_add_item(urr_ie_tree, hf_uma_urr_3GECS, tvb, ie_offset, 1, FALSE);
ie_offset++;
proto_tree_add_text(urr_ie_tree,tvb,ie_offset,2,"Access Control Class N");
+ /* These fields are specified and described in 3GPP TS 44.018 and 3GPP TS 22.011. */
break;
case 15:
/* Cell Identifier List
@@ -1104,24 +1123,19 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
case 37: /* TU3920 Timer */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_TU3920_timer, tvb, ie_offset, 2, FALSE);
break;
+ /* 11.2.38 QoS */
case 38:
/* QoS
- * The rest of the IE is coded as QoS Profile IE in [TS 48.018], not including IEI and length, if present.
- * octet 3-4 Peak bit rate provided by the network, coded as the Bucket Leak Rate "R value" part,
- * see sub-clause 11.3.4 (note)
- * NOTE: The bit rate 0 (zero) shall mean "best effort" in this IE.
- * The R field is the binary encoding of the rate information expressed in 100 bits/s increments,
- * starting from 0 x 100 bits/s until 65 535 x 100 bits/s (6 Mbps).
+ * PEAK_THROUGHPUT_CLASS (octet 3, bits 1-4)
+ * This field is coded as PEAK_THROUGHPUT_CLASS field in
+ * the Channel Request Description information
+ * element specified in [TS 44.060]
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_rate, tvb, ie_offset, 1, FALSE);
- ie_offset = ie_offset + 2;
- /*
- * octet 5 SPARE C/R T A Precedence
- */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_precedence, tvb, ie_offset, 1, FALSE);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_a_bit, tvb, ie_offset, 1, FALSE);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_t_bit, tvb, ie_offset, 1, FALSE);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_c_r_bit, tvb, ie_offset, 1, FALSE);
+ proto_tree_add_item(urr_ie_tree, hf_uma_urr_peak_tpt_cls, tvb, ie_offset, 1, FALSE);
+ /* RADIO_PRIORITY (octet 3, bits 5-6) */
+ proto_tree_add_item(urr_ie_tree, hf_uma_urr_radio_pri, tvb, ie_offset, 1, FALSE);
+ /* RLC_MODE (octet 3, bit 7) */
+ proto_tree_add_item(urr_ie_tree, hf_uma_urr_rlc_mode, tvb, ie_offset, 1, FALSE);
break;
case 39: /* URLC Cause */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_URLCcause, tvb, ie_offset, 1, FALSE);
@@ -1184,6 +1198,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
*/
proto_tree_add_item(urr_ie_tree, hf_uma_urr_payload_type, tvb, ie_offset, 1, FALSE);
break;
+ /* 11.2.55 Multirate Configuration */
case 55:
/* Multi-rate Configuration
* The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present
@@ -1261,6 +1276,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* UMA Service Zone string, 1st character */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_uma_service_zone_str, tvb, ie_offset, str_len, FALSE);
break;
+ /* 11.2.63 RTP Redundancy Configuration */
case 63:
/* RTP Redundancy Configuration */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_window_size, tvb, ie_offset, 1, FALSE);
@@ -1313,9 +1329,25 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* TODO insert while loop here */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_lac, tvb, ie_offset, 2, FALSE);
break;
+ /* 11.2.70 Received Signal Level List */
case 70:
/* Received Signal Level List */
break;
+ /* 11.2.71 Required UMA Services */
+ case 71:
+ /* CBS Cell Broadcast Service (octet 3) */
+ proto_tree_add_item(urr_ie_tree, hf_uma_urr_cbs, tvb, ie_offset, 1, FALSE);
+ break;
+ /* 11.2.72 Broadcast Container */
+ case 72:
+ octet = tvb_get_guint8(tvb,ie_offset);
+ proto_tree_add_item(urr_ie_tree, hf_uma_urr_num_of_cbs_frms , tvb, ie_offset, 1, FALSE);
+ proto_tree_add_text(urr_ie_tree, tvb, ie_offset + 1, ie_len-1,"CBS Frames - Not decoded");
+ break;
+ /* 11.2.73 3G Cell Identity */
+ case 73:
+ /* The rest of the IE is coded as in [TS 25.331] not including IEI and length, if present. */
+ break;
case 96: /* MS Radio Identity */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_radio_type_of_id, tvb, ie_offset, 1, FALSE);
octet = tvb_get_guint8(tvb,ie_offset);
@@ -1771,13 +1803,18 @@ proto_register_uma(void)
},
{ &hf_uma_urr_tura,
{ "TURA, Type of Unlicensed Radio","uma.urr.tura",
- FT_UINT8,BASE_DEC, VALS(tura_vals), 0x3,
+ FT_UINT8,BASE_DEC, VALS(tura_vals), 0xf,
"TURA, Type of Unlicensed Radio", HFILL }
},
- { &hf_uma_urr_tlra,
- { "TLRA, Type of Licensed Radio","uma.urr.tlra",
- FT_UINT8,BASE_DEC, VALS(tlra_vals), 0xc,
- "TLRA, Type of Licensed Radio", HFILL }
+ { &hf_uma_urr_gc,
+ { "GC, GERAN Capable","uma.urr.gc",
+ FT_UINT8,BASE_DEC, VALS(gc_vals), 0x10,
+ "GC, GERAN Capable", HFILL }
+ },
+ { &hf_uma_urr_uc,
+ { "UC, UTRAN Capable","uma.urr.uc",
+ FT_UINT8,BASE_DEC, VALS(uc_vals), 0x20,
+ "GC, GERAN Capable", HFILL }
},
{ &hf_uma_urr_rrs,
{ "RTP Redundancy Support(RRS)","uma.urr.rrs",
@@ -1814,11 +1851,6 @@ proto_register_uma(void)
FT_UINT8,BASE_DEC, VALS(discovery_reject_cause_vals), 0x0,
"Discovery Reject Cause", HFILL }
},
- { &hf_uma_urr_EC,
- { "EC Emergency Call allowed","uma.urr.EC",
- FT_UINT8,BASE_DEC, VALS(EC_vals), 0x1,
- "EC Emergency Call allowed", HFILL }
- },
{ &hf_uma_urr_ECMC,
{ "ECMC, Early Classmark Sending Control","uma.urr.is_rej_cau",
FT_UINT8,BASE_DEC, VALS(ECMC_vals), 0x2,
@@ -1906,7 +1938,7 @@ proto_register_uma(void)
},
{ &hf_uma_urr_GSM_RR_state,
{ "GSM RR State value","uma.urr.gsmrrstate",
- FT_UINT8,BASE_DEC, VALS(GRS_GSM_RR_State_vals), 0x1,
+ FT_UINT8,BASE_DEC, VALS(GRS_GSM_RR_State_vals), 0x7,
"GSM RR State value", HFILL }
},
{ &hf_uma_urr_UMA_band,
@@ -1979,30 +2011,20 @@ proto_register_uma(void)
FT_UINT16,BASE_DEC, NULL, 0x0,
"TU3920 Timer value(seconds)", HFILL }
},
- { &hf_uma_urr_rate,
- { "Peak bit rate provided by the network(100 bits/s)","uma.urr.tu3920",
- FT_UINT16,BASE_DEC, NULL, 0x0,
- "Peak bit rate provided by the network(100 bits/s)", HFILL }
- },
- { &hf_uma_urr_precedence,
- { "Precedence","uma.urr.precedence",
- FT_UINT8,BASE_DEC, VALS(precedence_vals), 0x7,
- "Precedence", HFILL }
- },
- { &hf_uma_urr_a_bit,
- { "A bit","uma.urr.a_bit",
- FT_UINT8,BASE_DEC, VALS(a_bit_vals), 0x8,
- "A bit", HFILL }
+ { &hf_uma_urr_peak_tpt_cls,
+ { "PEAK_THROUGHPUT_CLASS","uma.urr.peak_tpt_cls",
+ FT_UINT8,BASE_DEC, NULL, 0x0f,
+ "PEAK_THROUGHPUT_CLASS", HFILL }
},
- { &hf_uma_urr_t_bit,
- { "T bit","uma.urr.t_bit",
- FT_UINT8,BASE_DEC, VALS(t_bit_vals), 0x10,
- "T bit", HFILL }
+ { &hf_uma_urr_radio_pri,
+ { "Radio Priority","uma.urr.radio_pri",
+ FT_UINT8,BASE_DEC, VALS(radio_pri_vals), 0x30,
+ "RADIO_PRIORITY", HFILL }
},
- { &hf_uma_urr_c_r_bit,
- { "C/R bit","uma.urr.c_r_bit",
- FT_UINT8,BASE_DEC, VALS(c_r_bit_vals), 0x20,
- "C/R bit", HFILL }
+ { &hf_uma_urr_rlc_mode,
+ { "RLC mode","uma.urr.rrlc_mode",
+ FT_UINT8,BASE_DEC, VALS(rlc_mode_vals), 0x80,
+ "RLC mode", HFILL }
},
{ &hf_uma_urr_URLCcause,
{ "URLC Cause","uma.urr.URLCcause",
@@ -2164,6 +2186,16 @@ proto_register_uma(void)
FT_UINT8,BASE_DEC, NULL, 0x0,
"Number of PLMN:s", HFILL }
},
+ { &hf_uma_urr_cbs,
+ { "CBS Cell Broadcast Service","uma.urr.cbs",
+ FT_UINT8,BASE_DEC, VALS(cbs_vals), 0x01,
+ "CBS Cell Broadcast Service", HFILL }
+ },
+ { &hf_uma_urr_num_of_cbs_frms,
+ { "Number of CBS Frames","uma.urr.num_of_cbs_frms",
+ FT_UINT8,BASE_DEC, NULL, 0x0,
+ "Number of CBS Frames", HFILL }
+ },
{ &hf_uma_urr_ms_radio_id,
{ "MS Radio Identity","uma.urr.ms_radio_id",
FT_ETHER, BASE_DEC, NULL, 0x00,