diff options
author | Anders Broman <anders.broman@ericsson.com> | 2006-06-08 06:06:17 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2006-06-08 06:06:17 +0000 |
commit | 581dc56d6354f8d2bf4c760aca2c157c658df468 (patch) | |
tree | 4faa3654eec73f4ce3912ebd14e74644cbfc1f71 /epan | |
parent | 94e818ac34fe76a6279029899945aa71b4ba1f32 (diff) |
MAke it possible to get a tvb with a BIT STRING, regenerate PER dissectors.
svn path=/trunk/; revision=18395
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-h225.c | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-h235.c | 8 | ||||
-rw-r--r-- | epan/dissectors/packet-h245.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-nbap.c | 48 | ||||
-rw-r--r-- | epan/dissectors/packet-per.c | 11 | ||||
-rw-r--r-- | epan/dissectors/packet-per.h | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-ranap.c | 30 | ||||
-rw-r--r-- | epan/dissectors/packet-rnsap.c | 99 |
8 files changed, 121 insertions, 83 deletions
diff --git a/epan/dissectors/packet-h225.c b/epan/dissectors/packet-h225.c index a32dfb1e04..1ed800f56a 100644 --- a/epan/dissectors/packet-h225.c +++ b/epan/dissectors/packet-h225.c @@ -3816,7 +3816,7 @@ static int dissect_almostOutOfResources(tvbuff_t *tvb, int offset, asn_ctx_t *ac static int dissect_h225_BIT_STRING_SIZE_32(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 32, 32, FALSE); + 32, 32, FALSE, NULL); return offset; } @@ -6955,7 +6955,7 @@ static int dissect_integrity_item(tvbuff_t *tvb, int offset, asn_ctx_t *actx, pr static int dissect_h225_BIT_STRING(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, FALSE); + NO_BOUND, NO_BOUND, FALSE, NULL); return offset; } diff --git a/epan/dissectors/packet-h235.c b/epan/dissectors/packet-h235.c index 527518d111..41bf27b8c8 100644 --- a/epan/dissectors/packet-h235.c +++ b/epan/dissectors/packet-h235.c @@ -314,7 +314,7 @@ static int dissect_generalId(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_t static int dissect_h235_KeyMaterial(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 2048, FALSE); + 1, 2048, FALSE, NULL); return offset; } @@ -427,7 +427,7 @@ static int dissect_nonStandard(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto static int dissect_h235_BIT_STRING_SIZE_0_2048(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 0, 2048, FALSE); + 0, 2048, FALSE, NULL); return offset; } @@ -465,7 +465,7 @@ static int dissect_dhkey(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree static int dissect_h235_BIT_STRING_SIZE_0_511(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 0, 511, FALSE); + 0, 511, FALSE, NULL); return offset; } @@ -801,7 +801,7 @@ static int dissect_encrptval(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_t static int dissect_h235_BIT_STRING(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, FALSE); + NO_BOUND, NO_BOUND, FALSE, NULL); return offset; } diff --git a/epan/dissectors/packet-h245.c b/epan/dissectors/packet-h245.c index 8cec9ece76..be15d4ca9b 100644 --- a/epan/dissectors/packet-h245.c +++ b/epan/dissectors/packet-h245.c @@ -11032,7 +11032,7 @@ static int dissect_certificateResponse(tvbuff_t *tvb, int offset, asn_ctx_t *act static int dissect_h245_BIT_STRING_SIZE_1_65535(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 65535, FALSE); + 1, 65535, FALSE, NULL); return offset; } diff --git a/epan/dissectors/packet-nbap.c b/epan/dissectors/packet-nbap.c index f37a11d68f..f0c84ac87a 100644 --- a/epan/dissectors/packet-nbap.c +++ b/epan/dissectors/packet-nbap.c @@ -9693,7 +9693,7 @@ static const asn_namedbit PreambleSignatures_bits[] = { static int dissect_nbap_PreambleSignatures(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 16, 16, FALSE); + 16, 16, FALSE, NULL); return offset; } @@ -9780,7 +9780,7 @@ static const asn_namedbit RACH_SubChannelNumbers_bits[] = { static int dissect_nbap_RACH_SubChannelNumbers(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 12, 12, FALSE); + 12, 12, FALSE, NULL); return offset; } @@ -11077,7 +11077,7 @@ static int dissect_bindingID(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_t static int dissect_nbap_TransportLayerAddress(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 160, TRUE); + 1, 160, TRUE, NULL); return offset; } @@ -18096,7 +18096,7 @@ static int dissect_segment_Type(tvbuff_t *tvb, int offset, asn_ctx_t *actx, prot static int dissect_nbap_IB_SG_DATA(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, FALSE); + NO_BOUND, NO_BOUND, FALSE, NULL); return offset; } @@ -22998,7 +22998,7 @@ static int dissect_bad_sat_id(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_ static int dissect_nbap_BIT_STRING_SIZE_8(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -23187,7 +23187,7 @@ static int dissect_tx_tow_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_ static int dissect_nbap_BIT_STRING_SIZE_14(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 14, 14, FALSE); + 14, 14, FALSE, NULL); return offset; } @@ -23203,7 +23203,7 @@ static int dissect_idot_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tr static int dissect_nbap_BIT_STRING_SIZE_2(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 2, 2, FALSE); + 2, 2, FALSE, NULL); return offset; } @@ -23219,7 +23219,7 @@ static int dissect_ca_or_p_on_l2_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, static int dissect_nbap_BIT_STRING_SIZE_22(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 22, 22, FALSE); + 22, 22, FALSE, NULL); return offset; } @@ -23235,7 +23235,7 @@ static int dissect_a_f_zero_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, prot static int dissect_nbap_BIT_STRING_SIZE_10(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 10, 10, FALSE); + 10, 10, FALSE, NULL); return offset; } @@ -23251,7 +23251,7 @@ static int dissect_iodc_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tr static int dissect_nbap_BIT_STRING_SIZE_4(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 4, 4, FALSE); + 4, 4, FALSE, NULL); return offset; } @@ -23264,7 +23264,7 @@ static int dissect_user_range_accuracy_index_nav(tvbuff_t *tvb, int offset, asn_ static int dissect_nbap_BIT_STRING_SIZE_6(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 6, 6, FALSE); + 6, 6, FALSE, NULL); return offset; } @@ -23277,7 +23277,7 @@ static int dissect_sv_health_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, pro static int dissect_nbap_BIT_STRING_SIZE_1(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 1, FALSE); + 1, 1, FALSE, NULL); return offset; } @@ -23293,7 +23293,7 @@ static int dissect_fit_interval_flag_nav(tvbuff_t *tvb, int offset, asn_ctx_t *a static int dissect_nbap_BIT_STRING_SIZE_87(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 87, 87, FALSE); + 87, 87, FALSE, NULL); return offset; } @@ -23306,7 +23306,7 @@ static int dissect_sf1_reserved_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, static int dissect_nbap_BIT_STRING_SIZE_16(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 16, 16, FALSE); + 16, 16, FALSE, NULL); return offset; } @@ -23355,7 +23355,7 @@ static int dissect_omegadot_alm(tvbuff_t *tvb, int offset, asn_ctx_t *actx, prot static int dissect_nbap_BIT_STRING_SIZE_32(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 32, 32, FALSE); + 32, 32, FALSE, NULL); return offset; } @@ -23386,7 +23386,7 @@ static int dissect_a_zero_utc(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_ static int dissect_nbap_BIT_STRING_SIZE_5(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 5, 5, FALSE); + 5, 5, FALSE, NULL); return offset; } @@ -23399,7 +23399,7 @@ static int dissect_aodo_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tr static int dissect_nbap_BIT_STRING_SIZE_24(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 24, 24, FALSE); + 24, 24, FALSE, NULL); return offset; } @@ -23427,7 +23427,7 @@ static int dissect_gps_omega_alm(tvbuff_t *tvb, int offset, asn_ctx_t *actx, pro static int dissect_nbap_BIT_STRING_SIZE_20(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 20, 20, FALSE); + 20, 20, FALSE, NULL); return offset; } @@ -23573,7 +23573,7 @@ static int dissect_data_id(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tre static int dissect_nbap_BIT_STRING_SIZE_11(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 11, 11, FALSE); + 11, 11, FALSE, NULL); return offset; } @@ -23636,7 +23636,7 @@ static int dissect_sat_info_almanac(tvbuff_t *tvb, int offset, asn_ctx_t *actx, static int dissect_nbap_BIT_STRING_SIZE_364(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 364, 364, FALSE); + 364, 364, FALSE, NULL); return offset; } @@ -30440,7 +30440,7 @@ static int dissect_id_HSDSCH_Information_to_Modify_Unsynchronised(tvbuff_t *tvb, static int dissect_nbap_DsField(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -30453,7 +30453,7 @@ static int dissect_dsField(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tre static int dissect_nbap_GenericTrafficCategory(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -31670,7 +31670,7 @@ static int dissect_eDCH_HARQ_PO_FDD(tvbuff_t *tvb, int offset, asn_ctx_t *actx, static int dissect_nbap_E_DCH_MACdFlow_Multiplexing_List(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -31696,7 +31696,7 @@ static int dissect_maxBits_MACe_PDU_non_scheduled(tvbuff_t *tvb, int offset, asn static int dissect_nbap_HARQ_Process_Allocation_2ms_EDCH(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } diff --git a/epan/dissectors/packet-per.c b/epan/dissectors/packet-per.c index e695b6b6c1..34a23e2205 100644 --- a/epan/dissectors/packet-per.c +++ b/epan/dissectors/packet-per.c @@ -1371,10 +1371,12 @@ DEBUG_ENTRY("dissect_per_sequence"); */ guint32 -dissect_per_bit_string(tvbuff_t *tvb, guint32 offset, asn_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, gboolean has_extension) +dissect_per_bit_string(tvbuff_t *tvb, guint32 offset, asn_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, gboolean has_extension, tvbuff_t **value_tvb) { + gint val_start, val_length; guint32 length; header_field_info *hfi; + tvbuff_t *out_tvb = NULL; hfi = (hf_index==-1) ? NULL : proto_registrar_get_nth(hf_index); @@ -1423,6 +1425,8 @@ DEBUG_ENTRY("dissect_per_bit_string"); if((min_len==max_len)&&(min_len<65536)){ /* align to byte */ BYTE_ALIGN_OFFSET(offset); + val_start = offset>>3; + val_length = (min_len+7)/8; if (hfi) { proto_tree_add_item(tree, hf_index, tvb, offset>>3, (min_len+7)/8, FALSE); } @@ -1446,8 +1450,13 @@ DEBUG_ENTRY("dissect_per_bit_string"); proto_tree_add_item(tree, hf_index, tvb, offset>>3, (length+7)/8, FALSE); } } + val_start = offset>>3; + val_length = (length+7)/8; offset+=length; + if (value_tvb) + *value_tvb = (out_tvb) ? out_tvb : tvb_new_subset(tvb, val_start, val_length, val_length); + return offset; } diff --git a/epan/dissectors/packet-per.h b/epan/dissectors/packet-per.h index ea1c953685..d4456cfa3d 100644 --- a/epan/dissectors/packet-per.h +++ b/epan/dissectors/packet-per.h @@ -128,7 +128,7 @@ extern guint32 dissect_per_sequence(tvbuff_t *tvb, guint32 offset, asn_ctx_t *ac extern guint32 dissect_per_octet_string(tvbuff_t *tvb, guint32 offset, asn_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, tvbuff_t **value_tvb); -extern guint32 dissect_per_bit_string(tvbuff_t *tvb, guint32 offset, asn_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, gboolean has_extension); +extern guint32 dissect_per_bit_string(tvbuff_t *tvb, guint32 offset, asn_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, gboolean has_extension, tvbuff_t **value_tvb); extern guint32 dissect_per_restricted_character_string(tvbuff_t *tvb, guint32 offset, asn_ctx_t *actx, proto_tree *tree, int hf_index, int min_len, int max_len, const char *alphabet, int alphabet_length, tvbuff_t **value_tvb); diff --git a/epan/dissectors/packet-ranap.c b/epan/dissectors/packet-ranap.c index feffb4751f..91e6ee7b02 100644 --- a/epan/dissectors/packet-ranap.c +++ b/epan/dissectors/packet-ranap.c @@ -3795,7 +3795,7 @@ static int dissect_id_Ass_RAB_Parameters(tvbuff_t *tvb, int offset, asn_ctx_t *a static int dissect_ranap_BIT_STRING_SIZE_1(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 1, FALSE); + 1, 1, FALSE, NULL); return offset; } @@ -3808,7 +3808,7 @@ static int dissect_cipheringKeyFlag(tvbuff_t *tvb, int offset, asn_ctx_t *actx, static int dissect_ranap_BIT_STRING_SIZE_56(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 56, 56, FALSE); + 56, 56, FALSE, NULL); return offset; } @@ -4320,7 +4320,7 @@ static int dissect_RequestedMulticastServiceList_item(tvbuff_t *tvb, int offset, static int dissect_ranap_MBMS_PTP_RAB_ID(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -4712,7 +4712,7 @@ static int dissect_encryptionpermittedAlgorithms(tvbuff_t *tvb, int offset, asn_ static int dissect_ranap_EncryptionKey(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 128, 128, FALSE); + 128, 128, FALSE, NULL); return offset; } @@ -4794,7 +4794,7 @@ static int dissect_gERAN_Classmark(tvbuff_t *tvb, int offset, asn_ctx_t *actx, p static int dissect_ranap_RAB_ID(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -5261,7 +5261,7 @@ static int dissect_iMEISVlist(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_ static int dissect_ranap_BIT_STRING_SIZE_7(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 7, 7, FALSE); + 7, 7, FALSE, NULL); return offset; } @@ -5436,7 +5436,7 @@ static int dissect_permittedAlgorithms(tvbuff_t *tvb, int offset, asn_ctx_t *act static int dissect_ranap_IntegrityProtectionKey(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 128, 128, FALSE); + 128, 128, FALSE, NULL); return offset; } @@ -5701,7 +5701,7 @@ static int dissect_id_InterSystemInformation_TransparentContainer(tvbuff_t *tvb, static int dissect_ranap_IuSignallingConnectionIdentifier(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 24, 24, FALSE); + 24, 24, FALSE, NULL); return offset; } @@ -6318,7 +6318,7 @@ static int dissect_id_MBMSSessionRepetitionNumber(tvbuff_t *tvb, int offset, asn static int dissect_ranap_NAS_SequenceNumber(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 2, 2, FALSE); + 2, 2, FALSE, NULL); return offset; } @@ -6511,7 +6511,7 @@ static int dissect_pDP_TypeInformation(tvbuff_t *tvb, int offset, asn_ctx_t *act static int dissect_ranap_PositioningDataDiscriminator(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 4, 4, FALSE); + 4, 4, FALSE, NULL); return offset; } @@ -6894,7 +6894,7 @@ static int dissect_id_RAB_ContextList_RANAP_RelocInf(tvbuff_t *tvb, int offset, static int dissect_ranap_TransportLayerAddress(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 160, TRUE); + 1, 160, TRUE, NULL); return offset; } @@ -7991,7 +7991,7 @@ static int dissect_id_RAB_RelocationReleaseList(tvbuff_t *tvb, int offset, asn_c static int dissect_ranap_NAS_SynchronisationIndicator(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 4, 4, FALSE); + 4, 4, FALSE, NULL); return offset; } @@ -8042,7 +8042,7 @@ static int dissect_userPlaneMode(tvbuff_t *tvb, int offset, asn_ctx_t *actx, pro static int dissect_ranap_UP_ModeVersions(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 16, 16, FALSE); + 16, 16, FALSE, NULL); return offset; } @@ -9073,7 +9073,7 @@ static int dissect_id_UE_ID(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tr static int dissect_ranap_UESBI_IuA(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 128, FALSE); + 1, 128, FALSE, NULL); return offset; } @@ -9086,7 +9086,7 @@ static int dissect_uESBI_IuA(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_t static int dissect_ranap_UESBI_IuB(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 128, FALSE); + 1, 128, FALSE, NULL); return offset; } diff --git a/epan/dissectors/packet-rnsap.c b/epan/dissectors/packet-rnsap.c index f678587818..2aff9bb6d5 100644 --- a/epan/dissectors/packet-rnsap.c +++ b/epan/dissectors/packet-rnsap.c @@ -47,9 +47,10 @@ #include <stdio.h> #include <string.h> -#include "packet-rnsap.h" #include "packet-ber.h" #include "packet-per.h" +#include "packet-rnsap.h" +#include "packet-umts_rrc.h" #define PNAME "UTRAN Iur interface Radio Network Subsystem Application Part" #define PSNAME "RNSAP" @@ -562,6 +563,7 @@ static int proto_rnsap = -1; static int hf_rnsap_pdu_length = -1; static int hf_rnsap_IE_length = -1; +static int hf_rnsap_L3_DL_DCCH_Message_PDU = -1; /*--- Included file: packet-rnsap-hf.c ---*/ @@ -2286,7 +2288,7 @@ static int hf_rnsap_privateIEid = -1; /* PrivateIE_ID */ static int hf_rnsap_privateIEvalue = -1; /* PrivateIEvalue */ /*--- End of included file: packet-rnsap-hf.c ---*/ -#line 559 "packet-rnsap-template.c" +#line 561 "packet-rnsap-template.c" /* Initialize the subtree pointers */ static int ett_rnsap = -1; @@ -3148,7 +3150,7 @@ static gint ett_rnsap_PrivateIE_Container = -1; static gint ett_rnsap_PrivateIE_Field = -1; /*--- End of included file: packet-rnsap-ett.c ---*/ -#line 568 "packet-rnsap-template.c" +#line 570 "packet-rnsap-template.c" /* Global variables */ static proto_tree *top_tree; @@ -7891,7 +7893,7 @@ static int dissect_id_TDD_DCHs_to_Modify(tvbuff_t *tvb, int offset, asn_ctx_t *a static int dissect_rnsap_TransportLayerAddress(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 160, TRUE); + 1, 160, TRUE, NULL); return offset; } @@ -10702,8 +10704,30 @@ static int dissect_id_HCS_Prio(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto static int dissect_rnsap_L3_Information(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { +#line 84 "rnsap.cnf" + + tvbuff_t *parameter_tvb; + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, FALSE); + NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); + + + if (!parameter_tvb) + return offset; + + switch (ProcedureCode){ + + case RNSAP_ID_DOWNLINKSIGNALLINGTRANSFER: + actx->encoding =FALSE; + dissect_umts_rrc_DL_DCCH_Message(parameter_tvb, 0, actx, tree, hf_rnsap_L3_DL_DCCH_Message_PDU); + actx->encoding =TRUE; + break; + case RNSAP_ID_UPLINKSIGNALLINGTRANSFER: + default: + break; + } + + return offset; } @@ -11507,7 +11531,7 @@ static int dissect_powerAdjustmentType(tvbuff_t *tvb, int offset, asn_ctx_t *act static int dissect_rnsap_RANAP_RelocationInformation(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, FALSE); + NO_BOUND, NO_BOUND, FALSE, NULL); return offset; } @@ -19519,7 +19543,7 @@ static int dissect_sAT_ID(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree static int dissect_rnsap_BIT_STRING_SIZE_8(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -19711,7 +19735,7 @@ static int dissect_tx_tow_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_ static int dissect_rnsap_BIT_STRING_SIZE_14(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 14, 14, FALSE); + 14, 14, FALSE, NULL); return offset; } @@ -19727,7 +19751,7 @@ static int dissect_idot_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tr static int dissect_rnsap_BIT_STRING_SIZE_2(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 2, 2, FALSE); + 2, 2, FALSE, NULL); return offset; } @@ -19743,7 +19767,7 @@ static int dissect_ca_or_p_on_l2_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, static int dissect_rnsap_BIT_STRING_SIZE_22(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 22, 22, FALSE); + 22, 22, FALSE, NULL); return offset; } @@ -19759,7 +19783,7 @@ static int dissect_a_f_zero_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, prot static int dissect_rnsap_BIT_STRING_SIZE_10(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 10, 10, FALSE); + 10, 10, FALSE, NULL); return offset; } @@ -19775,7 +19799,7 @@ static int dissect_iodc_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tr static int dissect_rnsap_BIT_STRING_SIZE_4(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 4, 4, FALSE); + 4, 4, FALSE, NULL); return offset; } @@ -19788,7 +19812,7 @@ static int dissect_user_range_accuracy_index_nav(tvbuff_t *tvb, int offset, asn_ static int dissect_rnsap_BIT_STRING_SIZE_6(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 6, 6, FALSE); + 6, 6, FALSE, NULL); return offset; } @@ -19801,7 +19825,7 @@ static int dissect_sv_health_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, pro static int dissect_rnsap_BIT_STRING_SIZE_1(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 1, FALSE); + 1, 1, FALSE, NULL); return offset; } @@ -19817,7 +19841,7 @@ static int dissect_fit_interval_flag_nav(tvbuff_t *tvb, int offset, asn_ctx_t *a static int dissect_rnsap_BIT_STRING_SIZE_87(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 87, 87, FALSE); + 87, 87, FALSE, NULL); return offset; } @@ -19830,7 +19854,7 @@ static int dissect_sf1_reserved_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, static int dissect_rnsap_BIT_STRING_SIZE_16(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 16, 16, FALSE); + 16, 16, FALSE, NULL); return offset; } @@ -19879,7 +19903,7 @@ static int dissect_c_rc_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tr static int dissect_rnsap_BIT_STRING_SIZE_32(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 32, 32, FALSE); + 32, 32, FALSE, NULL); return offset; } @@ -19910,7 +19934,7 @@ static int dissect_a_zero_utc(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_ static int dissect_rnsap_BIT_STRING_SIZE_5(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 5, 5, FALSE); + 5, 5, FALSE, NULL); return offset; } @@ -19923,7 +19947,7 @@ static int dissect_aodo_nav(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tr static int dissect_rnsap_BIT_STRING_SIZE_24(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 24, 24, FALSE); + 24, 24, FALSE, NULL); return offset; } @@ -19951,7 +19975,7 @@ static int dissect_a_one_utc(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_t static int dissect_rnsap_BIT_STRING_SIZE_20(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 20, 20, FALSE); + 20, 20, FALSE, NULL); return offset; } @@ -20097,7 +20121,7 @@ static int dissect_dATA_ID(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tre static int dissect_rnsap_BIT_STRING_SIZE_11(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 11, 11, FALSE); + 11, 11, FALSE, NULL); return offset; } @@ -20160,7 +20184,7 @@ static int dissect_satellite_Almanac_Information(tvbuff_t *tvb, int offset, asn_ static int dissect_rnsap_BIT_STRING_SIZE_364(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 364, 364, FALSE); + 364, 364, FALSE, NULL); return offset; } @@ -22662,7 +22686,7 @@ static int dissect_id_IPDL_TDD_ParametersLCR(tvbuff_t *tvb, int offset, asn_ctx_ static int dissect_rnsap_CellCapabilityContainer_FDD(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 32, 32, FALSE); + 32, 32, FALSE, NULL); return offset; } @@ -22675,7 +22699,7 @@ static int dissect_id_CellCapabilityContainer_FDD(tvbuff_t *tvb, int offset, asn static int dissect_rnsap_CellCapabilityContainer_TDD(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 32, 32, FALSE); + 32, 32, FALSE, NULL); return offset; } @@ -22688,7 +22712,7 @@ static int dissect_id_CellCapabilityContainer_TDD(tvbuff_t *tvb, int offset, asn static int dissect_rnsap_CellCapabilityContainer_TDD_LCR(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 32, 32, FALSE); + 32, 32, FALSE, NULL); return offset; } @@ -24603,7 +24627,7 @@ static int dissect_id_Angle_Of_Arrival_Value_LCR(tvbuff_t *tvb, int offset, asn_ static int dissect_rnsap_GERAN_Cell_Capability(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 16, 16, FALSE); + 16, 16, FALSE, NULL); return offset; } @@ -25618,7 +25642,7 @@ static int dissect_id_HSDSCH_Information_to_Modify_Unsynchronised(tvbuff_t *tvb, static int dissect_rnsap_DsField(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -25631,7 +25655,7 @@ static int dissect_dsField(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tre static int dissect_rnsap_GenericTrafficCategory(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -27588,7 +27612,7 @@ static int dissect_eDCH_HARQ_PO_FDD(tvbuff_t *tvb, int offset, asn_ctx_t *actx, static int dissect_rnsap_E_DCH_MACdFlow_Multiplexing_List(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -27614,7 +27638,7 @@ static int dissect_maxBits_MACe_PDU_non_scheduled(tvbuff_t *tvb, int offset, asn static int dissect_rnsap_HARQ_Process_Allocation_2ms_EDCH(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, NULL); return offset; } @@ -29916,7 +29940,7 @@ static int dissect_band_Indicator(tvbuff_t *tvb, int offset, asn_ctx_t *actx, pr static int dissect_rnsap_BCC(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 3, 3, FALSE); + 3, 3, FALSE, NULL); return offset; } @@ -29942,7 +29966,7 @@ static int dissect_bCCH_ARFCN(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_ static int dissect_rnsap_NCC(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 3, 3, FALSE); + 3, 3, FALSE, NULL); return offset; } @@ -30282,7 +30306,7 @@ static void dissect_RNSAP_PDU_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree /*--- End of included file: packet-rnsap-fn.c ---*/ -#line 591 "packet-rnsap-template.c" +#line 593 "packet-rnsap-template.c" static int dissect_rnsap_InitiatingMessageValueValue(tvbuff_t *tvb, int offset, asn_ctx_t *actx, proto_tree *tree){ @@ -32008,6 +32032,11 @@ void proto_register_rnsap(void) { { &hf_rnsap_IE_length, { "IE Length", "rnsap.ie_length", FT_UINT32, BASE_DEC, NULL, 0, "Number of octets in the IE", HFILL }}, + { &hf_rnsap_L3_DL_DCCH_Message_PDU, + { "DL-DCCH-Message", "rnsap.DL_DCCH_Message", + FT_NONE, BASE_NONE, NULL, 0, + "DL-DCCH-Message", HFILL }}, + /*--- Included file: packet-rnsap-hfarr.c ---*/ #line 1 "packet-rnsap-hfarr.c" @@ -38885,7 +38914,7 @@ void proto_register_rnsap(void) { "PrivateIE-Field/privateIEvalue", HFILL }}, /*--- End of included file: packet-rnsap-hfarr.c ---*/ -#line 2317 "packet-rnsap-template.c" +#line 2324 "packet-rnsap-template.c" }; /* List of subtrees */ @@ -39748,7 +39777,7 @@ void proto_register_rnsap(void) { &ett_rnsap_PrivateIE_Field, /*--- End of included file: packet-rnsap-ettarr.c ---*/ -#line 2327 "packet-rnsap-template.c" +#line 2334 "packet-rnsap-template.c" }; |