Use converstaion info to dissect FP DCH flows. Revert unfinished code.

svn path=/trunk/; revision=42628
This commit is contained in:
Anders Broman 2012-05-15 15:00:52 +00:00
parent 1c2a67f348
commit e134cca032
5 changed files with 548 additions and 214 deletions

View File

@ -491,8 +491,20 @@ guint32 payload_crc_value;
g_nbap_msg_info_for_fp.dch_crc_present = FALSE;
}
#.FN_BODY DCH-ID VAL_PTR = &dch_id
%(DEFAULT_BODY)s
##.FN_BODY DCH-ID VAL_PTR = &dch_id
#%(DEFAULT_BODY)s
# if(g_num_dch_in_flow>0);
# g_dchs_in_flow_list[g_num_dch_in_flow-1]=dch_id;
#
# Only get the DCH-ID in this particularcase
#
#.FN_BODY DCH-Specific-FDD-Item/dCH-ID
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, &dch_id, FALSE);
if(g_num_dch_in_flow>0);
g_dchs_in_flow_list[g_num_dch_in_flow-1]=dch_id;
#.FN_BODY CommonPhysicalChannelID VAL_PTR = &commonphysicalchannelid
%(DEFAULT_BODY)s
@ -522,9 +534,11 @@ guint32 payload_crc_value;
address dst_addr, null_addr;
conversation_t *conversation;
fp_info *nbap_fp_info_ul = NULL, *nbap_fp_info_dl = NULL;
int chan;
transportLayerAddress_ipv4 = 0;
BindingID_port = 0;
transportFormatSet_type = CPCH;
%(DEFAULT_BODY)s
@ -561,6 +575,11 @@ BindingID_port = 0;
nbap_fp_info_ul->is_uplink = TRUE;
nbap_fp_info_ul->channel = CHANNEL_CPCH;
nbap_fp_info_ul->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
nbap_fp_info_ul->num_chans = nbap_dch_chnl_info[dch_id].num_ul_chans;
for (chan = 0; chan < nbap_dch_chnl_info[dch_id].num_ul_chans; chan++) {
nbap_fp_info_ul->chan_tf_size[chan] = nbap_dch_chnl_info[dch_id].ul_chan_tf_size[chan];
nbap_fp_info_ul->chan_num_tbs[chan] = nbap_dch_chnl_info[dch_id].ul_chan_num_tbs[chan];
}
nbap_fp_info_dl = se_new0(fp_info);
nbap_fp_info_dl->iface_type = IuB_Interface;
@ -571,18 +590,93 @@ BindingID_port = 0;
nbap_fp_info_dl->is_uplink = FALSE;
nbap_fp_info_dl->channel = CHANNEL_CPCH;
nbap_fp_info_dl->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
nbap_fp_info_dl->num_chans = nbap_dch_chnl_info[dch_id].num_dl_chans;
for (chan = 0; chan < nbap_dch_chnl_info[dch_id].num_dl_chans; chan++) {
nbap_fp_info_dl->chan_tf_size[chan] = nbap_dch_chnl_info[dch_id].dl_chan_tf_size[chan];
nbap_fp_info_dl->chan_num_tbs[chan] = nbap_dch_chnl_info[dch_id].dl_chan_num_tbs[chan];
}
if(actx->pinfo->link_dir==P2P_DIR_DL){
/* For now have on fp_info_ul and on fp_info_dl, may not be needed */
set_umts_fp_ul_conv_data(conversation, actx->pinfo->fd->num, &dst_addr, BindingID_port, commonphysicalchannelid, nbap_fp_info_ul, nbap_fp_info_dl);
//set_umts_fp_ul_conv_data(conversation, actx->pinfo->fd->num, &dst_addr, BindingID_port, commonphysicalchannelid, nbap_fp_info_ul, nbap_fp_info_dl);
}
#.FN_HDR DCH-Specific-FDD-InformationList
g_num_dch_in_flow = 0;
#.FN_HDR DCH-Specific-FDD-Item
g_num_dch_in_flow++;
#.FN_HDR DCH-Specific-FDD-Item/ul-TransportFormatSet
transportFormatSet_type = DCH_UL;
nbap_dch_chnl_info[dch_id].num_ul_chans = 0;
#.FN_HDR DCH-Specific-FDD-Item/dl-TransportFormatSet
transportFormatSet_type = DCH_DL;
nbap_dch_chnl_info[dch_id].num_dl_chans = 0;
#.FN_HDR TransportFormatSet-DynamicPartList
num_items = 0;
#.FN_HDR TransportFormatSet-DynamicPartList/_item
num_items++;
#.FN_BODY TransportFormatSet-NrOfTransportBlocks VAL_PTR = &NrOfTransportBlocks
guint32 NrOfTransportBlocks;
%(DEFAULT_BODY)s
if(num_items>0){
switch(transportFormatSet_type){
case DCH_UL:
nbap_dch_chnl_info[dch_id].num_ul_chans++;
nbap_dch_chnl_info[dch_id].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
break;
case DCH_DL:
nbap_dch_chnl_info[dch_id].num_dl_chans++;
nbap_dch_chnl_info[dch_id].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
break;
case CPCH:
nbap_dch_chnl_info[dch_id].num_ul_chans++;
nbap_dch_chnl_info[dch_id].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
nbap_dch_chnl_info[dch_id].num_dl_chans++;
nbap_dch_chnl_info[dch_id].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
break;
default:
break;
}
}
#.FN_BODY TransportFormatSet-TransportBlockSize VAL_PTR = &TransportBlockSize
guint32 TransportBlockSize;
%(DEFAULT_BODY)s
if(num_items>0){
switch(transportFormatSet_type){
case DCH_UL:
nbap_dch_chnl_info[dch_id].ul_chan_tf_size[num_items-1] = TransportBlockSize;
break;
case DCH_DL:
nbap_dch_chnl_info[dch_id].dl_chan_tf_size[num_items-1] = TransportBlockSize;
break;
case CPCH:
nbap_dch_chnl_info[dch_id].ul_chan_tf_size[num_items-1] = TransportBlockSize;
nbap_dch_chnl_info[dch_id].dl_chan_tf_size[num_items-1] = TransportBlockSize;
break;
default:
break;
}
}
#.FN_BODY RL-Specific-DCH-Info-Item
address dst_addr, null_addr;
conversation_t *conversation;
fp_info *nbap_fp_info_ul = NULL, *nbap_fp_info_dl = NULL;
conversation_t *conversation = NULL;
umts_fp_conversation_info_t *umts_fp_conversation_info;
int i, j, num_tf;
transportLayerAddress_ipv4 = 0;
BindingID_port = 0;
@ -610,39 +704,47 @@ dch_id = 0xFFFFFFFF;
&null_addr, PT_UDP,BindingID_port ,
0, NO_ADDR2|NO_PORT2);
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
}
nbap_fp_info_ul = se_new0(fp_info);
nbap_fp_info_ul->iface_type = IuB_Interface;
nbap_fp_info_ul->division = Division_FDD;
nbap_fp_info_ul->release = 7; /* Set values greater then the checks performed */
nbap_fp_info_ul->release_year = 2006;
nbap_fp_info_ul->release_month = 12;
nbap_fp_info_ul->is_uplink = g_nbap_msg_info_for_fp.is_uplink;
nbap_fp_info_ul->channel = CHANNEL_DCH;
nbap_fp_info_ul->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
/* 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_DCH;
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;
nbap_fp_info_dl = se_new0(fp_info);
nbap_fp_info_dl->iface_type = IuB_Interface;
nbap_fp_info_dl->division = Division_FDD;
nbap_fp_info_dl->release = 7; /* Set values greater then the checks performed */
nbap_fp_info_dl->release_year = 2006;
nbap_fp_info_dl->release_month = 12;
nbap_fp_info_dl->is_uplink = FALSE;
nbap_fp_info_dl->channel = CHANNEL_DCH;
nbap_fp_info_dl->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
/* DCH's in this flow */
umts_fp_conversation_info->num_dch_in_flow = g_num_dch_in_flow;
umts_fp_conversation_info->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
for (i = 0; i < g_num_dch_in_flow; i++) {
umts_fp_conversation_info->dchs_in_flow_list[i] = g_dchs_in_flow_list[i];
if(actx->pinfo->link_dir==P2P_DIR_DL){
/* For now have on fp_info_ul and on fp_info_dl, may not be needed */
set_umts_fp_ul_conv_data(conversation, actx->pinfo->fd->num, &dst_addr, BindingID_port, dch_id, nbap_fp_info_ul, nbap_fp_info_dl);
/* Traffic flows per DCH(UL) */
umts_fp_conversation_info->fp_dch_chanel_info[i].num_ul_chans = num_tf = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].num_ul_chans;
for (j = 0; j < num_tf; j++) {
umts_fp_conversation_info->fp_dch_chanel_info[i].ul_chan_tf_size[j] = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].ul_chan_tf_size[j];
umts_fp_conversation_info->fp_dch_chanel_info[i].ul_chan_num_tbs[j] = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].ul_chan_num_tbs[j];
}
/* Traffic flows per DCH(DL) */
umts_fp_conversation_info->fp_dch_chanel_info[i].num_dl_chans = num_tf = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].num_dl_chans;
for (j = 0; j < num_tf; j++) {
umts_fp_conversation_info->fp_dch_chanel_info[i].dl_chan_tf_size[j] = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].dl_chan_tf_size[j];
umts_fp_conversation_info->fp_dch_chanel_info[i].dl_chan_num_tbs[j] = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].dl_chan_num_tbs[j];
}
}
set_umts_fp_conv_data(conversation, umts_fp_conversation_info);
}
}
#.FN_BODY RL-Specific-E-DCH-Information-Item
address dst_addr, null_addr;
conversation_t *conversation;
fp_info *nbap_fp_info_ul = NULL, *nbap_fp_info_dl = NULL;
transportLayerAddress_ipv4 = 0;
BindingID_port = 0;
@ -669,24 +771,8 @@ BindingID_port = 0;
&null_addr, PT_UDP,BindingID_port ,
0, NO_ADDR2|NO_PORT2);
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
}
nbap_fp_info_ul = se_new0(fp_info);
nbap_fp_info_ul->iface_type = IuB_Interface;
nbap_fp_info_ul->division = Division_FDD;
nbap_fp_info_ul->release = 7; /* Set values greater then the checks performed */
nbap_fp_info_ul->release_year = 2006;
nbap_fp_info_ul->release_month = 12;
nbap_fp_info_ul->is_uplink = g_nbap_msg_info_for_fp.is_uplink;
nbap_fp_info_ul->channel = CHANNEL_EDCH;
nbap_fp_info_ul->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
nbap_fp_info_ul->edch_type = 0;
if(actx->pinfo->link_dir==P2P_DIR_DL){
/* For now have on fp_info_ul and on fp_info_dl, may not be needed */
set_umts_fp_ul_conv_data(conversation, actx->pinfo->fd->num, &dst_addr, BindingID_port, e_dch_macdflow_id, nbap_fp_info_ul, nbap_fp_info_dl);
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
}
@ -694,7 +780,6 @@ BindingID_port = 0;
address dst_addr, null_addr;
conversation_t *conversation;
fp_info *nbap_fp_info_ul = NULL, *nbap_fp_info_dl = NULL;
transportLayerAddress_ipv4 = 0;
BindingID_port = 0;
@ -721,25 +806,11 @@ BindingID_port = 0;
&null_addr, PT_UDP,BindingID_port ,
0, NO_ADDR2|NO_PORT2);
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
}
nbap_fp_info_ul = se_new0(fp_info);
nbap_fp_info_ul->iface_type = IuB_Interface;
nbap_fp_info_ul->division = Division_FDD;
nbap_fp_info_ul->release = 7; /* Set values greater then the checks performed */
nbap_fp_info_ul->release_year = 2006;
nbap_fp_info_ul->release_month = 12;
nbap_fp_info_ul->is_uplink = g_nbap_msg_info_for_fp.is_uplink;
nbap_fp_info_ul->channel = CHANNEL_HSDSCH;
nbap_fp_info_ul->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
nbap_fp_info_ul->hsdsch_entity = hs;
if(actx->pinfo->link_dir==P2P_DIR_DL){
/* For now have on fp_info_ul and on fp_info_dl, may not be needed */
set_umts_fp_ul_conv_data(conversation, actx->pinfo->fd->num, &dst_addr, BindingID_port, hsdsch_macdflow_id, nbap_fp_info_ul, nbap_fp_info_dl);
}
#.REGISTER_NEW

