aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-nbap.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-05-09 14:24:46 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-05-09 14:24:46 +0000
commit582c102f16fb0aa1bfc38b00eeee3d22896923ba (patch)
treed335430f93bb686380fd8ee2c55ee7143d7122e6 /epan/dissectors/packet-nbap.c
parent9141a4fbcb959d7bc6f4c4d7acced92cf7822252 (diff)
Setup more flows, flow info is incomplete.
svn path=/trunk/; revision=42521
Diffstat (limited to 'epan/dissectors/packet-nbap.c')
-rw-r--r--epan/dissectors/packet-nbap.c125
1 files changed, 119 insertions, 6 deletions
diff --git a/epan/dissectors/packet-nbap.c b/epan/dissectors/packet-nbap.c
index 90c00d82f3..3ffd846bd0 100644
--- a/epan/dissectors/packet-nbap.c
+++ b/epan/dissectors/packet-nbap.c
@@ -6476,7 +6476,7 @@ static guint32 ProcedureCode;
static guint32 ProtocolIE_ID;
static guint32 ddMode;
static const gchar *ProcedureID;
-static guint32 dch_id, commonphysicalchannelid;
+static guint32 dch_id, commonphysicalchannelid, e_dch_macdflow_id, hsdsch_macdflow_id;
/* Dissector tables */
static dissector_table_t nbap_ies_dissector_table;
@@ -8469,8 +8469,12 @@ 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"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, maxNrOfEDCHMACdFlows_1, NULL, FALSE);
+ 0U, maxNrOfEDCHMACdFlows_1, &e_dch_macdflow_id, FALSE);
+
+
+
return offset;
}
@@ -8479,7 +8483,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 501 "../../asn1/nbap/nbap.cnf"
+#line 507 "../../asn1/nbap/nbap.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -22576,8 +22580,12 @@ 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"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
- 0U, maxNrOfMACdFlows_1, NULL, FALSE);
+ 0U, maxNrOfMACdFlows_1, &hsdsch_macdflow_id, FALSE);
+
+
+
return offset;
}
@@ -22594,9 +22602,61 @@ 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"
+
+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;
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_HSDSCH_MACdFlow_Specific_InfoItem, HSDSCH_MACdFlow_Specific_InfoItem_sequence);
+
+ if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0)
+ {
+ return offset;
+ }
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+
+ dst_addr.type=AT_IPv4;
+ dst_addr.len=4;
+ dst_addr.data=(guint8 *)&transportLayerAddress_ipv4;
+
+ conversation = find_conversation(actx->pinfo->fd->num,&dst_addr,
+ &null_addr, PT_UDP, BindingID_port,
+ 0, NO_ADDR_B|NO_PORT_B);
+
+ if (conversation == NULL) {
+ /* It's not part of any conversation - create a new one. */
+ conversation = conversation_new(actx->pinfo->fd->num, &dst_addr,
+ &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_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);
+ }
+
+
+
return offset;
}
@@ -27315,7 +27375,7 @@ 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 577 "../../asn1/nbap/nbap.cnf"
+#line 583 "../../asn1/nbap/nbap.cnf"
address dst_addr, null_addr;
conversation_t *conversation;
fp_info *nbap_fp_info_ul = NULL, *nbap_fp_info_dl = NULL;
@@ -27378,6 +27438,7 @@ dch_id = 0xFFFFFFFF;
+
return offset;
}
@@ -27406,9 +27467,61 @@ 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"
+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;
+
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_nbap_RL_Specific_E_DCH_Information_Item, RL_Specific_E_DCH_Information_Item_sequence);
+
+ if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0)
+ {
+ return offset;
+ }
+ SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
+
+ dst_addr.type=AT_IPv4;
+ dst_addr.len=4;
+ dst_addr.data=(guint8 *)&transportLayerAddress_ipv4;
+
+ conversation = find_conversation(actx->pinfo->fd->num,&dst_addr,
+ &null_addr, PT_UDP, BindingID_port,
+ 0, NO_ADDR_B|NO_PORT_B);
+
+ if (conversation == NULL) {
+ /* It's not part of any conversation - create a new one. */
+ conversation = conversation_new(actx->pinfo->fd->num, &dst_addr,
+ &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);
+ }
+
+
+
+
return offset;
}
@@ -30944,7 +31057,7 @@ 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 516 "../../asn1/nbap/nbap.cnf"
+#line 522 "../../asn1/nbap/nbap.cnf"
address dst_addr, null_addr;
conversation_t *conversation;
fp_info *nbap_fp_info_ul = NULL, *nbap_fp_info_dl = NULL;