aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/nbap
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-05-22 11:53:52 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-05-22 11:53:52 +0000
commit2b09e18d75db5d347631c8790d6be6e2c660b1a1 (patch)
treeae203ddc424ac821b2a3fb292dc51241bcbc4463 /asn1/nbap
parentec5ec34f1f828c1a5e2b4042b9b9d79854d0b762 (diff)
Collect and use E-DCH data. + one file.
svn path=/trunk/; revision=42780
Diffstat (limited to 'asn1/nbap')
-rw-r--r--asn1/nbap/nbap.cnf95
1 files changed, 94 insertions, 1 deletions
diff --git a/asn1/nbap/nbap.cnf b/asn1/nbap/nbap.cnf
index f52a89a969..fd9258c1c0 100644
--- a/asn1/nbap/nbap.cnf
+++ b/asn1/nbap/nbap.cnf
@@ -981,6 +981,7 @@ dch_id = 0xFFFFFFFF;
#.FN_BODY RL-Specific-E-DCH-Information-Item
address dst_addr, null_addr;
conversation_t *conversation;
+umts_fp_conversation_info_t *umts_fp_conversation_info;
transportLayerAddress_ipv4 = 0;
BindingID_port = 0;
@@ -1009,8 +1010,100 @@ BindingID_port = 0;
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
+ if(actx->pinfo->link_dir==P2P_DIR_DL){
+ umts_fp_conversation_info = se_new0(umts_fp_conversation_info_t);
+ /* Fill in the data */
+ umts_fp_conversation_info->iface_type = IuB_Interface;
+ umts_fp_conversation_info->division = Division_FDD;
+ umts_fp_conversation_info->channel = CHANNEL_EDCH;
+ umts_fp_conversation_info->dl_frame_number = 0;
+ umts_fp_conversation_info->ul_frame_number = actx->pinfo->fd->num;
+ SE_COPY_ADDRESS(&(umts_fp_conversation_info->crnc_address), &dst_addr);
+ umts_fp_conversation_info->crnc_port = BindingID_port;
+
+ /* Set address for collection of DDI entries */
+ COPY_ADDRESS(&(nbap_edch_chanel_info[e_dch_macdflow_id].crnc_address),&dst_addr);
+ nbap_edch_chanel_info[e_dch_macdflow_id].crnc_port = BindingID_port;
+
+ set_umts_fp_conv_data(conversation, umts_fp_conversation_info);
+ }
+
}
+#.FN_BODY E-DCH-MACdFlow-Specific-InfoItem
+umts_fp_conversation_info_t *p_conv_data = NULL;
+address null_addr;
+conversation_t *p_conv;
+guint32 no_ddi_entries, i;
+
+%(DEFAULT_BODY)s
+
+ if (actx->pinfo->fd->flags.visited)
+ {
+ return offset;
+ }
+ /* Check if we have converstaion info */
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+ p_conv = find_conversation(actx->pinfo->fd->num, &nbap_edch_chanel_info[e_dch_macdflow_id].crnc_address, &null_addr,
+ PT_UDP,
+ nbap_edch_chanel_info[e_dch_macdflow_id].crnc_port, 0, NO_ADDR_B);
+ if(!p_conv)
+ return offset;
+
+ p_conv_data = conversation_get_proto_data(p_conv, proto_fp);
+
+ if(!p_conv_data)
+ return offset;
+ no_ddi_entries = p_conv_data->no_ddi_entries = nbap_edch_chanel_info[e_dch_macdflow_id].no_ddi_entries;
+ nbap_debug2("E-DCH-MACdFlow-Specific-InfoItem: e_dch_macdflow_id %%u, no_ddi_entries %%u",e_dch_macdflow_id,no_ddi_entries);
+ for (i = 0; i < no_ddi_entries; i++) {
+ p_conv_data->edch_ddi[i] = nbap_edch_chanel_info[e_dch_macdflow_id].edch_ddi[i];
+ p_conv_data->edch_macd_pdu_size[i] = nbap_edch_chanel_info[e_dch_macdflow_id].edch_macd_pdu_size[i];
+ nbap_debug3("E-DCH-MACdFlow-Specific-InfoItem: e_dch_macdflow_id %%u edch_ddi %%u edch_macd_pdu_size %%u",
+ e_dch_macdflow_id,
+ nbap_edch_chanel_info[e_dch_macdflow_id].edch_ddi[i],
+ nbap_edch_chanel_info[e_dch_macdflow_id].edch_macd_pdu_size[i]
+ );
+ }
+
+ p_conv_data->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
+
+ p_conv_data->edch_type = 0; /* 1 means T2 */
+ /* use to display e_dch_macdflow_id */
+ p_conv_data->num_dch_in_flow = 1;
+ p_conv_data->dchs_in_flow_list[0] = e_dch_macdflow_id;
+
+
+#.FN_BODY E-DCH-LogicalChannelInformation
+ num_items = 0;
+
+%(DEFAULT_BODY)s
+
+ nbap_edch_chanel_info[e_dch_macdflow_id].no_ddi_entries = num_items;
+
+#.FN_HDR E-DCH-LogicalChannelInformationItem
+ num_items++;
+
+#.FN_BODY E-DCH-DDI-Value VAL_PTR = &e_dch_ddi_value
+
+%(DEFAULT_BODY)s
+
+ if (actx->pinfo->fd->flags.visited)
+ {
+ return offset;
+ }
+ nbap_edch_chanel_info[e_dch_macdflow_id].edch_ddi[num_items-1] = e_dch_ddi_value;
+
+#.FN_BODY MACdPDU-Size VAL_PTR = &MACdPDU_Size
+%(DEFAULT_BODY)s
+
+ if (actx->pinfo->fd->flags.visited)
+ {
+ return offset;
+ }
+ nbap_edch_chanel_info[e_dch_macdflow_id].edch_macd_pdu_size[num_items-1] = MACdPDU_Size;
+
+
#.FN_BODY HSDSCH-MACdFlow-Specific-InfoItem
@@ -1060,7 +1153,7 @@ BindingID_port = 0;
umts_fp_conversation_info->num_dch_in_flow = 1;
umts_fp_conversation_info->dchs_in_flow_list[0] = hsdsch_macdflow_id;
- umts_fp_conversation_info->hsdsch_entity = hs;
+ umts_fp_conversation_info->hsdsch_entity = ehs;
set_umts_fp_conv_data(conversation, umts_fp_conversation_info);
}
}