View File

@ -49,6 +49,18 @@
#define PSNAME "NBAP"
#define PFNAME "nbap"
/* Debug */
#if 1
#define nbap_debug0(str) g_warning(str)
#define nbap_debug1(str,p1) g_warning(str,p1)
#define nbap_debug2(str,p1,p2) g_warning(str,p1,p2)
#define nbap_debug3(str,p1,p2,p3) g_warning(str,p1,p2,p3)
#else
#define nbap_debug0(str)
#define nbap_debug1(str,p1)
#define nbap_debug2(str,p1,p2)
#define nbap_debug3(str,p1,p2,p3)
#endif
/* Global variables */
dissector_handle_t fp_handle;
@ -84,6 +96,21 @@ struct _nbap_msg_info_for_fp
guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
};
typedef struct
{
gint num_ul_chans;
gint ul_chan_tf_size[MAX_FP_CHANS];
gint ul_chan_num_tbs[MAX_FP_CHANS];
gint num_dl_chans;
gint dl_chan_tf_size[MAX_FP_CHANS];
gint dl_chan_num_tbs[MAX_FP_CHANS];
}nbap_dch_chanel_info_t;
nbap_dch_chanel_info_t nbap_dch_chnl_info[maxNrOfDCHs];
gint g_num_dch_in_flow;
gint g_dchs_in_flow_list[maxNrOfTFs];
struct _nbap_msg_info_for_fp g_nbap_msg_info_for_fp;
/* Global variables */
@ -92,6 +119,16 @@ static guint32 ProtocolIE_ID;
static guint32 ddMode;
static const gchar *ProcedureID;
static guint32 dch_id, commonphysicalchannelid, e_dch_macdflow_id, hsdsch_macdflow_id;
static guint num_items;
enum TransportFormatSet_type_enum
{
DCH_UL,
DCH_DL,
CPCH,
};
enum TransportFormatSet_type_enum transportFormatSet_type;
/* Dissector tables */
static dissector_table_t nbap_ies_dissector_table;

