summaryrefslogtreecommitdiff
path: root/asn1/lte-rrc/lte-rrc.cnf
diff options
context:
space:
mode:
Diffstat (limited to 'asn1/lte-rrc/lte-rrc.cnf')
-rw-r--r--asn1/lte-rrc/lte-rrc.cnf153
1 files changed, 83 insertions, 70 deletions
diff --git a/asn1/lte-rrc/lte-rrc.cnf b/asn1/lte-rrc/lte-rrc.cnf
index 3544e2e414..f0efd6cc94 100644
--- a/asn1/lte-rrc/lte-rrc.cnf
+++ b/asn1/lte-rrc/lte-rrc.cnf
@@ -74,11 +74,12 @@ SI-OrPSI-GERAN TYPE_PREFIX
#.FN_BODY DedicatedInfoNAS VAL_PTR = &nas_eps_tvb
tvbuff_t *nas_eps_tvb=NULL;
-
+ proto_tree *subtree;
%(DEFAULT_BODY)s
-
- if ((nas_eps_tvb)&&(nas_eps_handle))
- call_dissector(nas_eps_handle,nas_eps_tvb,actx->pinfo, tree);
+ if ((nas_eps_tvb)&&(nas_eps_handle)) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_dedicatedInfoNAS);
+ call_dissector(nas_eps_handle, nas_eps_tvb, actx->pinfo, subtree);
+ }
#.FN_BODY UE-CapabilityRAT-Container
lte_rrc_rat_type_value = -1;
@@ -112,62 +113,63 @@ SI-OrPSI-GERAN TYPE_PREFIX
# defined in A.S0008 [33]. The A21 Mobile Subscription Information contains the supported CDMA2000 1xRTT band
# class and band sub-class information.
-#.FN_BODY UE-CapabilityRAT-Container/ueCapabilityRAT-Container VAL_PTR = &ue_eutra_cap_tvb
- tvbuff_t *ue_eutra_cap_tvb=NULL;
+#.FN_BODY UE-CapabilityRAT-Container/ueCapabilityRAT-Container VAL_PTR = &ue_cap_tvb
+ tvbuff_t *ue_cap_tvb=NULL;
%(DEFAULT_BODY)s
#.FN_FTR UE-CapabilityRAT-Container/ueCapabilityRAT-Container
-if(ue_eutra_cap_tvb){
- guint32 length;
- proto_item *item;
- proto_tree *subtree;
- guint8 byte;
- switch(lte_rrc_rat_type_value){
- case RAT_Type_eutra:
- /* eutra */
- dissect_lte_rrc_UE_EUTRA_Capability_PDU(ue_eutra_cap_tvb, actx->pinfo, tree, NULL);
- break;
- case RAT_Type_utra:
- /* utra */
- dissect_rrc_InterRATHandoverInfo_PDU(ue_eutra_cap_tvb, actx->pinfo, tree, NULL);
- break;
- case RAT_Type_geran_cs:
- /* geran-cs */
- /* Mobile Station Classmark 2 is formatted as TLV with the two first bytes set to 0x33 0x03 */
- item = proto_tree_add_text(tree, ue_eutra_cap_tvb, 0, 5, "Mobile Station Classmark 2");
- subtree = proto_item_add_subtree(item, ett_lte_rrc_UE_CapabilityRAT_Container);
- byte = tvb_get_guint8(ue_eutra_cap_tvb, 0);
- if (byte != 0x33) {
- expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_ERROR,
- "Unexpected type value (found 0x%02X)", byte);
- }
- byte = tvb_get_guint8(ue_eutra_cap_tvb, 1);
- if (byte != 0x03) {
- expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_ERROR,
- "Unexpected length value (found %d)", byte);
- }
- de_ms_cm_2(ue_eutra_cap_tvb, subtree, actx->pinfo, 2, 3, NULL, 0);
- /* Mobile Station Classmark 3 is formatted as V */
- length = tvb_length(ue_eutra_cap_tvb)-5;
- item = proto_tree_add_text(tree, ue_eutra_cap_tvb, 5, length, "Mobile Station Classmark 3");
- subtree = proto_item_add_subtree(item, ett_lte_rrc_UE_CapabilityRAT_Container);
- de_ms_cm_3(ue_eutra_cap_tvb, subtree, actx->pinfo, 5, length, NULL, 0);
- break;
- case RAT_Type_geran_ps:
- /* geran-ps */
- /* MS Radio Access Capability is formatted as V */
- length = tvb_length(ue_eutra_cap_tvb);
- item = proto_tree_add_text(tree, ue_eutra_cap_tvb, 0, length, "MS Radio Access Capability");
- subtree = proto_item_add_subtree(item, ett_lte_rrc_UE_CapabilityRAT_Container);
- de_gmm_ms_radio_acc_cap(ue_eutra_cap_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
- break;
- case RAT_Type_cdma2000_1XRTT:
- /* cdma2000-1XRTT */
- /* dissection of "A21 Mobile Subscription Information" could be added to packet-ansi_a.c */
- break;
- default:
- break;
- }
+if(ue_cap_tvb){
+ guint32 length;
+ proto_item *item;
+ proto_tree *subtree, *subtree2;
+ guint8 byte;
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_UE_CapabilityRAT_Container);
+ switch(lte_rrc_rat_type_value){
+ case RAT_Type_eutra:
+ /* eutra */
+ dissect_lte_rrc_UE_EUTRA_Capability_PDU(ue_cap_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case RAT_Type_utra:
+ /* utra */
+ dissect_rrc_InterRATHandoverInfo_PDU(ue_cap_tvb, actx->pinfo, subtree, NULL);
+ break;
+ case RAT_Type_geran_cs:
+ /* geran-cs */
+ /* Mobile Station Classmark 2 is formatted as TLV with the two first bytes set to 0x33 0x03 */
+ item = proto_tree_add_text(subtree, ue_cap_tvb, 0, 5, "Mobile Station Classmark 2");
+ subtree2 = proto_item_add_subtree(item, ett_lte_rrc_UE_CapabilityRAT_Container);
+ byte = tvb_get_guint8(ue_cap_tvb, 0);
+ if (byte != 0x33) {
+ expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Unexpected type value (found 0x%02X)", byte);
+ }
+ byte = tvb_get_guint8(ue_cap_tvb, 1);
+ if (byte != 0x03) {
+ expert_add_info_format(actx->pinfo, item, PI_MALFORMED, PI_ERROR,
+ "Unexpected length value (found %d)", byte);
+ }
+ de_ms_cm_2(ue_cap_tvb, subtree2, actx->pinfo, 2, 3, NULL, 0);
+ /* Mobile Station Classmark 3 is formatted as V */
+ length = tvb_ensure_length_remaining(ue_cap_tvb, 5);
+ item = proto_tree_add_text(subtree, ue_cap_tvb, 5, length, "Mobile Station Classmark 3");
+ subtree2 = proto_item_add_subtree(item, ett_lte_rrc_UE_CapabilityRAT_Container);
+ de_ms_cm_3(ue_cap_tvb, subtree2, actx->pinfo, 5, length, NULL, 0);
+ break;
+ case RAT_Type_geran_ps:
+ /* geran-ps */
+ /* MS Radio Access Capability is formatted as V */
+ length = tvb_length(ue_cap_tvb);
+ item = proto_tree_add_text(subtree, ue_cap_tvb, 0, length, "MS Radio Access Capability");
+ subtree2 = proto_item_add_subtree(item, ett_lte_rrc_UE_CapabilityRAT_Container);
+ de_gmm_ms_radio_acc_cap(ue_cap_tvb, subtree2, actx->pinfo, 0, length, NULL, 0);
+ break;
+ case RAT_Type_cdma2000_1XRTT:
+ /* cdma2000-1XRTT */
+ /* dissection of "A21 Mobile Subscription Information" could be added to packet-ansi_a.c */
+ break;
+ default:
+ break;
+ }
}
#.FN_BODY UE-EUTRA-Capability/featureGroupIndicators VAL_PTR = &featureGroupIndicators_tvb
@@ -626,22 +628,24 @@ if(ue_eutra_cap_tvb){
%(DEFAULT_BODY)s
if(target_rat_msg_cont_tvb){
guint8 byte;
+ proto_tree *subtree;
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_targetRAT_MessageContainer);
switch(lte_rrc_ho_target_rat_type_value){
case T_targetRAT_Type_utra:
/* utra */
if (rrc_irat_ho_to_utran_cmd_handle)
- call_dissector(rrc_irat_ho_to_utran_cmd_handle, target_rat_msg_cont_tvb, actx->pinfo, tree);
+ call_dissector(rrc_irat_ho_to_utran_cmd_handle, target_rat_msg_cont_tvb, actx->pinfo, subtree);
break;
case T_targetRAT_Type_geran:
/* geran */
byte = tvb_get_guint8(target_rat_msg_cont_tvb, 0);
if (byte == 0x06) {
if (gsm_a_dtap_handle) {
- call_dissector(gsm_a_dtap_handle, target_rat_msg_cont_tvb, actx->pinfo, tree);
+ call_dissector(gsm_a_dtap_handle, target_rat_msg_cont_tvb, actx->pinfo, subtree);
}
} else {
if (gsm_rlcmac_dl_handle) {
- call_dissector(gsm_rlcmac_dl_handle, target_rat_msg_cont_tvb, actx->pinfo, tree);
+ call_dissector(gsm_rlcmac_dl_handle, target_rat_msg_cont_tvb, actx->pinfo, subtree);
}
}
break;
@@ -665,7 +669,6 @@ if(ue_eutra_cap_tvb){
if (nas_sec_param_from_eutra_tvb) {
length = tvb_length(nas_sec_param_from_eutra_tvb);
subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_nas_SecurityParam);
- proto_tree_add_text(subtree, nas_sec_param_from_eutra_tvb, 0, length, "NAS security parameters from E-UTRA");
de_emm_sec_par_from_eutra(nas_sec_param_from_eutra_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
}
@@ -678,7 +681,6 @@ if(ue_eutra_cap_tvb){
if (nas_sec_param_to_eutra_tvb) {
length = tvb_length(nas_sec_param_to_eutra_tvb);
subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_nas_SecurityParam);
- proto_tree_add_text(subtree, nas_sec_param_to_eutra_tvb, 0, length, "NAS security parameters to E-UTRA");
de_emm_sec_par_to_eutra(nas_sec_param_to_eutra_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
}
@@ -691,19 +693,21 @@ if(ue_eutra_cap_tvb){
#.FN_BODY SystemInfoListGERAN/_item VAL_PTR = &sys_info_list_tvb
tvbuff_t *sys_info_list_tvb = NULL;
+ proto_tree *subtree;
%(DEFAULT_BODY)s
if (sys_info_list_tvb) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_siPsiSibContainer);
switch (lte_rrc_si_or_psi_geran_val) {
case SI_OrPSI_GERAN_si:
/* SI message */
if (gsm_a_dtap_handle) {
- call_dissector(gsm_a_dtap_handle, sys_info_list_tvb ,actx->pinfo, tree);
+ call_dissector(gsm_a_dtap_handle, sys_info_list_tvb, actx->pinfo, subtree);
}
break;
case SI_OrPSI_GERAN_psi:
/* PSI message */
if (gsm_rlcmac_dl_handle) {
- call_dissector(gsm_rlcmac_dl_handle, sys_info_list_tvb ,actx->pinfo, tree);
+ call_dissector(gsm_rlcmac_dl_handle, sys_info_list_tvb, actx->pinfo, subtree);
}
break;
default:
@@ -713,21 +717,30 @@ if(ue_eutra_cap_tvb){
#.FN_BODY CellInfoUTRA-FDD-r9/utra-BCCH-Container-r9 VAL_PTR = &utra_bcch_cont_tvb
tvbuff_t *utra_bcch_cont_tvb = NULL;
+ proto_tree *subtree;
%(DEFAULT_BODY)s
- if (utra_bcch_cont_tvb && rrc_sys_info_cont_handle)
- call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, tree);
+ if (utra_bcch_cont_tvb && rrc_sys_info_cont_handle) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_siPsiSibContainer);
+ call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, subtree);
+ }
#.FN_BODY CellInfoUTRA-TDD-r9/utra-BCCH-Container-r9 VAL_PTR = &utra_bcch_cont_tvb
tvbuff_t *utra_bcch_cont_tvb = NULL;
+ proto_tree *subtree;
%(DEFAULT_BODY)s
- if (utra_bcch_cont_tvb && rrc_sys_info_cont_handle)
- call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, tree);
+ if (utra_bcch_cont_tvb && rrc_sys_info_cont_handle) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_siPsiSibContainer);
+ call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, subtree);
+ }
#.FN_BODY CellInfoUTRA-TDD-r10/utra-BCCH-Container-r10 VAL_PTR = &utra_bcch_cont_tvb
tvbuff_t *utra_bcch_cont_tvb = NULL;
+ proto_tree *subtree;
%(DEFAULT_BODY)s
- if (utra_bcch_cont_tvb && rrc_sys_info_cont_handle)
- call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, tree);
+ if (utra_bcch_cont_tvb && rrc_sys_info_cont_handle) {
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_siPsiSibContainer);
+ call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, subtree);
+ }
#.FN_BODY NeighCellConfig VAL_PTR = &neigh_cell_config_tvb
tvbuff_t *neigh_cell_config_tvb = NULL;