aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-uma.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2005-07-14 21:05:38 +0000
committerAnders Broman <anders.broman@ericsson.com>2005-07-14 21:05:38 +0000
commita5e89b2793b805e6edc7a25c2d9b4aa05c0e1dc2 (patch)
tree28845ab3852be12d26e22d5ca8f8466b48317eb5 /epan/dissectors/packet-uma.c
parent98a0c9a590a415d8f27127ec4057892f4833efd7 (diff)
Packet-gtp.c - Fix up decoding of the rest of the IE:s use routines from packet-gsm_a.c
Packet-uma.c Let packet-gsm_a handle som IE dissection. Packet-gsm.a add some IE dissection and export some routines. svn path=/trunk/; revision=14918
Diffstat (limited to 'epan/dissectors/packet-uma.c')
-rw-r--r--epan/dissectors/packet-uma.c518
1 files changed, 25 insertions, 493 deletions
diff --git a/epan/dissectors/packet-uma.c b/epan/dissectors/packet-uma.c
index e882f7a80b..a1918f0e90 100644
--- a/epan/dissectors/packet-uma.c
+++ b/epan/dissectors/packet-uma.c
@@ -131,12 +131,8 @@ static int hf_uma_urr_ECMP = -1;
static int hf_uma_urr_RE = -1;
static int hf_uma_urr_PFCFM = -1;
static int hf_uma_urr_3GECS = -1;
-static int hf_uma_urr_cell_id_disc = -1;
-static int hf_uma_urr_RNC_ID = -1;
-static int hf_uma_urr_ci = -1;
static int hf_uma_urr_bcc = -1;
static int hf_uma_urr_ncc = -1;
-static int hf_uma_urr_bcch_arfcn = -1;
static int hf_uma_urr_TU3907_timer = -1;
static int hf_uma_urr_GSM_RR_state = -1;
static int hf_uma_urr_UMA_band = -1;
@@ -149,31 +145,10 @@ static int hf_uma_urr_communication_port = -1;
static int hf_uma_urr_L3_Message = -1;
static int hf_uma_urr_L3_protocol_discriminator = -1;
static int hf_uma_urr_channel_mode = -1;
-static int hf_uma_urr_MSC2_rev = -1;
-static int hf_uma_urr_ES_IND = -1;
-static int hf_uma_urr_A5_1_algorithm_sup = -1;
-static int hf_uma_urr_RF_power_capability = -1;
-static int hf_uma_urr_ps_sup_cap = -1;
-static int hf_uma_urr_SS_screening_indicator = -1;
-static int hf_uma_urr_SM_capability = -1;
-static int hf_uma_urr_VBS_notification_rec = -1;
-static int hf_uma_urr_VGCS_notification_rec = -1;
-static int hf_uma_urr_FC_frequency_cap = -1;
-static int hf_uma_urr_CM3 = -1;
-static int hf_uma_urr_LCS_VA_cap = -1;
-static int hf_uma_urr_UCS2_treatment = -1;
-static int hf_uma_urr_SoLSA = -1;
-static int hf_uma_urr_CMSP = -1;
-static int hf_uma_urr_A5_3_algorithm_sup= -1;
-static int hf_uma_urr_A5_2_algorithm_sup = -1;
-static int hf_uma_urr_RR_cause = -1;
static int hf_uma_urr_sc = -1;
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_TLLI = -1;
-static int hf_uma_urr_packet_flow_id = -1;
-static int hf_uma_urr_suspension_cause = -1;
static int hf_uma_urr_TU3920_timer = -1;
static int hf_uma_urr_rate = -1;
static int hf_uma_urr_precedence = -1;
@@ -599,30 +574,7 @@ static const value_string MSC2_rev_vals[] = {
{ 3, "Reserved for future use"},
{ 0, NULL }
};
-/* RR cause value (octet 2) */
-static const value_string RR_cause_vals[] = {
- { 0, "Normal event"},
- { 1, "Abnormal release, unspecified"},
- { 2, "Abnormal release, channel unacceptable"},
- { 3, "Abnormal release, timer expired"},
- { 4, "Abnormal release, no activity on the radio path"},
- { 5, "Preemptive release"},
- { 6, "UTRAN configuration unknown"},
- { 8, "Handover impossible, timing advance out of range"},
- { 9, "Channel mode unacceptable"},
- { 10, "Frequency not implemented"},
- { 13, "Originator or talker leaving group call area"},
- { 12, "Lower layer failure"},
- { 0x41, "Call already cleared"},
- { 0x5f, "Semantically incorrect message"},
- { 0x60, "Invalid mandatory information"},
- { 0x61, "Message type non-existent or not implemented"},
- { 0x62, "Message type not compatible with protocol state"},
- { 0x64, "Conditional IE error"},
- { 0x65, "No cell allocation available"},
- { 0x6f, "Protocol error unspecified"},
- { 0, NULL }
-};
+
/* Register Reject Cause (octet 3) */
static const value_string register_reject_cause_vals[] = {
{ 0, "Network Congestion"},
@@ -660,133 +612,6 @@ static const value_string protocol_discriminator_vals[] = {
{0xf, "Reserved for tests procedures described in 3GPP TS 44.014 [5a] and 3GPP TS 34.109 [17a]."},
{ 0, NULL }
};
-/* Channel Mode */
-static const value_string channel_mode_vals[] = {
-{ 0x00, "signalling only"},
-{ 0x01, "speech full rate or half rate version 1(GSM FR or GSM HR)"},
-{ 0x21, "speech full rate or half rate version 2(GSM EFR)"},
-{ 0x41, "speech full rate or half rate version 3(FR AMR or HR AMR)"},
-{ 0x81, "speech full rate or half rate version 4(OFR AMR-WB or OHR AMR-WB)"},
-{ 0x82, "speech full rate or half rate version 5(FR AMR-WB )"},
-{ 0x83, "speech full rate or half rate version 6(OHR AMR )"},
-{ 0x61, "data, 43.5 kbit/s (downlink)+14.5 kbps (uplink)"},
-{ 0x62, "data, 29.0 kbit/s (downlink)+14.5 kbps (uplink)"},
-{ 0x64, "data, 43.5 kbit/s (downlink)+29.0 kbps (uplink)"},
-{ 0x67, "data, 14.5 kbit/s (downlink)+43.5 kbps (uplink)"},
-{ 0x65, "data, 14.5 kbit/s (downlink)+29.0 kbps (uplink)"},
-{ 0x66, "data, 29.0 kbit/s (downlink)+43.5 kbps (uplink)"},
-{ 0x27, "data, 43.5 kbit/s radio interface rate"},
-{ 0x63, "data, 32.0 kbit/s radio interface rate"},
-{ 0x43, "data, 29.0 kbit/s radio interface rate"},
-{ 0x0f, "data, 14.5 kbit/s radio interface rate"},
-{ 0x03, "data, 12.0 kbit/s radio interface rate"},
-{ 0x0b, "data, 6.0 kbit/s radio interface rate"},
-{ 0x13, "data, 3.6 kbit/s radio interface rate"},
- { 0, NULL }
-};
-/* ES IND (octet 3, bit 5) "Controlled Early Classmark Sending" option implementation */
-static const value_string ES_IND_vals[] = {
- { 0, "Controlled Early Classmark Sending option is not implemented in the MS"},
- { 1, "Controlled Early Classmark Sending option is implemented in the MS"},
- { 0, NULL }
-};
-/* A5/1 algorithm supported (octet 3, bit 4 */
-static const value_string A5_1_algorithm_sup_vals[] = {
- { 0, "encryption algorithm A5/1 available"},
- { 1, "encryption algorithm A5/1 not available"},
- { 0, NULL }
-};
-/* RF Power Capability (Octet 3) */
-static const value_string RF_power_capability_vals[] = {
- { 0, "class 1"},
- { 1, "class 2"},
- { 2, "class 3"},
- { 3, "class 4"},
- { 4, "class 5"},
- { 7, "RF Power capability is irrelevant in this information element"},
- { 0, NULL }
-};
-/* PS capability (pseudo-synchronization capability) (octet 4) */
-static const value_string ps_sup_cap_vals[] = {
- { 0, "PS capability not present"},
- { 1, "PS capability present"},
- { 0, NULL }
-};
-/* SS Screening Indicator (octet 4)defined in 3GPP TS 24.080 */
-static const value_string SS_screening_indicator_vals[] = {
- { 0, "Default value of phase 1"},
- { 1, "Capability of handling of ellipsis notation and phase 2 error handling "},
- { 2, "For future use"},
- { 3, "For future use"},
- { 0, NULL }
-};
-/* SM capability (MT SMS pt to pt capability) (octet 4)*/
-static const value_string SM_capability_vals[] = {
- { 0, "Mobile station does not support mobile terminated point to point SMS"},
- { 1, "Mobile station supports mobile terminated point to point SMS"},
- { 0, NULL }
-};
-/* VBS notification reception (octet 4) */
-static const value_string VBS_notification_rec_vals[] = {
- { 0, "no VBS capability or no notifications wanted"},
- { 1, "VBS capability and notifications wanted"},
- { 0, NULL }
-};
-/* VGCS notification reception (octet 4) */
-static const value_string VGCS_notification_rec_vals[] = {
- { 0, "no VGCS capability or no notifications wanted"},
- { 1, "VGCS capability and notifications wanted"},
- { 0, NULL }
-};
-/* FC Frequency Capability (octet 4 ) */
-static const value_string FC_frequency_cap_vals[] = {
- { 0, "The MS does not support the E-GSM or R-GSM band"},
- { 1, "The MS does support the E-GSM or R-GSM "},
- { 0, NULL }
-};
-/* CM3 (octet 5, bit 8) */
-static const value_string CM3_vals[] = {
- { 0, "The MS does not support any options that are indicated in CM3"},
- { 1, "The MS supports options that are indicated in classmark 3 IE"},
- { 0, NULL }
-};
-/* LCS VA capability (LCS value added location request notification capability) (octet 5,bit 6) */
-static const value_string LCS_VA_cap_vals[] = {
- { 0, "LCS value added location request notification capability not supported"},
- { 1, "LCS value added location request notification capability supported"},
- { 0, NULL }
-};
-/* UCS2 treatment (octet 5, bit 5) */
-static const value_string UCS2_treatment_vals[] = {
- { 0, "the ME has a preference for the default alphabet"},
- { 1, "the ME has no preference between the use of the default alphabet and the use of UCS2"},
- { 0, NULL }
-};
-/* SoLSA (octet 5, bit 4) */
-static const value_string SoLSA_vals[] = {
- { 0, "The ME does not support SoLSA"},
- { 1, "The ME supports SoLSA"},
- { 0, NULL }
-};
-/* CMSP: CM Service Prompt (octet 5, bit 3) */
-static const value_string CMSP_vals[] = {
- { 0, "Network initiated MO CM connection request not supported"},
- { 1, "Network initiated MO CM connection request supported for at least one CM protocol"},
- { 0, NULL }
-};
-/* A5/3 algorithm supported (octet 5, bit 2) */
-static const value_string A5_3_algorithm_sup_vals[] = {
- { 0, "encryption algorithm A5/3 available"},
- { 1, "encryption algorithm A5/3 not available"},
- { 0, NULL }
-};
-
-/* A5/2 algorithm supported (octet 5, bit 1) */
-static const value_string A5_2_algorithm_sup_vals[] = {
- { 0, "encryption algorithm A5/2 available"},
- { 1, "encryption algorithm A5/3 not available"},
- { 0, NULL }
-};
/* algorithm identifier
* If SC=1 then:
@@ -834,17 +659,7 @@ static const value_string packet_flow_id_vals[] = {
{ 3, "TOM8"},
{ 0, NULL }
};
-/*Suspension cause value (octet 2)*/
-static const value_string suspension_cause_vals[] = {
- { 0, "Emergency call, mobile originating call or call re-establishment"},
- { 1, "Location Area Update"},
- { 2, "MO Short message service"},
- { 3, "Other procedure which can be completed with an SDCCH"},
- { 4, "MO Voice broadcast or group call"},
- { 5, "Mobile terminating CS connection"},
- { 6, "DTM not supported in the cell"},
- { 0, NULL }
-};
+
static const value_string precedence_vals[] = {
{ 0, "Radio priority 1"},
{ 1, "Radio priority 2"},
@@ -1042,6 +857,7 @@ dissect_mcc_mnc(tvbuff_t *tvb, proto_tree *urr_ie_tree, int offset){
}
proto_tree_add_uint(urr_ie_tree, hf_uma_urr_mcc , tvb, start_offset, 2, mcc );
proto_tree_add_uint(urr_ie_tree, hf_uma_urr_mnc , tvb, start_offset + 1, 2, mnc );
+ offset++;
return offset;
}
static int
@@ -1053,13 +869,8 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
guint8 ie_value;
guint16 ie_len = 0;
guint8 octet;
- guint8 mobile_identity_type;
proto_item *urr_ie_item;
proto_tree *urr_ie_tree;
- char digit_str[16]; /* Max no of digits = 15 */
- guint16 i,n;
- guint16 num_digits;
- guint16 bcch_arfcn;
const guint8 *haddr;
char *string;
guint16 GPRS_user_data_transport_UDP_port,UNC_tcp_port,RTP_UDP_port,RTCP_UDP_port, communication_port;
@@ -1100,61 +911,13 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
}
switch(ie_value){
- case 1: /* Mobile Identity */
- octet = tvb_get_guint8(tvb,ie_offset);
- mobile_identity_type = octet & 0x7;
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_mobile_identity_type, tvb, ie_offset, 1, FALSE);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_odde_even_ind, tvb, ie_offset, 1, FALSE);
-
- i = 0;
- n = 0;
- num_digits = 1 + ((ie_len-1) * 2);
- if ((octet & 0x8) == 0 ) num_digits--; /* Even number of digits */
- octet = octet >> 4;
- digit_str[i] = octet + 0x30;
- n++;
- i++;
- while ( i < 16 ){
- octet = tvb_get_guint8(tvb,ie_offset+n);
- digit_str[i] = ( octet & 0xf ) + 0x30;
- if ( i == num_digits-1){
- i++;
- digit_str[i] = '\0';
- break;
- }
- i++;
- digit_str[i] = ( octet >> 4 ) + 0x30;
- if ( i == num_digits-1){
- i++;
- digit_str[i] = '\0';
- break;
- }
- i++;
- n++;
- }
- switch(mobile_identity_type){
- case 1:
- /*IMSI*/
- proto_tree_add_string(urr_ie_tree, hf_uma_urr_imsi, tvb, ie_offset, ie_len, digit_str);
- break;
- case 2:
- /*IMEI*/
- proto_tree_add_string(urr_ie_tree, hf_uma_urr_imei, tvb, ie_offset, ie_len, digit_str);
- break;
- case 3:
- /*IMEISV*/
- proto_tree_add_string(urr_ie_tree, hf_uma_urr_imeisv, tvb, ie_offset, ie_len, digit_str);
- break;
- case 4 :
- /*TMSI/P-TMSI*/
- proto_tree_add_string(urr_ie_tree, hf_uma_urr_tmsi_p_tmsi, tvb, ie_offset, ie_len, digit_str);
- break;
- default: /*No Identity*/
- proto_tree_add_text(urr_ie_tree, tvb, ie_offset, ie_len,"No Identity");
-
- break;
- }
- break;
+ case 1:
+ /* Mobile Identity
+ * The rest of the IE is coded as in [TS 24.008] not including IEI and
+ * length, if present.(10.5.1.4)
+ */
+ de_mid(tvb, urr_ie_tree, offset, ie_len, "");
+ break;
case 2:
/* UMA Release Indicator */
@@ -1181,10 +944,8 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Location Area Identification
* The rest of the IE is coded as in [TS 24.008] not including IEI and
* length, if present.
- *
- * Mobile country code MCC */
- ie_offset = dissect_mcc_mnc(tvb, urr_ie_tree, ie_offset);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_lac, tvb, ie_offset, 2, FALSE);
+ */
+ de_lai(tvb, urr_ie_tree, offset, ie_len, "");
break;
case 6:
/* GSM Coverage Indicator */
@@ -1239,11 +1000,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* UMA Cell Description
* The rest of the IE is coded as in [TS 44.018], Cell Description IE, not including IEI and length, if present
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_bcc, tvb, ie_offset, 1, FALSE);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_ncc, tvb, ie_offset, 1, FALSE);
- bcch_arfcn = (tvb_get_guint8(tvb,ie_offset) & 0xc0) << 2;
- bcch_arfcn = bcch_arfcn | tvb_get_guint8(tvb,ie_offset+1);
- proto_tree_add_uint(urr_ie_tree, hf_uma_urr_bcch_arfcn , tvb, ie_offset, 2, bcch_arfcn );
+ de_rr_cell_dsc(tvb, urr_ie_tree, ie_offset, ie_len, "");
break;
case 14:
/* UMA Control Channel Description
@@ -1274,60 +1031,8 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
case 15:
/* Cell Identifier List
* The rest of the IE is coded as in [TS 48.008], not including IEI and length, if present
- *
- * Cell identification discriminator
*/
- octet = tvb_get_guint8(tvb,ie_offset);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_cell_id_disc, tvb, ie_offset, 1, FALSE);
- ie_offset++;
- /* TODO make a proper loop over the list, once an example trace is avalable */
- switch (octet & 0xf){
- case 0:
- ie_offset = dissect_mcc_mnc(tvb, urr_ie_tree, ie_offset);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_lac, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset +2;
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_ci, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset + 2;
- break;
- case 1:
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_lac, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset + 2;
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_ci, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset + 2;
- break;
- case 2:
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_ci, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset + 2;
- break;
- case 4:
- ie_offset = dissect_mcc_mnc(tvb, urr_ie_tree, ie_offset);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_lac, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset +2;
- break;
- case 5:
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_lac, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset + 2;
- case 8:
- ie_offset = dissect_mcc_mnc(tvb, urr_ie_tree, ie_offset);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_lac, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset +2;
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_RNC_ID, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset + 2;
- break;
- case 9:
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_RNC_ID, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset + 2;
- break;
- case 10:
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_lac, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset + 2;
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_RNC_ID, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset + 2;
- break;
- default:
- proto_tree_add_text(urr_ie_tree,tvb,offset+1,ie_len,"Unknown Cell identification discriminator");
- break;
- }
+ be_cell_id_list(tvb, urr_ie_tree, offset, ie_len, "");
break;
case 16: /* TU3907 Timer */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_TU3907_timer, tvb, ie_offset, 2, FALSE);
@@ -1337,11 +1042,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
break;
case 18: /* Routing Area Identification */
/* The rest of the IE is coded as in [TS 24.008] not including IEI and length, if present.*/
- ie_offset = dissect_mcc_mnc(tvb, urr_ie_tree, ie_offset);
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_lac, tvb, ie_offset, 2, FALSE);
- ie_offset = ie_offset +2;
- /*Routing area code */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_RAC, tvb, ie_offset, 1, FALSE);
+ de_gmm_rai(tvb, urr_ie_tree, offset, ie_len, "");
break;
case 19: /* UMA Band */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_UMA_band, tvb, ie_offset, 1, FALSE);
@@ -1378,72 +1079,32 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Channel Mode
* The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_channel_mode, tvb, ie_offset, ie_len, FALSE);
+ de_rr_ch_mode(tvb, urr_ie_tree, offset, ie_len, "");
break;
case 28:
/* Mobile Station Classmark 2
* The rest of the IE is coded as in [TS 24.008], not including IEI and length, if present
*/
- /* Revision level bit 7 6 */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_MSC2_rev, tvb, ie_offset, 1, FALSE);
- /* ES IND (octet 3, bit 5) "Controlled Early Classmark Sending" option implementation */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_ES_IND, tvb, ie_offset, 1, FALSE);
- /* A5/1 algorithm supported (octet 3, bit 4) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_A5_1_algorithm_sup, tvb, ie_offset, 1, FALSE);
- /* RF Power Capability (Octet 3) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_RF_power_capability, tvb, ie_offset, 1, FALSE);
- ie_offset++;
- /* PS capability (pseudo-synchronization capability) (octet 4) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_ps_sup_cap, tvb, ie_offset, 1, FALSE);
- /* SS Screening Indicator (octet 4)defined in 3GPP TS 24.080 */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_SS_screening_indicator, tvb, ie_offset, 1, FALSE);
- /* SM capability (MT SMS pt to pt capability) (octet 4)*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_SM_capability, tvb, ie_offset, 1, FALSE);
- /* VBS notification reception (octet 4) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_VBS_notification_rec, tvb, ie_offset, 1, FALSE);
- /*VGCS notification reception (octet 4)*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_VGCS_notification_rec, tvb, ie_offset, 1, FALSE);
- /* FC Frequency Capability (octet 4 ) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_FC_frequency_cap, tvb, ie_offset, 1, FALSE);
- ie_offset++;
- /* CM3 (octet 5, bit 8) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_CM3, tvb, ie_offset, 1, FALSE);
- /* LCS VA capability (LCS value added location request notification capability) (octet 5,bit 6) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_LCS_VA_cap, tvb, ie_offset, 1, FALSE);
- /* UCS2 treatment (octet 5, bit 5) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_UCS2_treatment, tvb, ie_offset, 1, FALSE);
- /* SoLSA (octet 5, bit 4) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_SoLSA, tvb, ie_offset, 1, FALSE);
- /* CMSP: CM Service Prompt (octet 5, bit 3) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_CMSP, tvb, ie_offset, 1, FALSE);
- /* A5/3 algorithm supported (octet 5, bit 2) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_A5_3_algorithm_sup, tvb, ie_offset, 1, FALSE);
- /* A5/2 algorithm supported (octet 5, bit 1) */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_A5_2_algorithm_sup, tvb, ie_offset, 1, FALSE);
+ de_ms_cm_2(tvb, urr_ie_tree, ie_offset, ie_len, "");
break;
case 29:
/* RR Cause
* The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_RR_cause, tvb, ie_offset, 1, FALSE);
+ de_rr_cause(tvb, urr_ie_tree, ie_offset, 1, "");
break;
case 30:
/* Cipher Mode Setting
* Note: The coding of fields SC and algorithm identifier is defined in [44.018]
* as part of the Cipher Mode Setting IE.
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_sc, tvb, ie_offset, 1, FALSE);
- octet = tvb_get_guint8(tvb,ie_offset);
- if ( (octet & 1) == 1){ /* Start ciphering */
- /* algorithm identifier */
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_algorithm_id, tvb, ie_offset, 1, FALSE);
- }
+ de_rr_cip_mode_set(tvb, urr_ie_tree, offset, ie_len, "");
break;
case 31:
/* GPRS Resumption
* If the target RAT is GERAN, the rest of the IE is coded as HANDOVER COMMAND message in [TS 44.018]
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_GPRS_resumption, tvb, ie_offset, 1, FALSE);
+ dtap_rr_ho_cmd(tvb, urr_ie_tree, offset, ie_len);
break;
case 32:
/* Handover From UMAN Command
@@ -1459,22 +1120,22 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
case 34:
/* TLLI
* The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present.
- * [TS 44.018]:
+ * [TS 44.018]:10.5.2.41a
* The TLLI is encoded as a binary number with a length of 4 octets. TLLI is defined in 3GPP TS 23.003
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_TLLI, tvb, ie_offset, 1, FALSE);
+ de_rr_tlli(tvb, urr_ie_tree, offset, ie_len, "");
break;
case 35:
/* Packet Flow Identifier
* The rest of the IE is coded as in [TS 24.008], not including IEI and length, if present.
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_packet_flow_id, tvb, ie_offset, 1, FALSE);
+ de_sm_pflow_id(tvb, urr_ie_tree, offset, ie_len, "");
break;
case 36:
/* Suspension Cause
* The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present.
*/
- proto_tree_add_item(urr_ie_tree, hf_uma_urr_suspension_cause, tvb, ie_offset, 1, FALSE);
+ de_rr_sus_cau(tvb, urr_ie_tree, offset, ie_len, "");
break;
case 37: /* TU3920 Timer */
proto_tree_add_item(urr_ie_tree, hf_uma_urr_TU3920_timer, tvb, ie_offset, 2, FALSE);
@@ -1651,6 +1312,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Classmark Enquiry Mask
* The rest of the IE is the Classmark Enquiry Mask coded as in [TS 44.018], not including IEI and length, if present
*/
+ de_rr_cm_enq_mask(tvb, urr_ie_tree, offset, ie_len, "");
break;
case 66:
/* UTRAN Cell Identifier List
@@ -2258,21 +1920,6 @@ proto_register_uma(void)
FT_UINT8,BASE_DEC, VALS(Three_GECS_vals), 0x10,
"3GECS, 3G Early Classmark Sending Restriction", HFILL }
},
- { &hf_uma_urr_cell_id_disc,
- { "Cell identification discriminator","uma.urr.cell_id_disc",
- FT_UINT8,BASE_DEC, VALS(cell_id_disc_vals), 0x0f,
- "Cell identificationdiscriminator", HFILL }
- },
- { &hf_uma_urr_ci,
- { "Cell identification ","uma.urr.ci",
- FT_UINT16,BASE_DEC, NULL, 0x0,
- "Cell identification ", HFILL }
- },
- { &hf_uma_urr_RNC_ID,
- { "RNC-ID","uma.urr.rnc_id",
- FT_UINT16,BASE_DEC, NULL, 0x0,
- "RNC-ID", HFILL }
- },
{ &hf_uma_urr_bcc,
{ "BCC","uma.urr.bcc",
FT_UINT8,BASE_DEC, NULL, 0x07,
@@ -2283,11 +1930,6 @@ proto_register_uma(void)
FT_UINT8,BASE_DEC, NULL, 0x38,
"NCC", HFILL }
},
- { &hf_uma_urr_bcch_arfcn,
- { "BCCH ARFCN(RF channel number)","uma.urr.bcch_arfcn",
- FT_UINT16,BASE_DEC, NULL, 0x0,
- "BCCH ARFCN", HFILL }
- },
{ &hf_uma_urr_TU3907_timer,
{ "TU3907 Timer value(seconds)","uma.urr.tu3907",
FT_UINT16,BASE_DEC, NULL, 0x0,
@@ -2343,101 +1985,6 @@ proto_register_uma(void)
FT_UINT8,BASE_DEC, VALS(protocol_discriminator_vals), 0x0f,
"Protocol discriminator", HFILL }
},
- { &hf_uma_urr_channel_mode,
- { "Channel Mode","uma.urr.channel_mode",
- FT_UINT8,BASE_DEC, VALS(channel_mode_vals), 0x0,
- "Channel Mode", HFILL }
- },
- { &hf_uma_urr_MSC2_rev,
- { "Revision Level","uma.urr.MSC2_rev",
- FT_UINT8,BASE_DEC, VALS(gsm_a_msc_rev_vals), 0x60,
- "Revision level", HFILL }
- },
- { &hf_uma_urr_ES_IND,
- { "ES IND","uma.urr.MSC2_rev",
- FT_UINT8,BASE_DEC, VALS(ES_IND_vals), 0x20,
- "ES IND", HFILL }
- },
- { &hf_uma_urr_A5_1_algorithm_sup,
- { "A5/1 algorithm supported","uma.urr.MSC2_rev",
- FT_UINT8,BASE_DEC, VALS(A5_1_algorithm_sup_vals), 0x10,
- "A5/1 algorithm supported ", HFILL }
- },
- { &hf_uma_urr_RF_power_capability,
- { "RF Power Capability","uma.urr.MSC2_rev",
- FT_UINT8,BASE_DEC, VALS(RF_power_capability_vals), 0x07,
- "RF Power Capability", HFILL }
- },
- { &hf_uma_urr_ps_sup_cap,
- { "PS capability (pseudo-synchronization capability)","uma.urr.ps_sup_cap",
- FT_UINT8,BASE_DEC, VALS(ps_sup_cap_vals), 0x40,
- "PS capability (pseudo-synchronization capability)", HFILL }
- },
- { &hf_uma_urr_SS_screening_indicator,
- { "SS Screening Indicator","uma.urr.SS_screening_indicator",
- FT_UINT8,BASE_DEC, VALS(SS_screening_indicator_vals), 0x30,
- "SS Screening Indicator", HFILL }
- },
- { &hf_uma_urr_SM_capability,
- { "SM capability (MT SMS pt to pt capability)","uma.urr.SM_cap",
- FT_UINT8,BASE_DEC, VALS(SM_capability_vals), 0x08,
- "SM capability (MT SMS pt to pt capability)", HFILL }
- },
- { &hf_uma_urr_VBS_notification_rec,
- { "VBS notification reception ","uma.urr.VBS_notification_rec",
- FT_UINT8,BASE_DEC, VALS(VBS_notification_rec_vals), 0x04,
- "VBS notification reception ", HFILL }
- },
- { &hf_uma_urr_VGCS_notification_rec,
- { "VGCS notification reception ","uma.urr.VGCS_notification_rec",
- FT_UINT8,BASE_DEC, VALS(VGCS_notification_rec_vals), 0x02,
- "VGCS notification reception", HFILL }
- },
- { &hf_uma_urr_FC_frequency_cap,
- { "FC Frequency Capability","uma.urr.FC_frequency_cap",
- FT_UINT8,BASE_DEC, VALS(FC_frequency_cap_vals), 0x01,
- "FC Frequency Capability", HFILL }
- },
- { &hf_uma_urr_CM3,
- { "CM3","uma.urr.CM3",
- FT_UINT8,BASE_DEC, VALS(CM3_vals), 0x01,
- "CM3", HFILL }
- },
- { &hf_uma_urr_LCS_VA_cap,
- { "LCS VA capability (LCS value added location request notification capability) ","uma.urr.LCS_VA_cap",
- FT_UINT8,BASE_DEC, VALS(LCS_VA_cap_vals), 0x80,
- "LCS VA capability (LCS value added location request notification capability) ", HFILL }
- },
- { &hf_uma_urr_UCS2_treatment,
- { "UCS2 treatment ","uma.urr.UCS2_treatment",
- FT_UINT8,BASE_DEC, VALS(UCS2_treatment_vals), 0x10,
- "UCS2 treatment ", HFILL }
- },
- { &hf_uma_urr_SoLSA,
- { "SoLSA","uma.urr.SoLSA",
- FT_UINT8,BASE_DEC, VALS(SoLSA_vals), 0x08,
- "SoLSA", HFILL }
- },
- { &hf_uma_urr_CMSP,
- { "CMSP: CM Service Prompt ","uma.urr.CMSP",
- FT_UINT8,BASE_DEC, VALS(CMSP_vals), 0x04,
- "CMSP: CM Service Prompt ", HFILL }
- },
- { &hf_uma_urr_A5_3_algorithm_sup,
- { "A5/3 algorithm supported ","uma.urr.A5_3_algorithm_sup",
- FT_UINT8,BASE_DEC, VALS(A5_3_algorithm_sup_vals), 0x02,
- "A5/3 algorithm supported ", HFILL }
- },
- { &hf_uma_urr_A5_2_algorithm_sup,
- { "A5/2 algorithm supported ","uma.urr.A5_2_algorithm_sup",
- FT_UINT8,BASE_DEC, VALS(A5_2_algorithm_sup_vals), 0x01,
- "A5/2 algorithm supported ", HFILL }
- },
- { &hf_uma_urr_RR_cause,
- { "RR cause value","uma.urr.RRcause",
- FT_UINT8,BASE_DEC, VALS(RR_cause_vals), 0x0,
- "RR cause value", HFILL }
- },
{ &hf_uma_urr_sc,
{ "SC","uma.urr.SC",
FT_UINT8,BASE_DEC, VALS(SC_vals), 0x1,
@@ -2458,21 +2005,6 @@ proto_register_uma(void)
FT_UINT8,BASE_DEC, VALS(ULQI_vals), 0x0f,
"ULQI, UL Quality Indication", HFILL }
},
- { &hf_uma_urr_TLLI,
- { "Temporary Logical Link Identifier","uma.urr.tlli",
- FT_BYTES,BASE_DEC, NULL, 0x0,
- "Temporary Logical Link Identifier", HFILL }
- },
- { &hf_uma_urr_packet_flow_id,
- { "Packet Flow Identifier value","uma.urr.packet_flow_id",
- FT_UINT8,BASE_DEC, VALS(packet_flow_id_vals), 0x7f,
- "Packet Flow Identifier value", HFILL }
- },
- { &hf_uma_urr_suspension_cause,
- { "Suspension cause value","uma.urr.suspension_cause",
- FT_UINT8,BASE_DEC, VALS(suspension_cause_vals), 0x0,
- "Suspension cause value", HFILL }
- },
{ &hf_uma_urr_TU3920_timer,
{ "TU3920 Timer value(seconds)","uma.urr.tu3920",
FT_UINT16,BASE_DEC, NULL, 0x0,