View File

@ -57,6 +57,18 @@
#define PSNAME "NBAP"
#define PFNAME "nbap"
/* Debug */
#if 1
#define nbap_debug0(str) g_warning(str)
#define nbap_debug1(str,p1) g_warning(str,p1)
#define nbap_debug2(str,p1,p2) g_warning(str,p1,p2)
#define nbap_debug3(str,p1,p2,p3) g_warning(str,p1,p2,p3)
#else
#define nbap_debug0(str)
#define nbap_debug1(str,p1)
#define nbap_debug2(str,p1,p2)
#define nbap_debug3(str,p1,p2,p3)
#endif
/* Global variables */
dissector_handle_t fp_handle;
@ -1521,7 +1533,7 @@ typedef enum _ProtocolIE_ID_enum {
} ProtocolIE_ID_enum;
/*--- End of included file: packet-nbap-val.h ---*/
#line 59 "../../asn1/nbap/packet-nbap-template.c"
#line 71 "../../asn1/nbap/packet-nbap-template.c"
/* Initialize the protocol and registered fields */
static int proto_nbap = -1;
@ -2805,13 +2817,14 @@ static int hf_nbap_toAWS = -1; /* ToAWS */
static int hf_nbap_toAWE = -1; /* ToAWE */
static int hf_nbap_dCH_SpecificInformationList = -1; /* DCH_Specific_FDD_InformationList */
static int hf_nbap_DCH_Specific_FDD_InformationList_item = -1; /* DCH_Specific_FDD_Item */
static int hf_nbap_dCH_ID = -1; /* DCH_ID */
static int hf_nbap_ul_TransportFormatSet = -1; /* TransportFormatSet */
static int hf_nbap_dl_TransportFormatSet = -1; /* TransportFormatSet */
static int hf_nbap_dCH_ID = -1; /* T_dCH_ID */
static int hf_nbap_ul_TransportFormatSet = -1; /* T_ul_TransportFormatSet */
static int hf_nbap_dl_TransportFormatSet = -1; /* T_dl_TransportFormatSet */
static int hf_nbap_allocationRetentionPriority = -1; /* AllocationRetentionPriority */
static int hf_nbap_frameHandlingPriority = -1; /* FrameHandlingPriority */
static int hf_nbap_qE_Selector = -1; /* QE_Selector */
static int hf_nbap_DCH_InformationResponse_item = -1; /* DCH_InformationResponseItem */
static int hf_nbap_dCH_ID_01 = -1; /* DCH_ID */
static int hf_nbap_DCH_MeasurementOccasion_Information_item = -1; /* DchMeasurementOccasionInformation_Item */
static int hf_nbap_pattern_Sequence_Identifier = -1; /* Pattern_Sequence_Identifier */
static int hf_nbap_status_Flag = -1; /* Status_Flag */
@ -2825,6 +2838,8 @@ static int hf_nbap_dCH_SpecificInformationList_01 = -1; /* DCH_Specific_TDD_Inf
static int hf_nbap_DCH_Specific_TDD_InformationList_item = -1; /* DCH_Specific_TDD_Item */
static int hf_nbap_ul_CCTrCH_ID = -1; /* CCTrCH_ID */
static int hf_nbap_dl_CCTrCH_ID = -1; /* CCTrCH_ID */
static int hf_nbap_ul_TransportFormatSet_01 = -1; /* TransportFormatSet */
static int hf_nbap_dl_TransportFormatSet_01 = -1; /* TransportFormatSet */
static int hf_nbap_FDD_DCHs_to_Modify_item = -1; /* FDD_DCHs_to_ModifyItem */
static int hf_nbap_dCH_SpecificInformationList_02 = -1; /* DCH_ModifySpecificInformation_FDD */
static int hf_nbap_DCH_ModifySpecificInformation_FDD_item = -1; /* DCH_ModifySpecificItem_FDD */
@ -4817,7 +4832,7 @@ static int hf_nbap_RACH_SubChannelNumbers_subCh1 = -1;
static int hf_nbap_RACH_SubChannelNumbers_subCh0 = -1;
/*--- End of included file: packet-nbap-hf.c ---*/
#line 67 "../../asn1/nbap/packet-nbap-template.c"
#line 79 "../../asn1/nbap/packet-nbap-template.c"
/* Initialize the subtree pointers */
static int ett_nbap = -1;
@ -6455,7 +6470,7 @@ static gint ett_nbap_UnsuccessfulOutcome = -1;
static gint ett_nbap_Outcome = -1;
/*--- End of included file: packet-nbap-ett.c ---*/
#line 74 "../../asn1/nbap/packet-nbap-template.c"
#line 86 "../../asn1/nbap/packet-nbap-template.c"
/*
* Structure to build information needed to dissect the FP flow beeing set up.
@ -6469,6 +6484,21 @@ struct _nbap_msg_info_for_fp
guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
};
typedef struct
{
gint num_ul_chans;
gint ul_chan_tf_size[MAX_FP_CHANS];
gint ul_chan_num_tbs[MAX_FP_CHANS];
gint num_dl_chans;
gint dl_chan_tf_size[MAX_FP_CHANS];
gint dl_chan_num_tbs[MAX_FP_CHANS];
}nbap_dch_chanel_info_t;
nbap_dch_chanel_info_t nbap_dch_chnl_info[maxNrOfDCHs];
gint g_num_dch_in_flow;
gint g_dchs_in_flow_list[maxNrOfTFs];
struct _nbap_msg_info_for_fp g_nbap_msg_info_for_fp;
/* Global variables */
@ -6477,6 +6507,16 @@ static guint32 ProtocolIE_ID;
static guint32 ddMode;
static const gchar *ProcedureID;
static guint32 dch_id, commonphysicalchannelid, e_dch_macdflow_id, hsdsch_macdflow_id;
static guint num_items;
enum TransportFormatSet_type_enum
{
DCH_UL,
DCH_DL,
CPCH,
};
enum TransportFormatSet_type_enum transportFormatSet_type;
/* Dissector tables */
static dissector_table_t nbap_ies_dissector_table;
@ -8469,7 +8509,7 @@ dissect_nbap_Additional_EDCH_RL_Specific_Information_To_Setup_List(tvbuff_t *tvb
static int
dissect_nbap_E_DCH_MACdFlow_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 501 "../../asn1/nbap/nbap.cnf"
#line 513 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, maxNrOfEDCHMACdFlows_1, &e_dch_macdflow_id, FALSE);
@ -8483,7 +8523,7 @@ dissect_nbap_E_DCH_MACdFlow_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_nbap_BindingID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 507 "../../asn1/nbap/nbap.cnf"
#line 519 "../../asn1/nbap/nbap.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@ -11080,7 +11120,7 @@ dissect_nbap_Common_E_DCH_HSDPCCH_InfoItem(tvbuff_t *tvb _U_, int offset _U_, as
static int
dissect_nbap_CommonPhysicalChannelID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 498 "../../asn1/nbap/nbap.cnf"
#line 510 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, &commonphysicalchannelid, FALSE);
@ -14413,12 +14453,8 @@ dissect_nbap_DATA_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr
static int
dissect_nbap_DCH_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 495 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, &dch_id, FALSE);
0U, 255U, NULL, FALSE);
return offset;
}
@ -14462,9 +14498,53 @@ dissect_nbap_ToAWE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot
static int
dissect_nbap_TransportFormatSet_NrOfTransportBlocks(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
dissect_nbap_T_dCH_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 502 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 512U, NULL, FALSE);
0U, 255U, &dch_id, FALSE);
if(g_num_dch_in_flow>0);
g_dchs_in_flow_list[g_num_dch_in_flow-1]=dch_id;
return offset;
}
static int
dissect_nbap_TransportFormatSet_NrOfTransportBlocks(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 627 "../../asn1/nbap/nbap.cnf"
guint32 NrOfTransportBlocks;
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 512U, &NrOfTransportBlocks, FALSE);
if(num_items>0){
switch(transportFormatSet_type){
case DCH_UL:
nbap_dch_chnl_info[dch_id].num_ul_chans++;
nbap_dch_chnl_info[dch_id].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
break;
case DCH_DL:
nbap_dch_chnl_info[dch_id].num_dl_chans++;
nbap_dch_chnl_info[dch_id].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
break;
case CPCH:
nbap_dch_chnl_info[dch_id].num_ul_chans++;
nbap_dch_chnl_info[dch_id].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
nbap_dch_chnl_info[dch_id].num_dl_chans++;
nbap_dch_chnl_info[dch_id].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks;
break;
default:
break;
}
}
return offset;
}
@ -14473,8 +14553,32 @@ dissect_nbap_TransportFormatSet_NrOfTransportBlocks(tvbuff_t *tvb _U_, int offse
static int
dissect_nbap_TransportFormatSet_TransportBlockSize(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 653 "../../asn1/nbap/nbap.cnf"
guint32 TransportBlockSize;
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 5000U, NULL, FALSE);
0U, 5000U, &TransportBlockSize, FALSE);
if(num_items>0){
switch(transportFormatSet_type){
case DCH_UL:
nbap_dch_chnl_info[dch_id].ul_chan_tf_size[num_items-1] = TransportBlockSize;
break;
case DCH_DL:
nbap_dch_chnl_info[dch_id].dl_chan_tf_size[num_items-1] = TransportBlockSize;
break;
case CPCH:
nbap_dch_chnl_info[dch_id].ul_chan_tf_size[num_items-1] = TransportBlockSize;
nbap_dch_chnl_info[dch_id].dl_chan_tf_size[num_items-1] = TransportBlockSize;
break;
default:
break;
}
}
return offset;
}
@ -14574,6 +14678,11 @@ static const per_sequence_t TransportFormatSet_DynamicPartList_item_sequence[] =
static int
dissect_nbap_TransportFormatSet_DynamicPartList_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 623 "../../asn1/nbap/nbap.cnf"
num_items++;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_TransportFormatSet_DynamicPartList_item, TransportFormatSet_DynamicPartList_item_sequence);
@ -14587,6 +14696,10 @@ static const per_sequence_t TransportFormatSet_DynamicPartList_sequence_of[1] =
static int
dissect_nbap_TransportFormatSet_DynamicPartList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 620 "../../asn1/nbap/nbap.cnf"
num_items = 0;
offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
ett_nbap_TransportFormatSet_DynamicPartList, TransportFormatSet_DynamicPartList_sequence_of,
1, maxNrOfTFs, FALSE);
@ -14752,6 +14865,34 @@ dissect_nbap_TransportFormatSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
static int
dissect_nbap_T_ul_TransportFormatSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 612 "../../asn1/nbap/nbap.cnf"
transportFormatSet_type = DCH_UL;
nbap_dch_chnl_info[dch_id].num_ul_chans = 0;
offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index);
return offset;
}
static int
dissect_nbap_T_dl_TransportFormatSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 616 "../../asn1/nbap/nbap.cnf"
transportFormatSet_type = DCH_DL;
nbap_dch_chnl_info[dch_id].num_dl_chans = 0;
offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index);
return offset;
}
static int
dissect_nbap_FrameHandlingPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
@ -14778,9 +14919,9 @@ dissect_nbap_QE_Selector(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
static const per_sequence_t DCH_Specific_FDD_Item_sequence[] = {
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_ul_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_T_dCH_ID },
{ &hf_nbap_ul_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_T_ul_TransportFormatSet },
{ &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_T_dl_TransportFormatSet },
{ &hf_nbap_allocationRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_AllocationRetentionPriority },
{ &hf_nbap_frameHandlingPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_FrameHandlingPriority },
{ &hf_nbap_qE_Selector , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_QE_Selector },
@ -14790,6 +14931,10 @@ static const per_sequence_t DCH_Specific_FDD_Item_sequence[] = {
static int
dissect_nbap_DCH_Specific_FDD_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 609 "../../asn1/nbap/nbap.cnf"
g_num_dch_in_flow++;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_DCH_Specific_FDD_Item, DCH_Specific_FDD_Item_sequence);
@ -14803,6 +14948,10 @@ static const per_sequence_t DCH_Specific_FDD_InformationList_sequence_of[1] = {
static int
dissect_nbap_DCH_Specific_FDD_InformationList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 606 "../../asn1/nbap/nbap.cnf"
g_num_dch_in_flow = 0;
offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
ett_nbap_DCH_Specific_FDD_InformationList, DCH_Specific_FDD_InformationList_sequence_of,
1, maxNrOfDCHs, FALSE);
@ -14860,7 +15009,7 @@ dissect_nbap_DCH_Indicator_For_E_DCH_HSDPA_Operation(tvbuff_t *tvb _U_, int offs
static const per_sequence_t DCH_InformationResponseItem_sequence[] = {
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_bindingID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_BindingID },
{ &hf_nbap_transportLayerAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportLayerAddress },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
@ -15006,11 +15155,11 @@ dissect_nbap_DCH_MeasurementOccasion_Information(tvbuff_t *tvb _U_, int offset _
static const per_sequence_t DCH_Specific_TDD_Item_sequence[] = {
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_ul_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CCTrCH_ID },
{ &hf_nbap_dl_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CCTrCH_ID },
{ &hf_nbap_ul_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_ul_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_dl_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_allocationRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_AllocationRetentionPriority },
{ &hf_nbap_frameHandlingPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_FrameHandlingPriority },
{ &hf_nbap_qE_Selector , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_QE_Selector },
@ -15075,9 +15224,9 @@ dissect_nbap_DCH_TDD_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
static const per_sequence_t DCH_ModifySpecificItem_FDD_sequence[] = {
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_ul_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
{ &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
{ &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_ul_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
{ &hf_nbap_dl_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
{ &hf_nbap_allocationRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_AllocationRetentionPriority },
{ &hf_nbap_frameHandlingPriority, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_FrameHandlingPriority },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
@ -15141,11 +15290,11 @@ dissect_nbap_FDD_DCHs_to_Modify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
static const per_sequence_t DCH_ModifySpecificItem_TDD_sequence[] = {
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_ul_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_CCTrCH_ID },
{ &hf_nbap_dl_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_CCTrCH_ID },
{ &hf_nbap_ul_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
{ &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
{ &hf_nbap_ul_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
{ &hf_nbap_dl_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_TransportFormatSet },
{ &hf_nbap_allocationRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_AllocationRetentionPriority },
{ &hf_nbap_frameHandlingPriority, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_FrameHandlingPriority },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
@ -22580,7 +22729,7 @@ dissect_nbap_HSDSCH_Common_System_Information_ResponseFDD(tvbuff_t *tvb _U_, int
static int
dissect_nbap_HSDSCH_MACdFlow_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 504 "../../asn1/nbap/nbap.cnf"
#line 516 "../../asn1/nbap/nbap.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, maxNrOfMACdFlows_1, &hsdsch_macdflow_id, FALSE);
@ -22602,11 +22751,10 @@ static const per_sequence_t HSDSCH_MACdFlow_Specific_InfoItem_sequence[] = {
static int
dissect_nbap_HSDSCH_MACdFlow_Specific_InfoItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 694 "../../asn1/nbap/nbap.cnf"
#line 780 "../../asn1/nbap/nbap.cnf"
address dst_addr, null_addr;
conversation_t *conversation;
fp_info *nbap_fp_info_ul = NULL, *nbap_fp_info_dl = NULL;
transportLayerAddress_ipv4 = 0;
BindingID_port = 0;
@ -22635,25 +22783,11 @@ BindingID_port = 0;
&null_addr, PT_UDP,BindingID_port ,
0, NO_ADDR2|NO_PORT2);
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
}
nbap_fp_info_ul = se_new0(fp_info);
nbap_fp_info_ul->iface_type = IuB_Interface;
nbap_fp_info_ul->division = Division_FDD;
nbap_fp_info_ul->release = 7; /* Set values greater then the checks performed */
nbap_fp_info_ul->release_year = 2006;
nbap_fp_info_ul->release_month = 12;
nbap_fp_info_ul->is_uplink = g_nbap_msg_info_for_fp.is_uplink;
nbap_fp_info_ul->channel = CHANNEL_HSDSCH;
nbap_fp_info_ul->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
nbap_fp_info_ul->hsdsch_entity = hs;
if(actx->pinfo->link_dir==P2P_DIR_DL){
/* For now have on fp_info_ul and on fp_info_dl, may not be needed */
set_umts_fp_ul_conv_data(conversation, actx->pinfo->fd->num, &dst_addr, BindingID_port, hsdsch_macdflow_id, nbap_fp_info_ul, nbap_fp_info_dl);
}
@ -27375,10 +27509,11 @@ static const per_sequence_t RL_Specific_DCH_Info_Item_sequence[] = {
static int
dissect_nbap_RL_Specific_DCH_Info_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 583 "../../asn1/nbap/nbap.cnf"
#line 676 "../../asn1/nbap/nbap.cnf"
address dst_addr, null_addr;
conversation_t *conversation;
fp_info *nbap_fp_info_ul = NULL, *nbap_fp_info_dl = NULL;
conversation_t *conversation = NULL;
umts_fp_conversation_info_t *umts_fp_conversation_info;
int i, j, num_tf;
transportLayerAddress_ipv4 = 0;
BindingID_port = 0;
@ -27408,32 +27543,41 @@ dch_id = 0xFFFFFFFF;
&null_addr, PT_UDP,BindingID_port ,
0, NO_ADDR2|NO_PORT2);
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
}
nbap_fp_info_ul = se_new0(fp_info);
nbap_fp_info_ul->iface_type = IuB_Interface;
nbap_fp_info_ul->division = Division_FDD;
nbap_fp_info_ul->release = 7; /* Set values greater then the checks performed */
nbap_fp_info_ul->release_year = 2006;
nbap_fp_info_ul->release_month = 12;
nbap_fp_info_ul->is_uplink = g_nbap_msg_info_for_fp.is_uplink;
nbap_fp_info_ul->channel = CHANNEL_DCH;
nbap_fp_info_ul->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
/* 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_DCH;
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;
nbap_fp_info_dl = se_new0(fp_info);
nbap_fp_info_dl->iface_type = IuB_Interface;
nbap_fp_info_dl->division = Division_FDD;
nbap_fp_info_dl->release = 7; /* Set values greater then the checks performed */
nbap_fp_info_dl->release_year = 2006;
nbap_fp_info_dl->release_month = 12;
nbap_fp_info_dl->is_uplink = FALSE;
nbap_fp_info_dl->channel = CHANNEL_DCH;
nbap_fp_info_dl->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
/* DCH's in this flow */
umts_fp_conversation_info->num_dch_in_flow = g_num_dch_in_flow;
umts_fp_conversation_info->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
for (i = 0; i < g_num_dch_in_flow; i++) {
umts_fp_conversation_info->dchs_in_flow_list[i] = g_dchs_in_flow_list[i];
if(actx->pinfo->link_dir==P2P_DIR_DL){
/* For now have on fp_info_ul and on fp_info_dl, may not be needed */
set_umts_fp_ul_conv_data(conversation, actx->pinfo->fd->num, &dst_addr, BindingID_port, dch_id, nbap_fp_info_ul, nbap_fp_info_dl);
/* Traffic flows per DCH(UL) */
umts_fp_conversation_info->fp_dch_chanel_info[i].num_ul_chans = num_tf = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].num_ul_chans;
for (j = 0; j < num_tf; j++) {
umts_fp_conversation_info->fp_dch_chanel_info[i].ul_chan_tf_size[j] = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].ul_chan_tf_size[j];
umts_fp_conversation_info->fp_dch_chanel_info[i].ul_chan_num_tbs[j] = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].ul_chan_num_tbs[j];
}
/* Traffic flows per DCH(DL) */
umts_fp_conversation_info->fp_dch_chanel_info[i].num_dl_chans = num_tf = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].num_dl_chans;
for (j = 0; j < num_tf; j++) {
umts_fp_conversation_info->fp_dch_chanel_info[i].dl_chan_tf_size[j] = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].dl_chan_tf_size[j];
umts_fp_conversation_info->fp_dch_chanel_info[i].dl_chan_num_tbs[j] = nbap_dch_chnl_info[g_dchs_in_flow_list[i]].dl_chan_num_tbs[j];
}
}
set_umts_fp_conv_data(conversation, umts_fp_conversation_info);
}
}
@ -27467,10 +27611,9 @@ static const per_sequence_t RL_Specific_E_DCH_Information_Item_sequence[] = {
static int
dissect_nbap_RL_Specific_E_DCH_Information_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 643 "../../asn1/nbap/nbap.cnf"
#line 746 "../../asn1/nbap/nbap.cnf"
address dst_addr, null_addr;
conversation_t *conversation;
fp_info *nbap_fp_info_ul = NULL, *nbap_fp_info_dl = NULL;
transportLayerAddress_ipv4 = 0;
BindingID_port = 0;
@ -27499,24 +27642,8 @@ BindingID_port = 0;
&null_addr, PT_UDP,BindingID_port ,
0, NO_ADDR2|NO_PORT2);
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
}
nbap_fp_info_ul = se_new0(fp_info);
nbap_fp_info_ul->iface_type = IuB_Interface;
nbap_fp_info_ul->division = Division_FDD;
nbap_fp_info_ul->release = 7; /* Set values greater then the checks performed */
nbap_fp_info_ul->release_year = 2006;
nbap_fp_info_ul->release_month = 12;
nbap_fp_info_ul->is_uplink = g_nbap_msg_info_for_fp.is_uplink;
nbap_fp_info_ul->channel = CHANNEL_EDCH;
nbap_fp_info_ul->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
nbap_fp_info_ul->edch_type = 0;
if(actx->pinfo->link_dir==P2P_DIR_DL){
/* For now have on fp_info_ul and on fp_info_dl, may not be needed */
set_umts_fp_ul_conv_data(conversation, actx->pinfo->fd->num, &dst_addr, BindingID_port, e_dch_macdflow_id, nbap_fp_info_ul, nbap_fp_info_dl);
/* Set dissector */
conversation_set_dissector(conversation, fp_handle);
}
@ -31057,13 +31184,15 @@ static const per_sequence_t RACH_ParametersItem_CTCH_SetupRqstFDD_sequence[] = {
static int
dissect_nbap_RACH_ParametersItem_CTCH_SetupRqstFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 522 "../../asn1/nbap/nbap.cnf"
#line 534 "../../asn1/nbap/nbap.cnf"
address dst_addr, null_addr;
conversation_t *conversation;
fp_info *nbap_fp_info_ul = NULL, *nbap_fp_info_dl = NULL;
int chan;
transportLayerAddress_ipv4 = 0;
BindingID_port = 0;
transportFormatSet_type = CPCH;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RACH_ParametersItem_CTCH_SetupRqstFDD, RACH_ParametersItem_CTCH_SetupRqstFDD_sequence);
@ -31102,6 +31231,11 @@ BindingID_port = 0;
nbap_fp_info_ul->is_uplink = TRUE;
nbap_fp_info_ul->channel = CHANNEL_CPCH;
nbap_fp_info_ul->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
nbap_fp_info_ul->num_chans = nbap_dch_chnl_info[dch_id].num_ul_chans;
for (chan = 0; chan < nbap_dch_chnl_info[dch_id].num_ul_chans; chan++) {
nbap_fp_info_ul->chan_tf_size[chan] = nbap_dch_chnl_info[dch_id].ul_chan_tf_size[chan];
nbap_fp_info_ul->chan_num_tbs[chan] = nbap_dch_chnl_info[dch_id].ul_chan_num_tbs[chan];
}
nbap_fp_info_dl = se_new0(fp_info);
nbap_fp_info_dl->iface_type = IuB_Interface;
@ -31112,16 +31246,20 @@ BindingID_port = 0;
nbap_fp_info_dl->is_uplink = FALSE;
nbap_fp_info_dl->channel = CHANNEL_CPCH;
nbap_fp_info_dl->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present;
nbap_fp_info_dl->num_chans = nbap_dch_chnl_info[dch_id].num_dl_chans;
for (chan = 0; chan < nbap_dch_chnl_info[dch_id].num_dl_chans; chan++) {
nbap_fp_info_dl->chan_tf_size[chan] = nbap_dch_chnl_info[dch_id].dl_chan_tf_size[chan];
nbap_fp_info_dl->chan_num_tbs[chan] = nbap_dch_chnl_info[dch_id].dl_chan_num_tbs[chan];
}
if(actx->pinfo->link_dir==P2P_DIR_DL){
/* For now have on fp_info_ul and on fp_info_dl, may not be needed */
set_umts_fp_ul_conv_data(conversation, actx->pinfo->fd->num, &dst_addr, BindingID_port, commonphysicalchannelid, nbap_fp_info_ul, nbap_fp_info_dl);
//set_umts_fp_ul_conv_data(conversation, actx->pinfo->fd->num, &dst_addr, BindingID_port, commonphysicalchannelid, nbap_fp_info_ul, nbap_fp_info_dl);
}
return offset;
}
@ -31359,7 +31497,7 @@ dissect_nbap_Secondary_CCPCH_768_parameterList_CTCH_SetupRqstTDD(tvbuff_t *tvb _
static const per_sequence_t FACH_ParametersItem_CTCH_SetupRqstTDD_sequence[] = {
{ &hf_nbap_commonTransportChannelID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CommonTransportChannelID },
{ &hf_nbap_fACH_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CCTrCH_ID },
{ &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_dl_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_toAWS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_ToAWS },
{ &hf_nbap_toAWE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_ToAWE },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
@ -31401,7 +31539,7 @@ dissect_nbap_PICH_Parameters_CTCH_SetupRqstTDD(tvbuff_t *tvb _U_, int offset _U_
static const per_sequence_t PCH_ParametersItem_CTCH_SetupRqstTDD_sequence[] = {
{ &hf_nbap_commonTransportChannelID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CommonTransportChannelID },
{ &hf_nbap_pCH_CCTrCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_CCTrCH_ID },
{ &hf_nbap_dl_TransportFormatSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_dl_TransportFormatSet_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_TransportFormatSet },
{ &hf_nbap_toAWS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_ToAWS },
{ &hf_nbap_toAWE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_ToAWE },
{ &hf_nbap_pICH_Parameters_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_PICH_Parameters_CTCH_SetupRqstTDD },
@ -37733,7 +37871,7 @@ dissect_nbap_DL_DPCH_Power_Information_RL_ReconfPrepFDD(tvbuff_t *tvb _U_, int o
static const per_sequence_t DCH_DeleteItem_RL_ReconfPrepFDD_sequence[] = {
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@ -39015,7 +39153,7 @@ dissect_nbap_DL_CCTrCH_InformationDeleteList_RL_ReconfPrepTDD(tvbuff_t *tvb _U_,
static const per_sequence_t DCH_DeleteItem_RL_ReconfPrepTDD_sequence[] = {
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@ -39523,7 +39661,7 @@ dissect_nbap_DL_DPCH_Information_RL_ReconfRqstFDD(tvbuff_t *tvb _U_, int offset
static const per_sequence_t DCH_DeleteItem_RL_ReconfRqstFDD_sequence[] = {
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@ -39819,7 +39957,7 @@ dissect_nbap_DL_CCTrCH_InformationDeleteItem_RL_ReconfRqstTDD(tvbuff_t *tvb _U_,
static const per_sequence_t DCH_DeleteItem_RL_ReconfRqstTDD_sequence[] = {
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@ -45226,7 +45364,7 @@ dissect_nbap_BearerRearrangementIndication(tvbuff_t *tvb _U_, int offset _U_, as
static const per_sequence_t DCH_RearrangeItem_Bearer_RearrangeInd_sequence[] = {
{ &hf_nbap_dCH_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_dCH_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_nbap_DCH_ID },
{ &hf_nbap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_nbap_ProtocolExtensionContainer },
{ NULL, 0, 0, NULL }
};
@ -53406,7 +53544,7 @@ static int dissect_NULL_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tre
/*--- End of included file: packet-nbap-fn.c ---*/
#line 110 "../../asn1/nbap/packet-nbap-template.c"
#line 147 "../../asn1/nbap/packet-nbap-template.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@ -58572,11 +58710,11 @@ void proto_register_nbap(void) {
{ &hf_nbap_ul_TransportFormatSet,
{ "ul-TransportFormatSet", "nbap.ul_TransportFormatSet",
FT_NONE, BASE_NONE, NULL, 0,
"TransportFormatSet", HFILL }},
NULL, HFILL }},
{ &hf_nbap_dl_TransportFormatSet,
{ "dl-TransportFormatSet", "nbap.dl_TransportFormatSet",
FT_NONE, BASE_NONE, NULL, 0,
"TransportFormatSet", HFILL }},
NULL, HFILL }},
{ &hf_nbap_allocationRetentionPriority,
{ "allocationRetentionPriority", "nbap.allocationRetentionPriority",
FT_NONE, BASE_NONE, NULL, 0,
@ -58593,6 +58731,10 @@ void proto_register_nbap(void) {
{ "DCH-InformationResponseItem", "nbap.DCH_InformationResponseItem",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_nbap_dCH_ID_01,
{ "dCH-ID", "nbap.dCH_ID",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
{ &hf_nbap_DCH_MeasurementOccasion_Information_item,
{ "DchMeasurementOccasionInformation-Item", "nbap.DchMeasurementOccasionInformation_Item",
FT_NONE, BASE_NONE, NULL, 0,
@ -58645,6 +58787,14 @@ void proto_register_nbap(void) {
{ "dl-CCTrCH-ID", "nbap.dl_CCTrCH_ID",
FT_UINT32, BASE_DEC, NULL, 0,
"CCTrCH_ID", HFILL }},
{ &hf_nbap_ul_TransportFormatSet_01,
{ "ul-TransportFormatSet", "nbap.ul_TransportFormatSet",
FT_NONE, BASE_NONE, NULL, 0,
"TransportFormatSet", HFILL }},
{ &hf_nbap_dl_TransportFormatSet_01,
{ "dl-TransportFormatSet", "nbap.dl_TransportFormatSet",
FT_NONE, BASE_NONE, NULL, 0,
"TransportFormatSet", HFILL }},
{ &hf_nbap_FDD_DCHs_to_Modify_item,
{ "FDD-DCHs-to-ModifyItem", "nbap.FDD_DCHs_to_ModifyItem",
FT_NONE, BASE_NONE, NULL, 0,
@ -66603,7 +66753,7 @@ void proto_register_nbap(void) {
NULL, HFILL }},
/*--- End of included file: packet-nbap-hfarr.c ---*/
#line 174 "../../asn1/nbap/packet-nbap-template.c"
#line 211 "../../asn1/nbap/packet-nbap-template.c"
};
/* List of subtrees */
@ -68242,7 +68392,7 @@ void proto_register_nbap(void) {
&ett_nbap_Outcome,
/*--- End of included file: packet-nbap-ettarr.c ---*/
#line 182 "../../asn1/nbap/packet-nbap-template.c"
#line 219 "../../asn1/nbap/packet-nbap-template.c"
};
@ -69373,7 +69523,7 @@ proto_reg_handoff_nbap(void)
/*--- End of included file: packet-nbap-dis-tab.c ---*/
#line 216 "../../asn1/nbap/packet-nbap-template.c"
#line 253 "../../asn1/nbap/packet-nbap-template.c"
}

View File

@ -532,35 +532,14 @@ void proto_reg_handoff_fp(void);
* CRNC sends data downlink on uplink parameters.
*/
void
set_umts_fp_ul_conv_data(conversation_t *conversation, guint32 ul_frame_number, address *crnc_address, guint16 crnc_port, guint32 ch_id, fp_info *fp_info_ul, fp_info *fp_info_dl)
set_umts_fp_conv_data(conversation_t *conversation, umts_fp_conversation_info_t *umts_fp_conversation_info)
{
struct _umts_fp_conversation_info *p_conv_data = NULL;
if(conversation==NULL)
return;
p_conv_data = conversation_get_proto_data(conversation, proto_fp);
conversation_add_proto_data(conversation, proto_fp, umts_fp_conversation_info);
/*
* If not, add a new data item.
*/
if ( ! p_conv_data ) {
/* Create conversation data */
p_conv_data = se_alloc(sizeof(struct _umts_fp_conversation_info));
p_conv_data->dl_frame_number = 0;
p_conv_data->ul_frame_number = ul_frame_number;
SE_COPY_ADDRESS(&(p_conv_data->crnc_address), crnc_address);
p_conv_data->crnc_port = crnc_port;
p_conv_data->dch_id = ch_id;
p_conv_data->fp_info_ul = fp_info_ul;
p_conv_data->fp_info_dl = fp_info_dl;
conversation_add_proto_data(conversation, proto_fp, p_conv_data);
}
/*
* Update the conversation data.
*/
}
@ -3144,6 +3123,75 @@ static gboolean heur_dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
return TRUE;
}
static fp_info*
fp_set_per_packet_inf_from_conv(umts_fp_conversation_info_t *p_conv_data, tvbuff_t *tvb, packet_info *pinfo)
{
fp_info *fpi;
guint8 oct, tfi;
int offset = 0, i;
fpi = ep_alloc0(sizeof(fp_info));
fpi->iface_type = p_conv_data->iface_type;
fpi->division = p_conv_data->division;
fpi->release = 7; /* Set values greater then the checks performed */
fpi->release_year = 2006;
fpi->release_month = 12;
fpi->channel = p_conv_data->channel;
fpi->dch_crc_present = p_conv_data->dch_crc_present;
/*fpi->paging_indications;*/
fpi->num_chans = p_conv_data->num_dch_in_flow;
if(pinfo->link_dir==P2P_DIR_UL){
fpi->is_uplink = TRUE;
}else{
fpi->is_uplink = FALSE;
}
/* Peek at the packet as the per packet info seems not to take the tfi into account */
oct = tvb_get_guint8(tvb,offset);
if((oct&0x01) == 1){
/* control frame, we're done */
return fpi;
}
/* Set offset to point to first TFI
* the Number of TFI's = number of DCH's in the flow
*/
offset = 2;
for(i=0;i<fpi->num_chans;i++){
tfi = tvb_get_guint8(tvb,offset);
if(pinfo->link_dir==P2P_DIR_UL){
fpi->chan_tf_size[i] = p_conv_data->fp_dch_chanel_info[i].ul_chan_tf_size[tfi];
fpi->chan_num_tbs[i] = p_conv_data->fp_dch_chanel_info[i].ul_chan_num_tbs[tfi];
}else{
fpi->chan_tf_size[i] = p_conv_data->fp_dch_chanel_info[i].dl_chan_tf_size[tfi];
fpi->chan_num_tbs[i] = p_conv_data->fp_dch_chanel_info[i].dl_chan_num_tbs[tfi];
}
offset++;
}
#if 0
/* remaining data to be set */
no_ddi_entries;
edch_ddi[MAX_EDCH_DDIS];
edch_macd_pdu_size[MAX_EDCH_DDIS];
edch_type; /* 1 means T2 */
cur_tb; /* current transport block (required for dissecting of single TBs */
cur_chan; /* current channel, required to retrieve the correct channel configuration for UMTS MAC */
srcport
destport
enum fp_hsdsch_entity hsdsch_entity;
enum fp_link_type link_type;
#endif
return fpi;
}
/*****************************/
/* Main dissection function. */
@ -3154,7 +3202,7 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gint offset = 0;
struct fp_info *p_fp_info;
conversation_t *p_conv = NULL;
struct _umts_fp_conversation_info *p_conv_data = NULL;
umts_fp_conversation_info_t *p_conv_data = NULL;
/* Append this protocol name rather than replace. */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "FP");
@ -3182,7 +3230,7 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* CRNC -> Node B */
pinfo->link_dir=P2P_DIR_UL;
if (p_fp_info == NULL){
p_fp_info = p_conv_data->fp_info_ul;
p_fp_info = fp_set_per_packet_inf_from_conv(p_conv_data, tvb, pinfo);
}
}else{
proto_item* item = proto_tree_add_uint(fp_tree, hf_fp_ul_setup_frame,
@ -3190,7 +3238,7 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
PROTO_ITEM_SET_GENERATED(item);
pinfo->link_dir=P2P_DIR_DL;
if (p_fp_info == NULL){
p_fp_info = p_conv_data->fp_info_dl;
p_fp_info = fp_set_per_packet_inf_from_conv(p_conv_data, tvb, pinfo);
}
}
}
@ -3233,8 +3281,13 @@ void dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
val_to_str_const(p_fp_info->channel,
channel_type_vals,
"Unknown channel type"));
if (p_conv && (p_conv_data->dch_id != 0xffffffff)) {
col_append_fstr(pinfo->cinfo, COL_INFO, "(%u) ",p_conv_data->dch_id);
if (p_conv) {
int i;
col_append_fstr(pinfo->cinfo, COL_INFO, "(%u",p_conv_data->dchs_in_flow_list[0]);
for (i=1; i < p_conv_data->num_dch_in_flow; i++){
col_append_fstr(pinfo->cinfo, COL_INFO, ",%u",p_conv_data->dchs_in_flow_list[i]);
}
col_append_fstr(pinfo->cinfo, COL_INFO, ") ");
}
proto_item_append_text(ti, " (%s)",
val_to_str_const(p_fp_info->channel,

View File

@ -82,7 +82,7 @@ typedef struct fp_info
guint16 release_year; /* e.g. 2001 */
guint8 release_month; /* e.g. 12 for December */
gboolean is_uplink;
gint channel; /* see definitions above */
gint channel; /* see Channel types definitions above */
guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
gint paging_indications;
gint num_chans;
@ -105,15 +105,38 @@ typedef struct fp_info
enum fp_link_type link_type;
}fp_info;
struct _umts_fp_conversation_info
/* From NBAC-Constants.asn */
#define FP_maxNrOfTFs 32
typedef struct
{
guint32 dl_frame_number; /* the frame where this conversation is started from CRNC */
guint32 ul_frame_number; /* the frame where this conversation is started from Node B */
gint num_ul_chans;
gint ul_chan_tf_size[MAX_FP_CHANS];
gint ul_chan_num_tbs[MAX_FP_CHANS];
gint num_dl_chans;
gint dl_chan_tf_size[MAX_FP_CHANS];
gint dl_chan_num_tbs[MAX_FP_CHANS];
}fp_dch_chanel_info_t;
typedef struct
{
enum fp_interface_type iface_type;
enum division_type division;
gint channel; /* see Channel types definitions above */
guint32 dl_frame_number; /* the frame where this conversation is started from CRNC */
guint32 ul_frame_number; /* the frame where this conversation is started from Node B */
address crnc_address;
guint16 crnc_port;
guint32 dch_id;
fp_info* fp_info_dl;
fp_info* fp_info_ul;
};
/* DCH's in this flow */
gint num_dch_in_flow;
gint dchs_in_flow_list[FP_maxNrOfTFs];
void set_umts_fp_ul_conv_data(conversation_t *conversation, guint32 ul_frame_number, address *crnc_address, guint16 crnc_port,guint32 ch_id, fp_info *fp_info_ul, fp_info *fp_info_dl);
guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
fp_dch_chanel_info_t fp_dch_chanel_info[FP_maxNrOfTFs];
}umts_fp_conversation_info_t;
void set_umts_fp_conv_data(conversation_t *conversation, umts_fp_conversation_info_t *umts_fp_conversation_info);