diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-05-09 14:24:46 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-05-09 14:24:46 +0000 |
commit | 582c102f16fb0aa1bfc38b00eeee3d22896923ba (patch) | |
tree | d335430f93bb686380fd8ee2c55ee7143d7122e6 /epan/dissectors/packet-nbap.c | |
parent | 9141a4fbcb959d7bc6f4c4d7acced92cf7822252 (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.c | 125 |
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; |