diff options
author | Anders Broman <anders.broman@ericsson.com> | 2005-07-14 21:05:38 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2005-07-14 21:05:38 +0000 |
commit | a5e89b2793b805e6edc7a25c2d9b4aa05c0e1dc2 (patch) | |
tree | 28845ab3852be12d26e22d5ca8f8466b48317eb5 /epan/dissectors/packet-uma.c | |
parent | 98a0c9a590a415d8f27127ec4057892f4833efd7 (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.c | 518 |
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, |