diff options
author | Darien Spencer <cusneud@mail.com> | 2017-08-01 21:53:06 +0300 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2017-08-29 03:51:16 +0000 |
commit | 1f9990b7657332daad0680107d5230e18437f1da (patch) | |
tree | affe050aa3700640a4c752b251c69f54a898ec61 /epan/dissectors/packet-nbap.c | |
parent | f8d0a7f003c2916f08092da01c737294f1944eb8 (diff) |
NBAP: Refactor information storing per-packet
Migrating from static variables to a single struct for
information 'carried' between different field in a NBAP packet.
Bug: 13879
Bug: 13712
Change-Id: Ie35619d64c4b9a3d5459d528788f74f952e75c11
Reviewed-on: https://code.wireshark.org/review/22902
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-nbap.c')
-rw-r--r-- | epan/dissectors/packet-nbap.c | 1588 |
1 files changed, 1094 insertions, 494 deletions
diff --git a/epan/dissectors/packet-nbap.c b/epan/dissectors/packet-nbap.c index 01c369429c..7812f01fe3 100644 --- a/epan/dissectors/packet-nbap.c +++ b/epan/dissectors/packet-nbap.c @@ -39,6 +39,7 @@ #include <epan/conversation.h> #include <epan/expert.h> #include <epan/prefs.h> +#include <epan/proto_data.h> #include <epan/uat.h> #include <wsutil/ws_printf.h> /* ws_g_warning */ @@ -1536,7 +1537,7 @@ typedef enum _ProtocolIE_ID_enum { } ProtocolIE_ID_enum; /*--- End of included file: packet-nbap-val.h ---*/ -#line 74 "./asn1/nbap/packet-nbap-template.c" +#line 75 "./asn1/nbap/packet-nbap-template.c" /* Initialize the protocol and registered fields */ static int proto_nbap = -1; @@ -4840,7 +4841,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 82 "./asn1/nbap/packet-nbap-template.c" +#line 83 "./asn1/nbap/packet-nbap-template.c" /* Initialize the subtree pointers */ static int ett_nbap = -1; @@ -6479,7 +6480,7 @@ static gint ett_nbap_UnsuccessfulOutcome = -1; static gint ett_nbap_Outcome = -1; /*--- End of included file: packet-nbap-ett.c ---*/ -#line 90 "./asn1/nbap/packet-nbap-template.c" +#line 91 "./asn1/nbap/packet-nbap-template.c" static expert_field ei_nbap_no_find_comm_context_id = EI_INIT; static expert_field ei_nbap_no_find_port_info = EI_INIT; @@ -6514,18 +6515,6 @@ typedef struct nbap_setup_conv */ static wmem_map_t *nbap_setup_conv_table; -/* - * Structure to build information needed to dissect the FP flow beeing set up. - */ -struct _nbap_msg_info_for_fp -{ - guint32 ProcedureCode; - guint32 ddMode; - gboolean is_uplink; - gint channel; /* see definitions in packet-umts_fp.h Channel types */ - guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */ -}; - typedef struct { gint num_dch_in_flow; @@ -6593,48 +6582,495 @@ enum TransportFormatSet_type_enum NBAP_PCH }; + +/*****************************************************************************/ +/* Packet private data */ +/* For this dissector, all information passed between different ASN.1 nodes */ +/* should be done only through this API! */ +/*****************************************************************************/ + + +typedef struct nbap_private_data_t +{ + guint32 transportLayerAddress_ipv4; + guint16 binding_id_port; + enum TransportFormatSet_type_enum transport_format_set_type; + guint32 procedure_code; + guint num_items; + guint32 ul_scrambling_code; + guint32 com_context_id; + gint num_dch_in_flow; + gint hrnti; + guint node_b_com_context_id; + guint32 protocol_ie_id; + guint32 dd_mode; + guint32 transaction_id; + guint32 t_dch_id; + guint32 dch_id; + guint32 prev_dch_id; + guint32 common_physical_channel_id; + guint32 e_dch_macdflow_id; + guint32 hsdsch_macdflow_id; + guint32 e_dch_ddi_value; + guint32 logical_channel_id; + guint32 common_macdflow_id; + guint32 mac_d_pdu_size; + guint32 common_transport_channel_id; + gint paging_indications; + guint32 ib_type; + guint32 segment_type; + gboolean crnc_context_present; /* Whether 'com_context_id' is set */ + guint8 dch_crc_present; + /* Arrays */ + nbap_dch_channel_info_t nbap_dch_chnl_info[256]; + nbap_edch_channel_info_t nbap_edch_channel_info[maxNrOfEDCHMACdFlows]; + gint hsdsch_macdflow_ids[maxNrOfMACdFlows]; + nbap_hsdsch_channel_info_t nbap_hsdsch_channel_info[maxNrOfMACdFlows]; + nbap_common_channel_info_t nbap_common_channel_info[maxNrOfMACdFlows]; /*TODO: Fix this!*/ +} nbap_private_data_t; + + +/* Helper function to get or create a private_data struct */ +static nbap_private_data_t* nbap_get_private_data(packet_info *pinfo) +{ + guint8 i; + /* NOTE: Unlike other ASN.1 dissectors which store information in + * actx->private_data the NBAP dissector can't do so because some fields + * are defined as their own 'PDU' (Like BindingID and TransportLayerAddress) + * in those cases, the generic ASN.1 dissector creates a NEW 'ASN.1 context' + * (asn1_ctx_t) and hence a new 'private data' field for them so information + * can't be passes to/from them. + */ + nbap_private_data_t *private_data = (nbap_private_data_t *)p_get_proto_data(pinfo->pool, pinfo, proto_nbap, 0); + if(private_data != NULL ) { + return private_data; + } + else { + private_data = wmem_new0(pinfo->pool, nbap_private_data_t); + p_add_proto_data(pinfo->pool, pinfo, proto_nbap, 0, private_data); + /* Setting default values */ + private_data->hsdsch_macdflow_id = 3; + private_data->crnc_context_present = FALSE; + private_data->procedure_code = 0xFFFF; + private_data->dd_mode = 0xFFFF; + private_data->dch_crc_present = 2; /* Unknown */ + for (i = 0; i < maxNrOfMACdFlows; i++) { + private_data->nbap_hsdsch_channel_info[i].entity = hs; + } + return private_data; + } +} + +/* Helper function to reset the private data struct*/ +static void nbap_reset_private_data(packet_info *pinfo) +{ + p_remove_proto_data(pinfo->pool, pinfo, proto_nbap, 0); +} + +static guint32 private_data_get_transportLayerAddress_ipv4(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->transportLayerAddress_ipv4; +} + +static void private_data_set_transportLayerAddress_ipv4(packet_info *pinfo, guint32 transportLayerAddress_ipv4) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->transportLayerAddress_ipv4 = transportLayerAddress_ipv4; +} + +static guint16 private_data_get_binding_id_port(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->binding_id_port; +} + +static void private_data_set_binding_id_port(packet_info *pinfo, guint16 binding_id_port) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->binding_id_port = binding_id_port; +} + +static guint32 private_data_get_ul_scrambling_code(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->ul_scrambling_code; +} + +static void private_data_set_ul_scrambling_code(packet_info *pinfo, guint32 ul_scrambling_code) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->ul_scrambling_code = ul_scrambling_code; +} + +static enum TransportFormatSet_type_enum private_data_get_transport_format_set_type(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->transport_format_set_type; +} + +static void private_data_set_transport_format_set_type(packet_info *pinfo, enum TransportFormatSet_type_enum transport_format_set_type) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->transport_format_set_type = transport_format_set_type; +} + +static guint32 private_data_get_procedure_code(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->procedure_code; +} + +static void private_data_set_procedure_code(packet_info *pinfo, guint32 procedure_code) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->procedure_code = procedure_code; +} + +static guint private_data_get_num_items(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->num_items; +} + +static void private_data_set_num_items(packet_info *pinfo, guint num_items) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->num_items = num_items; +} + +static guint private_data_increment_num_items(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->num_items++; + return private_data->num_items; +} + +static guint32 private_data_get_com_context_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->com_context_id; +} + +static void private_data_set_com_context_id(packet_info *pinfo, guint32 com_context_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->com_context_id = com_context_id; +} + +static gint private_data_get_num_dch_in_flow(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->num_dch_in_flow; +} + +static void private_data_set_num_dch_in_flow(packet_info *pinfo, gint num_dch_in_flow) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->num_dch_in_flow = num_dch_in_flow; +} + +static gint private_data_increment_num_dch_in_flow(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->num_dch_in_flow++; + return private_data->num_dch_in_flow; +} + +static gint private_data_get_hrnti(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->hrnti; +} + +static void private_data_set_hrnti(packet_info *pinfo, gint hrnti) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->hrnti = hrnti; +} + +static guint private_data_get_node_b_com_context_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->node_b_com_context_id; +} + +static void private_data_set_node_b_com_context_id(packet_info *pinfo, guint node_b_com_context_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->node_b_com_context_id = node_b_com_context_id; +} + +static guint32 private_data_get_protocol_ie_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->protocol_ie_id; +} + +static void private_data_set_protocol_ie_id(packet_info *pinfo, guint32 protocol_ie_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->protocol_ie_id = protocol_ie_id; +} + +static guint32 private_data_get_dd_mode(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->dd_mode; +} + +static void private_data_set_dd_mode(packet_info *pinfo, guint32 dd_mode) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->dd_mode = dd_mode; +} + +static guint32 private_data_get_transaction_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->transaction_id; +} + +static void private_data_set_transaction_id(packet_info *pinfo, guint32 transaction_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->transaction_id = transaction_id; +} + +static guint32 private_data_get_t_dch_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->t_dch_id; +} + +static void private_data_set_t_dch_id(packet_info *pinfo, guint32 t_dch_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->t_dch_id = t_dch_id; +} + +static guint32 private_data_get_dch_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->dch_id; +} + +static void private_data_set_dch_id(packet_info *pinfo, guint32 dch_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->dch_id = dch_id; +} + +static guint32 private_data_get_prev_dch_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->prev_dch_id; +} + +static void private_data_set_prev_dch_id(packet_info *pinfo, guint32 prev_dch_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->prev_dch_id = prev_dch_id; +} + +static guint32 private_data_get_common_physical_channel_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->common_physical_channel_id; +} + +static void private_data_set_common_physical_channel_id(packet_info *pinfo, guint32 common_physical_channel_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->common_physical_channel_id = common_physical_channel_id; +} + +static guint32 private_data_get_e_dch_macdflow_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->e_dch_macdflow_id; +} + +static void private_data_set_e_dch_macdflow_id(packet_info *pinfo, guint32 e_dch_macdflow_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->e_dch_macdflow_id = e_dch_macdflow_id; +} + +static guint32 private_data_get_hsdsch_macdflow_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->hsdsch_macdflow_id; +} + +static void private_data_set_hsdsch_macdflow_id(packet_info *pinfo, guint32 hsdsch_macdflow_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->hsdsch_macdflow_id = hsdsch_macdflow_id; +} + +static guint32 private_data_get_e_dch_ddi_value(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->e_dch_ddi_value; +} + +static void private_data_set_e_dch_ddi_value(packet_info *pinfo, guint32 e_dch_ddi_value) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->e_dch_ddi_value = e_dch_ddi_value; +} + +static guint32 private_data_get_logical_channel_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->logical_channel_id; +} + +static void private_data_set_logical_channel_id(packet_info *pinfo, guint32 logical_channel_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->logical_channel_id = logical_channel_id; +} + +static guint32 private_data_get_common_macdflow_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->common_macdflow_id; +} + +static void private_data_set_common_macdflow_id(packet_info *pinfo, guint32 common_macdflow_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->common_macdflow_id = common_macdflow_id; +} + +static guint32 private_data_get_mac_d_pdu_size(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->mac_d_pdu_size; +} + +static void private_data_set_mac_d_pdu_size(packet_info *pinfo, guint32 mac_d_pdu_size) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->mac_d_pdu_size = mac_d_pdu_size; +} + +static guint32 private_data_get_common_transport_channel_id(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->common_transport_channel_id; +} + +static void private_data_set_common_transport_channel_id(packet_info *pinfo, guint32 common_transport_channel_id) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->common_transport_channel_id = common_transport_channel_id; +} + +static gint private_data_get_paging_indications(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->paging_indications; +} + +static void private_data_set_paging_indications(packet_info *pinfo, gint paging_indications) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->paging_indications = paging_indications; +} + +static guint32 private_data_get_ib_type(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->ib_type; +} + +static void private_data_set_ib_type(packet_info *pinfo, guint32 ib_type) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->ib_type = ib_type; +} + +static guint32 private_data_get_segment_type(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->segment_type; +} + +static void private_data_set_segment_type(packet_info *pinfo, guint32 segment_type) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->segment_type = segment_type; +} + +static gboolean private_data_get_crnc_context_present(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->crnc_context_present; +} + +static void private_data_set_crnc_context_present(packet_info *pinfo, gboolean crnc_context_present) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->crnc_context_present = crnc_context_present; +} + +static guint8 private_data_get_dch_crc_present(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->dch_crc_present; +} + +static void private_data_set_dch_crc_present(packet_info *pinfo, guint8 dch_crc_present) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + private_data->dch_crc_present = dch_crc_present; +} + +static nbap_dch_channel_info_t* private_data_get_nbap_dch_chnl_info(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->nbap_dch_chnl_info; +} + +static nbap_edch_channel_info_t* private_data_get_nbap_edch_channel_info(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->nbap_edch_channel_info; +} + +static gint* private_data_get_hsdsch_macdflow_ids(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->hsdsch_macdflow_ids; +} + +static nbap_hsdsch_channel_info_t* private_data_get_nbap_hsdsch_channel_info(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->nbap_hsdsch_channel_info; +} + +static nbap_common_channel_info_t* private_data_get_nbap_common_channel_info(packet_info *pinfo) +{ + nbap_private_data_t *private_data = (nbap_private_data_t*)nbap_get_private_data(pinfo); + return private_data->nbap_common_channel_info; +} + +/*****************************************************************************/ + + /* Global Variables */ -static guint32 transportLayerAddress_ipv4; -static guint16 BindingID_port; -static guint32 ul_scrambling_code; -static guint32 com_context_id; -static int cfn; -gint g_num_dch_in_flow; -gint g_dch_ids_in_flow_list[maxNrOfTFs]; -gint hsdsch_macdflow_ids[maxNrOfMACdFlows]; -gint hrnti; -guint node_b_com_context_id; + +/* Variables for sub elements dissection */ +static const gchar *ProcedureID; +/* Trees */ static wmem_tree_t* edch_flow_port_map = NULL; -static guint32 ProcedureCode; -static guint32 ProtocolIE_ID; -static guint32 ddMode; -static const gchar *ProcedureID; -static guint32 TransactionID; -static guint32 t_dch_id; -static guint32 dch_id; -static guint32 prev_dch_id; -static guint32 commonphysicalchannelid; -static guint32 e_dch_macdflow_id; -static guint32 hsdsch_macdflow_id=3; -static guint32 e_dch_ddi_value; -static guint32 logical_channel_id; -static guint32 common_macdflow_id; -static guint32 MACdPDU_Size; -static guint32 commontransportchannelid; -static guint num_items; -static gint paging_indications; -static guint32 ib_type; -static guint32 segment_type; wmem_tree_t *nbap_scrambling_code_crncc_map = NULL; wmem_tree_t *nbap_crncc_urnti_map = NULL; -enum TransportFormatSet_type_enum transportFormatSet_type; -gboolean crcn_context_present = FALSE; static wmem_tree_t* com_context_map; -nbap_dch_channel_info_t nbap_dch_chnl_info[256]; -nbap_edch_channel_info_t nbap_edch_channel_info[maxNrOfEDCHMACdFlows]; -nbap_hsdsch_channel_info_t nbap_hsdsch_channel_info[maxNrOfMACdFlows]; -nbap_common_channel_info_t nbap_common_channel_info[maxNrOfMACdFlows]; /*TODO: Fix this!*/ -struct _nbap_msg_info_for_fp g_nbap_msg_info_for_fp; /* This table is used externally from FP, MAC and such, TODO: merge this with * lch_contents[] */ @@ -6895,14 +7331,18 @@ static const value_string nbap_ProcedureCode_vals[] = { static int dissect_nbap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 94 "./asn1/nbap/nbap.cnf" + guint32 procedure_code; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 255U, &ProcedureCode, FALSE); + 0U, 255U, &procedure_code, FALSE); -#line 93 "./asn1/nbap/nbap.cnf" - col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ", - val_to_str(ProcedureCode, nbap_ProcedureCode_vals, + private_data_set_procedure_code(actx->pinfo, procedure_code); + col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ", + val_to_str(procedure_code, nbap_ProcedureCode_vals, "unknown message")); + + return offset; } @@ -6917,8 +7357,15 @@ static const value_string nbap_DdMode_vals[] = { static int dissect_nbap_DdMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 102 "./asn1/nbap/nbap.cnf" + guint32 dd_mode; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 3, &ddMode, TRUE, 0, NULL); + 3, &dd_mode, TRUE, 0, NULL); + + private_data_set_dd_mode(actx->pinfo, dd_mode); + + + return offset; } @@ -6932,19 +7379,17 @@ static const per_sequence_t ProcedureID_sequence[] = { static int dissect_nbap_ProcedureID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 100 "./asn1/nbap/nbap.cnf" - ProcedureCode = 0xFFFF; - ddMode = 0xFFFF; +#line 108 "./asn1/nbap/nbap.cnf" ProcedureID = NULL; - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_ProcedureID, ProcedureID_sequence); -#line 106 "./asn1/nbap/nbap.cnf" ProcedureID = wmem_strdup_printf(wmem_packet_scope(), "%s/%s", - val_to_str(ProcedureCode, VALS(nbap_ProcedureCode_vals), "unknown(%u)"), - val_to_str(ddMode, VALS(nbap_DdMode_vals), "unknown(%u)")); - crcn_context_present = FALSE; /*Reset CRNC Com context present flag.*/ + val_to_str(private_data_get_procedure_code(actx->pinfo), VALS(nbap_ProcedureCode_vals), "unknown(%u)"), + val_to_str(private_data_get_dd_mode(actx->pinfo), VALS(nbap_DdMode_vals), "unknown(%u)")); + private_data_set_crnc_context_present(actx->pinfo, FALSE); /*Reset CRNC Com context present flag.*/ + + return offset; } @@ -8182,14 +8627,17 @@ static value_string_ext nbap_ProtocolIE_ID_vals_ext = VALUE_STRING_EXT_INIT(nbap static int dissect_nbap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 81 "./asn1/nbap/nbap.cnf" + guint32 protocol_ie_id; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, maxProtocolIEs, &ProtocolIE_ID, FALSE); + 0U, maxProtocolIEs, &protocol_ie_id, FALSE); -#line 82 "./asn1/nbap/nbap.cnf" + private_data_set_protocol_ie_id(actx->pinfo, protocol_ie_id); /* To carry around the packet */ if (tree) { - proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(ProtocolIE_ID, &nbap_ProtocolIE_ID_vals_ext, "unknown (%d)")); + proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(protocol_ie_id, &nbap_ProtocolIE_ID_vals_ext, "unknown (%d)")); } + return offset; } @@ -8197,8 +8645,14 @@ dissect_nbap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ static int dissect_nbap_T_shortTransActionId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 116 "./asn1/nbap/nbap.cnf" + guint32 transaction_id; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 127U, &TransactionID, FALSE); + 0U, 127U, &transaction_id, FALSE); + + private_data_set_transaction_id(actx->pinfo, transaction_id); + + return offset; } @@ -8207,8 +8661,14 @@ dissect_nbap_T_shortTransActionId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_nbap_T_longTransActionId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 121 "./asn1/nbap/nbap.cnf" + guint32 transaction_id; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 32767U, &TransactionID, FALSE); + 0U, 32767U, &transaction_id, FALSE); + + private_data_set_transaction_id(actx->pinfo, transaction_id); + + return offset; } @@ -8474,10 +8934,14 @@ dissect_nbap_Multicell_EDCH_Transport_Bearer_Mode(tvbuff_t *tvb _U_, int offset static int dissect_nbap_UL_ScramblingCodeNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 784 "./asn1/nbap/nbap.cnf" +#line 802 "./asn1/nbap/nbap.cnf" + guint32 ul_scrambling_code; + guint32 com_context_id; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 16777215U, &ul_scrambling_code, FALSE); + private_data_set_ul_scrambling_code(actx->pinfo, ul_scrambling_code); + com_context_id = private_data_get_com_context_id(actx->pinfo); if(ul_scrambling_code != 0 && com_context_id != 0) { wmem_tree_insert32(nbap_scrambling_code_crncc_map,ul_scrambling_code,GUINT_TO_POINTER(com_context_id)); } @@ -8740,12 +9204,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 755 "./asn1/nbap/nbap.cnf" - +#line 767 "./asn1/nbap/nbap.cnf" + guint32 e_dch_macdflow_id; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, maxNrOfEDCHMACdFlows_1, &e_dch_macdflow_id, FALSE); - + private_data_set_e_dch_macdflow_id(actx->pinfo, e_dch_macdflow_id); @@ -8756,7 +9220,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 768 "./asn1/nbap/nbap.cnf" +#line 786 "./asn1/nbap/nbap.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -8767,8 +9231,8 @@ dissect_nbap_BindingID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, return offset; if(tvb_reported_length(parameter_tvb)>=2){ - BindingID_port = tvb_get_ntohs(parameter_tvb,0); - proto_item_append_text(actx->created_item, " (%u)",BindingID_port); + private_data_set_binding_id_port(actx->pinfo, tvb_get_ntohs(parameter_tvb,0)); + proto_item_append_text(actx->created_item, " (%u)",private_data_get_binding_id_port(actx->pinfo)); } @@ -8780,7 +9244,7 @@ dissect_nbap_BindingID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int dissect_nbap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 661 "./asn1/nbap/nbap.cnf" +#line 663 "./asn1/nbap/nbap.cnf" tvbuff_t *parameter_tvb=NULL; proto_item *item; proto_tree *subtree, *nsap_tree; @@ -8799,7 +9263,7 @@ dissect_nbap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t if (tvb_len==4){ /* IPv4 */ proto_tree_add_item(subtree, hf_nbap_transportLayerAddress_ipv4, parameter_tvb, 0, tvb_len, ENC_BIG_ENDIAN); - transportLayerAddress_ipv4 = tvb_get_ipv4(parameter_tvb, 0); + private_data_set_transportLayerAddress_ipv4(actx->pinfo, tvb_get_ipv4(parameter_tvb, 0)); } if (tvb_len==16){ /* IPv6 */ @@ -8822,7 +9286,7 @@ dissect_nbap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t nsap_tree = proto_item_add_subtree(item, ett_nbap_TransportLayerAddress_nsap); if(tvb_get_ntoh24(parameter_tvb,0) == 0x350001){ /* IPv4 */ - transportLayerAddress_ipv4 = tvb_get_ipv4(parameter_tvb, 3); + private_data_set_transportLayerAddress_ipv4(actx->pinfo, tvb_get_ipv4(parameter_tvb, 3)); } dissect_nsap(nsap_tvb, 0, 20, nsap_tree); } @@ -10101,12 +10565,8 @@ dissect_nbap_AddorDeleteIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_nbap_CFN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 2246 "./asn1/nbap/nbap.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 255U, &cfn, FALSE); - - - + 0U, 255U, NULL, FALSE); return offset; } @@ -10354,16 +10814,20 @@ dissect_nbap_AvailabilityStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a static int dissect_nbap_HSDSCH_RNTI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 2208 "./asn1/nbap/nbap.cnf" +#line 2347 "./asn1/nbap/nbap.cnf" + gint hrnti; umts_fp_conversation_info_t *umts_fp_conversation_info = NULL; fp_hsdsch_channel_info_t* fp_hsdsch_channel_info = NULL; address null_addr; conversation_t *conversation = NULL; int i; +nbap_hsdsch_channel_info_t* nbap_hsdsch_channel_info; +nbap_hsdsch_channel_info = private_data_get_nbap_hsdsch_channel_info(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 65535U, &hrnti, FALSE); + private_data_set_hrnti(actx->pinfo, hrnti); if (actx->pinfo->fd->flags.visited){ return offset; @@ -10381,7 +10845,7 @@ int i; DISSECTOR_ASSERT(umts_fp_conversation_info != NULL); fp_hsdsch_channel_info = (fp_hsdsch_channel_info_t*)umts_fp_conversation_info->channel_specific_info; DISSECTOR_ASSERT(fp_hsdsch_channel_info != NULL); - fp_hsdsch_channel_info->hrnti = hrnti; + fp_hsdsch_channel_info->hrnti = private_data_get_hrnti(actx->pinfo); } } } @@ -10598,10 +11062,14 @@ dissect_nbap_BundlingModeIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_nbap_CommonTransportChannelID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 750 "./asn1/nbap/nbap.cnf" +#line 758 "./asn1/nbap/nbap.cnf" + guint32 commontransportchannelid; + nbap_dch_channel_info_t* nbap_dch_chnl_info; + nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &commontransportchannelid, FALSE); +private_data_set_common_transport_channel_id(actx->pinfo, commontransportchannelid); if(commontransportchannelid<maxNrOfDCHs) nbap_dch_chnl_info[commontransportchannelid].next_dch = 0; @@ -11409,10 +11877,14 @@ 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 745 "./asn1/nbap/nbap.cnf" +#line 749 "./asn1/nbap/nbap.cnf" +guint32 commonphysicalchannelid; +nbap_dch_channel_info_t* nbap_dch_chnl_info; +nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &commonphysicalchannelid, FALSE); +private_data_set_common_physical_channel_id(actx->pinfo, commonphysicalchannelid); if(commonphysicalchannelid<maxNrOfDCHs) nbap_dch_chnl_info[commonphysicalchannelid].next_dch = 0; @@ -11579,14 +12051,15 @@ dissect_nbap_Common_E_DCH_Resource_Combination_InfoList(tvbuff_t *tvb _U_, int o static int dissect_nbap_Common_MACFlow_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 2065 "./asn1/nbap/nbap.cnf" - +#line 2190 "./asn1/nbap/nbap.cnf" +guint32 common_macdflow_id; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, maxNrOfCommonMACFlows_1, &common_macdflow_id, FALSE); +private_data_set_common_macdflow_id(actx->pinfo, common_macdflow_id); -/*hsdsch_macdflow_ids[num_items-1] = hsdsch_macdflow_id;*/ +/*hsdsch_macdflow_ids[private_data_get_num_items(actx->pinfo)-1] = private_data_get_hsdsch_macdflow_id(actx->pinfo);*/ /*THIS STUFF IST NOT DONE YET!*/ @@ -11661,7 +12134,7 @@ static const value_string nbap_PayloadCRC_PresenceIndicator_vals[] = { static int dissect_nbap_PayloadCRC_PresenceIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 709 "./asn1/nbap/nbap.cnf" +#line 711 "./asn1/nbap/nbap.cnf" guint32 payload_crc_value; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, @@ -11669,9 +12142,9 @@ guint32 payload_crc_value; if(payload_crc_value == 0){ - g_nbap_msg_info_for_fp.dch_crc_present = TRUE; + private_data_set_dch_crc_present(actx->pinfo, TRUE); }else{ - g_nbap_msg_info_for_fp.dch_crc_present = FALSE; + private_data_set_dch_crc_present(actx->pinfo, FALSE); } @@ -11713,14 +12186,20 @@ dissect_nbap_E_DCH_MACdFlow_Multiplexing_List(tvbuff_t *tvb _U_, int offset _U_, static int dissect_nbap_LogicalChannelID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1705 "./asn1/nbap/nbap.cnf" - /* Set logical channel id for this entry*/ +#line 1801 "./asn1/nbap/nbap.cnf" + guint32 logical_channel_id; + guint num_items; + nbap_edch_channel_info_t* nbap_edch_channel_info; + nbap_edch_channel_info = private_data_get_nbap_edch_channel_info(actx->pinfo); + /* Set logical channel id for this entry*/ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 15U, &logical_channel_id, FALSE); + private_data_set_logical_channel_id(actx->pinfo, logical_channel_id); + num_items = private_data_get_num_items(actx->pinfo); if(num_items>0) - nbap_edch_channel_info[e_dch_macdflow_id].lchId[num_items-1] = logical_channel_id; + nbap_edch_channel_info[private_data_get_e_dch_macdflow_id(actx->pinfo)].lchId[num_items-1] = private_data_get_logical_channel_id(actx->pinfo); @@ -11731,10 +12210,14 @@ dissect_nbap_LogicalChannelID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int dissect_nbap_MAC_PDU_SizeExtended(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1807 "./asn1/nbap/nbap.cnf" +#line 1919 "./asn1/nbap/nbap.cnf" +guint32 hsdsch_macdflow_id; +nbap_hsdsch_channel_info_t* nbap_hsdsch_channel_info; +nbap_hsdsch_channel_info = private_data_get_nbap_hsdsch_channel_info(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 1504U, NULL, TRUE); + hsdsch_macdflow_id = private_data_get_hsdsch_macdflow_id(actx->pinfo); if(nbap_hsdsch_channel_info[hsdsch_macdflow_id].crnc_port != 0){ nbap_hsdsch_channel_info[hsdsch_macdflow_id].entity = ehs; } @@ -12154,26 +12637,33 @@ static const per_sequence_t CommonMACFlow_Specific_InfoItem_sequence[] = { static int dissect_nbap_CommonMACFlow_Specific_InfoItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 2072 "./asn1/nbap/nbap.cnf" +#line 2198 "./asn1/nbap/nbap.cnf" address dst_addr; - transportLayerAddress_ipv4 = 0; - BindingID_port = 0; - num_items++; + guint32 transportLayerAddress_ipv4; + guint16 bindingID; + guint32 common_macdflow_id; + private_data_set_transportLayerAddress_ipv4(actx->pinfo, 0); + private_data_set_binding_id_port(actx->pinfo, 0); + private_data_increment_num_items(actx->pinfo); + nbap_common_channel_info_t* nbap_common_channel_info; + nbap_common_channel_info = private_data_get_nbap_common_channel_info(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_CommonMACFlow_Specific_InfoItem, CommonMACFlow_Specific_InfoItem_sequence); - if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0) - { + transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx->pinfo); + bindingID = private_data_get_binding_id_port(actx->pinfo); + if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || bindingID == 0){ return offset; } set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); /* Set address for collection of common entries */ + common_macdflow_id = private_data_get_common_macdflow_id(actx->pinfo); copy_address(&(nbap_common_channel_info[common_macdflow_id].crnc_address),&dst_addr); - nbap_common_channel_info[common_macdflow_id].crnc_port = BindingID_port; + nbap_common_channel_info[common_macdflow_id].crnc_port = private_data_get_binding_id_port(actx->pinfo); @@ -12199,17 +12689,23 @@ dissect_nbap_CommonMACFlow_Specific_InfoList(tvbuff_t *tvb _U_, int offset _U_, static int dissect_nbap_MACdPDU_Size(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1695 "./asn1/nbap/nbap.cnf" +#line 1785 "./asn1/nbap/nbap.cnf" +guint32 mac_d_pdu_size; +guint num_items; +nbap_edch_channel_info_t* nbap_edch_channel_info; +nbap_edch_channel_info = private_data_get_nbap_edch_channel_info(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 1U, 5000U, &MACdPDU_Size, TRUE); + 1U, 5000U, &mac_d_pdu_size, TRUE); + private_data_set_mac_d_pdu_size(actx->pinfo, mac_d_pdu_size); if (actx->pinfo->fd->flags.visited) { return offset; } + num_items = private_data_get_num_items(actx->pinfo); if(num_items>0) - nbap_edch_channel_info[e_dch_macdflow_id].edch_macd_pdu_size[num_items-1] = MACdPDU_Size; + nbap_edch_channel_info[private_data_get_e_dch_macdflow_id(actx->pinfo)].edch_macd_pdu_size[num_items-1] = private_data_get_mac_d_pdu_size(actx->pinfo); @@ -12506,27 +13002,31 @@ static const per_sequence_t CommonTransportChannel_InformationResponse_sequence[ static int dissect_nbap_CommonTransportChannel_InformationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 175 "./asn1/nbap/nbap.cnf" +#line 184 "./asn1/nbap/nbap.cnf" address dst_addr; nbap_setup_conv_t *request_conv; conversation_t *conv; +guint32 transportLayerAddress_ipv4; +guint16 bindingID; nbap_debug("Frame %u CommonTransportChannel-InformationResponse Start", actx->pinfo->num); -transportLayerAddress_ipv4 = 0; -BindingID_port = 0; +private_data_set_transportLayerAddress_ipv4(actx->pinfo, 0); +private_data_set_binding_id_port(actx->pinfo, 0); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_CommonTransportChannel_InformationResponse, CommonTransportChannel_InformationResponse_sequence); - if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0){ + transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx->pinfo); + bindingID = private_data_get_binding_id_port(actx->pinfo); + if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || bindingID == 0){ return offset; } set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); - request_conv = find_setup_conv(TransactionID, ddMode, commontransportchannelid); + request_conv = find_setup_conv(private_data_get_transaction_id(actx->pinfo),private_data_get_dd_mode(actx->pinfo),private_data_get_common_transport_channel_id(actx->pinfo)); if(request_conv == NULL){ return offset; @@ -12534,7 +13034,7 @@ BindingID_port = 0; conv = request_conv->conv; conversation_set_addr2(conv, &dst_addr); - conversation_set_port2(conv, BindingID_port); + conversation_set_port2(conv, bindingID); delete_setup_conv(request_conv); nbap_debug(" Frame %u conversation setup frame: %u %s:%u -> %s:%u", actx->pinfo->num, conv->setup_frame, @@ -13457,11 +13957,13 @@ dissect_nbap_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ static int dissect_nbap_CRNC_CommunicationContextID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 2182 "./asn1/nbap/nbap.cnf" +#line 2317 "./asn1/nbap/nbap.cnf" +guint32 com_context_id; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 1048575U, &com_context_id, FALSE); -crcn_context_present = TRUE; +private_data_set_com_context_id(actx->pinfo, com_context_id); +private_data_set_crnc_context_present(actx->pinfo, TRUE); @@ -14842,9 +15344,15 @@ 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 722 "./asn1/nbap/nbap.cnf" + guint32 t_dch_id; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &t_dch_id, FALSE); + private_data_set_t_dch_id(actx->pinfo, t_dch_id); + + + return offset; } @@ -14889,17 +15397,21 @@ dissect_nbap_ToAWE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot static int 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 727 "./asn1/nbap/nbap.cnf" - + guint32 dch_id; + gint num_dch_in_flow; + nbap_dch_channel_info_t* nbap_dch_chnl_info; + nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &dch_id, FALSE); - if(g_num_dch_in_flow>0){ - g_dch_ids_in_flow_list[g_num_dch_in_flow-1]=dch_id; - nbap_dch_chnl_info[dch_id].next_dch = 0; - if(prev_dch_id != 0){ - nbap_dch_chnl_info[prev_dch_id].next_dch = dch_id; - } - } + num_dch_in_flow = private_data_get_num_dch_in_flow(actx->pinfo); + private_data_set_dch_id(actx->pinfo, dch_id); + if(num_dch_in_flow>0){ + nbap_dch_chnl_info[dch_id].next_dch = 0; + if(private_data_get_prev_dch_id(actx->pinfo) != 0){ + nbap_dch_chnl_info[private_data_get_prev_dch_id(actx->pinfo)].next_dch = dch_id; + } + } @@ -14910,15 +15422,25 @@ dissect_nbap_T_dCH_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p 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 1116 "./asn1/nbap/nbap.cnf" +#line 1171 "./asn1/nbap/nbap.cnf" guint32 NrOfTransportBlocks; +guint num_items; +guint32 dch_id; +guint32 common_physical_channel_id; +guint32 common_transport_channel_id; +nbap_dch_channel_info_t* nbap_dch_chnl_info; +nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 512U, &NrOfTransportBlocks, FALSE); - if(num_items>0){ - switch(transportFormatSet_type){ + if(private_data_get_num_items(actx->pinfo)>0){ + num_items = private_data_get_num_items(actx->pinfo); + dch_id = private_data_get_dch_id(actx->pinfo); + common_physical_channel_id = private_data_get_common_physical_channel_id(actx->pinfo); + common_transport_channel_id = private_data_get_common_transport_channel_id(actx->pinfo); + switch(private_data_get_transport_format_set_type(actx->pinfo)){ case NBAP_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; @@ -14928,16 +15450,16 @@ guint32 NrOfTransportBlocks; nbap_dch_chnl_info[dch_id].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks; break; case NBAP_CPCH: - nbap_dch_chnl_info[commonphysicalchannelid].num_ul_chans++; - nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks; - nbap_dch_chnl_info[commonphysicalchannelid].num_dl_chans++; - nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks; + nbap_dch_chnl_info[common_physical_channel_id].num_ul_chans++; + nbap_dch_chnl_info[common_physical_channel_id].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks; + nbap_dch_chnl_info[common_physical_channel_id].num_dl_chans++; + nbap_dch_chnl_info[common_physical_channel_id].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks; break; case NBAP_PCH: - nbap_dch_chnl_info[commontransportchannelid].num_ul_chans++; - nbap_dch_chnl_info[commontransportchannelid].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks; - nbap_dch_chnl_info[commontransportchannelid].num_dl_chans++; - nbap_dch_chnl_info[commontransportchannelid].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks; + nbap_dch_chnl_info[common_transport_channel_id].num_ul_chans++; + nbap_dch_chnl_info[common_transport_channel_id].ul_chan_num_tbs[num_items-1] = NrOfTransportBlocks; + nbap_dch_chnl_info[common_transport_channel_id].num_dl_chans++; + nbap_dch_chnl_info[common_transport_channel_id].dl_chan_num_tbs[num_items-1] = NrOfTransportBlocks; break; default: break; @@ -14953,15 +15475,25 @@ guint32 NrOfTransportBlocks; 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 1148 "./asn1/nbap/nbap.cnf" +#line 1213 "./asn1/nbap/nbap.cnf" guint32 TransportBlockSize; +guint num_items; +guint32 dch_id; +guint32 common_physical_channel_id; +guint32 common_transport_channel_id; +nbap_dch_channel_info_t* nbap_dch_chnl_info; +nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 5000U, &TransportBlockSize, FALSE); - if(num_items>0){ - switch(transportFormatSet_type){ + if(private_data_get_num_items(actx->pinfo)>0){ + num_items = private_data_get_num_items(actx->pinfo); + dch_id = private_data_get_dch_id(actx->pinfo); + common_physical_channel_id = private_data_get_common_physical_channel_id(actx->pinfo); + common_transport_channel_id = private_data_get_common_transport_channel_id(actx->pinfo); + switch(private_data_get_transport_format_set_type(actx->pinfo)){ case NBAP_DCH_UL: nbap_dch_chnl_info[dch_id].ul_chan_tf_size[num_items-1] = TransportBlockSize; break; @@ -14969,12 +15501,12 @@ guint32 TransportBlockSize; nbap_dch_chnl_info[dch_id].dl_chan_tf_size[num_items-1] = TransportBlockSize; break; case NBAP_CPCH: - nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_tf_size[num_items-1] = TransportBlockSize; - nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_tf_size[num_items-1] = TransportBlockSize; + nbap_dch_chnl_info[common_physical_channel_id].ul_chan_tf_size[num_items-1] = TransportBlockSize; + nbap_dch_chnl_info[common_physical_channel_id].dl_chan_tf_size[num_items-1] = TransportBlockSize; break; case NBAP_PCH: - nbap_dch_chnl_info[commontransportchannelid].ul_chan_tf_size[num_items-1] = TransportBlockSize; - nbap_dch_chnl_info[commontransportchannelid].dl_chan_tf_size[num_items-1] = TransportBlockSize; + nbap_dch_chnl_info[common_transport_channel_id].ul_chan_tf_size[num_items-1] = TransportBlockSize; + nbap_dch_chnl_info[common_transport_channel_id].dl_chan_tf_size[num_items-1] = TransportBlockSize; break; default: break; @@ -15081,8 +15613,8 @@ 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 1112 "./asn1/nbap/nbap.cnf" - num_items++; +#line 1167 "./asn1/nbap/nbap.cnf" + private_data_increment_num_items(actx->pinfo); @@ -15099,8 +15631,8 @@ 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 1109 "./asn1/nbap/nbap.cnf" - num_items = 0; +#line 1164 "./asn1/nbap/nbap.cnf" + private_data_set_num_items(actx->pinfo, 0); offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, @@ -15270,9 +15802,11 @@ 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 1087 "./asn1/nbap/nbap.cnf" - transportFormatSet_type = NBAP_DCH_UL; - nbap_dch_chnl_info[dch_id].num_ul_chans = 0; +#line 1132 "./asn1/nbap/nbap.cnf" + nbap_dch_channel_info_t* nbap_dch_chnl_info; + nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); + private_data_set_transport_format_set_type(actx->pinfo, NBAP_DCH_UL); + nbap_dch_chnl_info[private_data_get_dch_id(actx->pinfo)].num_ul_chans = 0; offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index); @@ -15284,9 +15818,11 @@ dissect_nbap_T_ul_TransportFormatSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx 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 1091 "./asn1/nbap/nbap.cnf" - transportFormatSet_type = NBAP_DCH_DL; - nbap_dch_chnl_info[dch_id].num_dl_chans = 0; +#line 1138 "./asn1/nbap/nbap.cnf" + nbap_dch_channel_info_t* nbap_dch_chnl_info; + nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); + private_data_set_transport_format_set_type(actx->pinfo, NBAP_DCH_DL); + nbap_dch_chnl_info[private_data_get_dch_id(actx->pinfo)].num_dl_chans = 0; offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index); @@ -15334,15 +15870,15 @@ 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 1081 "./asn1/nbap/nbap.cnf" - g_num_dch_in_flow++; +#line 1126 "./asn1/nbap/nbap.cnf" + private_data_increment_num_dch_in_flow(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_DCH_Specific_FDD_Item, DCH_Specific_FDD_Item_sequence); -#line 1084 "./asn1/nbap/nbap.cnf" - prev_dch_id = dch_id; +#line 1129 "./asn1/nbap/nbap.cnf" + private_data_set_prev_dch_id(actx->pinfo,private_data_get_dch_id(actx->pinfo)); return offset; @@ -15355,9 +15891,9 @@ 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 1077 "./asn1/nbap/nbap.cnf" - g_num_dch_in_flow = 0; - prev_dch_id = 0; +#line 1122 "./asn1/nbap/nbap.cnf" + private_data_set_num_dch_in_flow(actx->pinfo, 0); + private_data_set_prev_dch_id(actx->pinfo, 0); offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, @@ -15634,11 +16170,11 @@ dissect_nbap_DCH_TDD_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * static int dissect_nbap_T_dCH_ID_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 740 "./asn1/nbap/nbap.cnf" +#line 744 "./asn1/nbap/nbap.cnf" offset = dissect_nbap_DCH_ID(tvb, offset, actx, tree, hf_index); - dch_id = t_dch_id; + private_data_set_dch_id(actx->pinfo, private_data_get_t_dch_id(actx->pinfo)); @@ -15649,9 +16185,11 @@ dissect_nbap_T_dCH_ID_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int dissect_nbap_T_ul_TransportFormatSet_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1095 "./asn1/nbap/nbap.cnf" - transportFormatSet_type = NBAP_DCH_UL; - nbap_dch_chnl_info[dch_id].num_ul_chans = 0; +#line 1144 "./asn1/nbap/nbap.cnf" + nbap_dch_channel_info_t* nbap_dch_chnl_info; + nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); + private_data_set_transport_format_set_type(actx->pinfo, NBAP_DCH_UL); + nbap_dch_chnl_info[private_data_get_dch_id(actx->pinfo)].num_ul_chans = 0; offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index); @@ -15663,9 +16201,11 @@ dissect_nbap_T_ul_TransportFormatSet_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ static int dissect_nbap_T_dl_TransportFormatSet_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1099 "./asn1/nbap/nbap.cnf" - transportFormatSet_type = NBAP_DCH_DL; - nbap_dch_chnl_info[dch_id].num_dl_chans = 0; +#line 1150 "./asn1/nbap/nbap.cnf" + nbap_dch_channel_info_t* nbap_dch_chnl_info; + nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); + private_data_set_transport_format_set_type(actx->pinfo, NBAP_DCH_DL); + nbap_dch_chnl_info[private_data_get_dch_id(actx->pinfo)].num_dl_chans = 0; offset = dissect_nbap_TransportFormatSet(tvb, offset, actx, tree, hf_index); @@ -15719,12 +16259,12 @@ static const per_sequence_t FDD_DCHs_to_ModifyItem_sequence[] = { static int dissect_nbap_FDD_DCHs_to_ModifyItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1175 "./asn1/nbap/nbap.cnf" +#line 1250 "./asn1/nbap/nbap.cnf" offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_FDD_DCHs_to_ModifyItem, FDD_DCHs_to_ModifyItem_sequence); - /*g_warning("I'm going to modify dch_id: %d and t_dch_id: %d", dch_id, t_dch_id); + /*g_warning("I'm going to modify dch_id: %d and t_dch_id: %d",private_data_get_dch_id(actx->pinfo),private_data_get_t_dch_id(actx->pinfo)); */ @@ -18141,18 +18681,23 @@ dissect_nbap_E_DCH_HARQ_Combining_Capability(tvbuff_t *tvb _U_, int offset _U_, static int dissect_nbap_E_DCH_DDI_Value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1684 "./asn1/nbap/nbap.cnf" - +#line 1769 "./asn1/nbap/nbap.cnf" + guint32 e_dch_ddi_value; + guint num_items; + nbap_edch_channel_info_t* nbap_edch_channel_info; + nbap_edch_channel_info = private_data_get_nbap_edch_channel_info(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 62U, &e_dch_ddi_value, FALSE); - if (actx->pinfo->fd->flags.visited) - { - return offset; - } - if(num_items>0) - nbap_edch_channel_info[e_dch_macdflow_id].edch_ddi[num_items-1] = e_dch_ddi_value; + private_data_set_e_dch_ddi_value(actx->pinfo, e_dch_ddi_value); + if (actx->pinfo->fd->flags.visited) + { + return offset; + } + num_items = private_data_get_num_items(actx->pinfo); + if(num_items>0) + nbap_edch_channel_info[private_data_get_e_dch_macdflow_id(actx->pinfo)].edch_ddi[num_items-1] = private_data_get_e_dch_ddi_value(actx->pinfo); @@ -18276,8 +18821,8 @@ static const per_sequence_t E_DCH_LogicalChannelInformationItem_sequence[] = { static int dissect_nbap_E_DCH_LogicalChannelInformationItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1681 "./asn1/nbap/nbap.cnf" - num_items++; +#line 1766 "./asn1/nbap/nbap.cnf" + private_data_increment_num_items(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -18293,15 +18838,17 @@ static const per_sequence_t E_DCH_LogicalChannelInformation_sequence_of[1] = { static int dissect_nbap_E_DCH_LogicalChannelInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1674 "./asn1/nbap/nbap.cnf" - num_items = 0; +#line 1757 "./asn1/nbap/nbap.cnf" + private_data_set_num_items(actx->pinfo, 0); + nbap_edch_channel_info_t* nbap_edch_channel_info; + nbap_edch_channel_info = private_data_get_nbap_edch_channel_info(actx->pinfo); offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_nbap_E_DCH_LogicalChannelInformation, E_DCH_LogicalChannelInformation_sequence_of, 1, maxNoOfLogicalChannels, FALSE); -nbap_edch_channel_info[e_dch_macdflow_id].no_ddi_entries = num_items; +nbap_edch_channel_info[private_data_get_e_dch_macdflow_id(actx->pinfo)].no_ddi_entries = private_data_get_num_items(actx->pinfo); @@ -18326,12 +18873,15 @@ static const per_sequence_t E_DCH_MACdFlow_Specific_InfoItem_sequence[] = { static int dissect_nbap_E_DCH_MACdFlow_Specific_InfoItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1416 "./asn1/nbap/nbap.cnf" +#line 1502 "./asn1/nbap/nbap.cnf" umts_fp_conversation_info_t *p_conv_data = NULL; fp_edch_channel_info_t* fp_edch_channel_info = NULL; address null_addr; conversation_t *p_conv; guint32 no_ddi_entries, i; +guint32 e_dch_macdflow_id; +nbap_edch_channel_info_t* nbap_edch_channel_info; +nbap_edch_channel_info = private_data_get_nbap_edch_channel_info(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_E_DCH_MACdFlow_Specific_InfoItem, E_DCH_MACdFlow_Specific_InfoItem_sequence); @@ -18342,6 +18892,7 @@ guint32 no_ddi_entries, i; } /* Check if we have conversation info */ + e_dch_macdflow_id = private_data_get_e_dch_macdflow_id(actx->pinfo); clear_address(&null_addr); p_conv = find_conversation(actx->pinfo->num, &nbap_edch_channel_info[e_dch_macdflow_id].crnc_address, &null_addr, PT_UDP, @@ -18359,24 +18910,17 @@ guint32 no_ddi_entries, i; return offset; no_ddi_entries = fp_edch_channel_info->no_ddi_entries = nbap_edch_channel_info[e_dch_macdflow_id].no_ddi_entries; - /*g_print("E-DCH-MACdFlow-Specific-InfoItem: e_dch_macdflow_id %u, no_ddi_entries %u\n",e_dch_macdflow_id,no_ddi_entries);*/ for (i = 0; i < no_ddi_entries; i++) { fp_edch_channel_info->edch_ddi[i] = nbap_edch_channel_info[e_dch_macdflow_id].edch_ddi[i]; fp_edch_channel_info->edch_macd_pdu_size[i] = nbap_edch_channel_info[e_dch_macdflow_id].edch_macd_pdu_size[i]; - fp_edch_channel_info->edch_lchId[i] = nbap_edch_channel_info[e_dch_macdflow_id].lchId[i]; /*lchId_type_table[nbap_edch_channel_info[e_dch_macdflow_id].lchId[i]];*/ - /*g_print("E-DCH-MACdFlow-Specific-InfoItem: e_dch_macdflow_id %u edch_ddi %u edch_macd_pdu_size %u\n", - e_dch_macdflow_id, - nbap_edch_channel_info[e_dch_macdflow_id].edch_ddi[i], - nbap_edch_channel_info[e_dch_macdflow_id].edch_macd_pdu_size[i] - );*/ + fp_edch_channel_info->edch_lchId[i] = nbap_edch_channel_info[e_dch_macdflow_id].lchId[i]; } -/* copy_address(&(nbap_edch_port_info->crnc_address[e_dch_macdflow_id]),&dst_addr);*/ - p_conv_data->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present; + p_conv_data->dch_crc_present = private_data_get_dch_crc_present(actx->pinfo); /* Figure out which type of E-DCH frame, based on DDI value (DDI = 0 => type 2)*/ - if( 0 == e_dch_ddi_value ){ + if( 0 == private_data_get_e_dch_ddi_value(actx->pinfo) ){ fp_edch_channel_info->edch_type = 1; /* 1 means T2 */ }else{ /*Value 1-5 means T1*/ @@ -18384,7 +18928,7 @@ guint32 no_ddi_entries, i; } /* use to display e_dch_macdflow_id */ p_conv_data->num_dch_in_flow = 1; - p_conv_data->dch_ids_in_flow_list[0] = e_dch_macdflow_id; + p_conv_data->dch_ids_in_flow_list[0] = private_data_get_e_dch_macdflow_id(actx->pinfo); @@ -18515,12 +19059,12 @@ static const per_sequence_t E_DCH_LogicalChannelToModifyItem_sequence[] = { static int dissect_nbap_E_DCH_LogicalChannelToModifyItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1669 "./asn1/nbap/nbap.cnf" +#line 1752 "./asn1/nbap/nbap.cnf" offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_E_DCH_LogicalChannelToModifyItem, E_DCH_LogicalChannelToModifyItem_sequence); -num_items++; +private_data_increment_num_items(actx->pinfo); @@ -18590,15 +19134,18 @@ static const per_sequence_t E_DCH_MACdFlow_Specific_InfoItem_to_Modify_sequence[ static int dissect_nbap_E_DCH_MACdFlow_Specific_InfoItem_to_Modify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1571 "./asn1/nbap/nbap.cnf" +#line 1659 "./asn1/nbap/nbap.cnf" guint32 no_ddi_entries, i; address null_addr; nbap_edch_port_info_t *old_info; umts_fp_conversation_info_t *p_conv_data = NULL; fp_edch_channel_info_t* fp_edch_channel_info; conversation_t *p_conv; +guint32 e_dch_macdflow_id; +nbap_edch_channel_info_t* nbap_edch_channel_info; +nbap_edch_channel_info = private_data_get_nbap_edch_channel_info(actx->pinfo); -num_items = 1; +private_data_set_num_items(actx->pinfo, 1); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_E_DCH_MACdFlow_Specific_InfoItem_to_Modify, E_DCH_MACdFlow_Specific_InfoItem_to_Modify_sequence); @@ -18613,33 +19160,32 @@ num_items = 1; /****** Look up old port and ip information since this is not included in this message ******/ /*Find proper communication context ID*/ - if(crcn_context_present){ - /*umts_fp_conversation_info->com_context_id = com_context_id;*/ + if(private_data_get_crnc_context_present(actx->pinfo)){ + /*umts_fp_conversation_info->com_context_id = private_data_get_com_context_id(actx->pinfo);*/ }else{ nbap_com_context_id_t * cur_val; - if((cur_val=(nbap_com_context_id_t *)wmem_tree_lookup32(com_context_map, node_b_com_context_id)) != NULL){ - com_context_id= cur_val->crnc_context; + if((cur_val=(nbap_com_context_id_t *)wmem_tree_lookup32(com_context_map,private_data_get_node_b_com_context_id(actx->pinfo))) != NULL){ + private_data_set_com_context_id(actx->pinfo, cur_val->crnc_context); }else{ expert_add_info(actx->pinfo, NULL, &ei_nbap_no_find_comm_context_id); } } /*This should not happen*/ - if(( old_info = (nbap_edch_port_info_t *)wmem_tree_lookup32(edch_flow_port_map, com_context_id)) == NULL ){ + if(( old_info = (nbap_edch_port_info_t *)wmem_tree_lookup32(edch_flow_port_map,private_data_get_com_context_id(actx->pinfo))) == NULL ){ expert_add_info(actx->pinfo, NULL, &ei_nbap_no_find_port_info); return offset; } - nbap_debug(" Found com_context_id %u", com_context_id); + nbap_debug(" Found com_context_id %u",private_data_get_com_context_id(actx->pinfo)); /*Set the appropriate port, cheat and use same variable.*/ - BindingID_port = old_info->crnc_port[e_dch_macdflow_id]; + e_dch_macdflow_id = private_data_get_e_dch_macdflow_id(actx->pinfo); + private_data_set_binding_id_port(actx->pinfo, old_info->crnc_port[e_dch_macdflow_id]); - nbap_debug(" Port %u loaded from old_info->crnc_port[e_dch_macdflow_id %u]", - BindingID_port, - e_dch_macdflow_id); + nbap_debug(" Port %u loaded from old_info->crnc_port[e_dch_macdflow_id %u]",private_data_get_binding_id_port(actx->pinfo), e_dch_macdflow_id); /*TODO: Fix this for ipv6 as well!*/ - transportLayerAddress_ipv4 = old_info->crnc_address; + private_data_set_transportLayerAddress_ipv4(actx->pinfo, old_info->crnc_address); /*Do the configurations*/ /* Check if we have conversation info */ @@ -18660,24 +19206,17 @@ num_items = 1; return offset; no_ddi_entries = fp_edch_channel_info->no_ddi_entries = nbap_edch_channel_info[e_dch_macdflow_id].no_ddi_entries; - /*g_print("E-DCH-MACdFlow-MODIFIED-Specific-InfoItem: e_dch_macdflow_id %u, no_ddi_entries %u\n",e_dch_macdflow_id,no_ddi_entries);*/ for (i = 0; i < no_ddi_entries; i++) { fp_edch_channel_info->edch_ddi[i] = nbap_edch_channel_info[e_dch_macdflow_id].edch_ddi[i]; fp_edch_channel_info->edch_macd_pdu_size[i] = nbap_edch_channel_info[e_dch_macdflow_id].edch_macd_pdu_size[i]; - fp_edch_channel_info->edch_lchId[i] = nbap_edch_channel_info[e_dch_macdflow_id].lchId[i]; /*lchId_type_table[nbap_edch_channel_info[e_dch_macdflow_id].lchId[i]];*/ - /* g_print("E-DCH-MACdFlow-Specific-InfoItem: e_dch_macdflow_id %u edch_ddi %u edch_macd_pdu_size %u\n", - e_dch_macdflow_id, - nbap_edch_channel_info[e_dch_macdflow_id].edch_ddi[i], - nbap_edch_channel_info[e_dch_macdflow_id].edch_macd_pdu_size[i] - );*/ + fp_edch_channel_info->edch_lchId[i] = nbap_edch_channel_info[e_dch_macdflow_id].lchId[i]; } -/* copy_address(&(nbap_edch_port_info->crnc_address[e_dch_macdflow_id]),&dst_addr);*/ - p_conv_data->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present; + p_conv_data->dch_crc_present = private_data_get_dch_crc_present(actx->pinfo); /* Figure out which type of E-DCH frame, based on DDI value (DDI = 0 => type 2)*/ - if( 0 == e_dch_ddi_value ){ + if( 0 == private_data_get_e_dch_ddi_value(actx->pinfo) ){ fp_edch_channel_info->edch_type = 1; /* 1 means T2 */ }else{ /*Value 1-5 means T1*/ @@ -18738,23 +19277,29 @@ static const per_sequence_t E_DCH_FDD_Information_to_Modify_sequence[] = { static int dissect_nbap_E_DCH_FDD_Information_to_Modify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1475 "./asn1/nbap/nbap.cnf" +#line 1558 "./asn1/nbap/nbap.cnf" address dst_addr, null_addr; conversation_t *conversation,*old_conversation = NULL; umts_fp_conversation_info_t *umts_fp_conversation_info _U_; fp_edch_channel_info_t* fp_edch_channel_info; void *conv_proto_data = NULL; +guint32 transportLayerAddress_ipv4; +guint16 bindingID; +guint32 e_dch_macdflow_id; +nbap_edch_channel_info_t* nbap_edch_channel_info; +nbap_edch_channel_info = private_data_get_nbap_edch_channel_info(actx->pinfo); -transportLayerAddress_ipv4 = 0; -BindingID_port = 0; +private_data_set_transportLayerAddress_ipv4(actx->pinfo, 0); +private_data_set_binding_id_port(actx->pinfo, 0); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_E_DCH_FDD_Information_to_Modify, E_DCH_FDD_Information_to_Modify_sequence); - if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0) - { + transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx->pinfo); + bindingID = private_data_get_binding_id_port(actx->pinfo); + if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || bindingID == 0){ return offset; } /* @@ -18766,24 +19311,22 @@ BindingID_port = 0; set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); old_conversation = find_conversation(actx->pinfo->num,&dst_addr, - &null_addr, PT_UDP, BindingID_port, + &null_addr, PT_UDP, bindingID, 0, NO_ADDR_B|NO_PORT_B); if(old_conversation){ nbap_debug("Frame %u E-DCH-FDD-Information-to-Modify: found old conv on IP %s Port %u", actx->pinfo->num, - address_to_str(wmem_packet_scope(), &dst_addr), - BindingID_port); + address_to_str(wmem_packet_scope(), &dst_addr), bindingID); }else{ nbap_debug("Frame %u E-DCH-FDD-Information-to-Modify: Did not find old conv on IP %s Port %u", actx->pinfo->num, - address_to_str(wmem_packet_scope(), &dst_addr), - BindingID_port); + address_to_str(wmem_packet_scope(), &dst_addr), bindingID); } /* It's not part of any conversation - create a new one. */ conversation = conversation_new(actx->pinfo->num, &dst_addr, - &null_addr, PT_UDP,BindingID_port , + &null_addr, PT_UDP, bindingID, 0, NO_ADDR2|NO_PORT2); /* Set dissector */ @@ -18803,7 +19346,7 @@ BindingID_port = 0; umts_fp_conversation_info->dl_frame_number = 0; umts_fp_conversation_info->ul_frame_number = actx->pinfo->num; copy_address_wmem(wmem_file_scope(), &(umts_fp_conversation_info->crnc_address), &dst_addr); - umts_fp_conversation_info->crnc_port = BindingID_port; + umts_fp_conversation_info->crnc_port = bindingID; umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN; @@ -18811,12 +19354,12 @@ BindingID_port = 0; fp_edch_channel_info = wmem_new0(wmem_file_scope(), fp_edch_channel_info_t); umts_fp_conversation_info->channel_specific_info = (void*)fp_edch_channel_info; - if(crcn_context_present){ - umts_fp_conversation_info->com_context_id = com_context_id; + if(private_data_get_crnc_context_present(actx->pinfo)){ + umts_fp_conversation_info->com_context_id = private_data_get_com_context_id(actx->pinfo); }else{ nbap_com_context_id_t * cur_val; - if((cur_val=(nbap_com_context_id_t *)wmem_tree_lookup32(com_context_map, node_b_com_context_id)) != NULL){ + if((cur_val=(nbap_com_context_id_t *)wmem_tree_lookup32(com_context_map,private_data_get_node_b_com_context_id(actx->pinfo))) != NULL){ umts_fp_conversation_info->com_context_id = cur_val->crnc_context; }else{ expert_add_info(actx->pinfo, NULL, &ei_nbap_no_set_comm_context_id); @@ -18824,8 +19367,9 @@ BindingID_port = 0; } /* Set address for collection of DDI entries */ + e_dch_macdflow_id = private_data_get_e_dch_macdflow_id(actx->pinfo); copy_address(&(nbap_edch_channel_info[e_dch_macdflow_id].crnc_address),&dst_addr); - nbap_edch_channel_info[e_dch_macdflow_id].crnc_port = BindingID_port; + nbap_edch_channel_info[e_dch_macdflow_id].crnc_port = bindingID; /*Indicate that the frag table has to be reset*/ @@ -23333,7 +23877,7 @@ static const value_string nbap_PICH_Mode_vals[] = { static int dissect_nbap_PICH_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 860 "./asn1/nbap/nbap.cnf" +#line 890 "./asn1/nbap/nbap.cnf" guint32 PICH_Mode = 0; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 4, &PICH_Mode, TRUE, 0, NULL); @@ -23341,16 +23885,16 @@ guint32 PICH_Mode = 0; switch(PICH_Mode){ case 0: /* v18 */ - paging_indications = 18; + private_data_set_paging_indications(actx->pinfo, 18); break; case 1: /* v36 */ - paging_indications = 36; + private_data_set_paging_indications(actx->pinfo, 36); break; case 2: /* v72 */ - paging_indications = 72; + private_data_set_paging_indications(actx->pinfo, 72); break; case 3: /* v144 */ - paging_indications = 144; + private_data_set_paging_indications(actx->pinfo, 144); break; } @@ -23448,7 +23992,7 @@ static const per_sequence_t HSDSCH_Common_System_InformationFDD_sequence[] = { static int dissect_nbap_HSDSCH_Common_System_InformationFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 2092 "./asn1/nbap/nbap.cnf" +#line 2225 "./asn1/nbap/nbap.cnf" /* * 5.1.6 High Speed Downlink Shared Channels * The Data Transfer procedure is used to transfer a HS-DSCH DATA FRAME (TYPE 1, TYPE 2 [FDD and 1.28Mcps @@ -23463,6 +24007,8 @@ umts_fp_conversation_info_t *umts_fp_conversation_info = NULL; fp_hsdsch_channel_info_t* fp_hsdsch_channel_info = NULL; address null_addr; conversation_t *conversation = NULL; +nbap_common_channel_info_t* nbap_common_channel_info; +nbap_common_channel_info = private_data_get_nbap_common_channel_info(actx->pinfo); int i; @@ -23513,7 +24059,7 @@ int i; fp_hsdsch_channel_info = wmem_new0(wmem_file_scope(), fp_hsdsch_channel_info_t); umts_fp_conversation_info->channel_specific_info = (void*)fp_hsdsch_channel_info; - fp_hsdsch_channel_info->common_macdflow_id = common_macdflow_id; + fp_hsdsch_channel_info->common_macdflow_id = private_data_get_common_macdflow_id(actx->pinfo); fp_hsdsch_channel_info->hsdsch_entity = ehs; @@ -23594,14 +24140,20 @@ 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 760 "./asn1/nbap/nbap.cnf" +#line 772 "./asn1/nbap/nbap.cnf" + guint32 hsdsch_macdflow_id; + guint num_items; + gint* hsdsch_macdflow_ids; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, maxNrOfMACdFlows_1, &hsdsch_macdflow_id, FALSE); + private_data_set_hsdsch_macdflow_id(actx->pinfo, hsdsch_macdflow_id); + num_items = private_data_get_num_items(actx->pinfo); DISSECTOR_ASSERT(num_items < maxNrOfMACdFlows+1); DISSECTOR_ASSERT(num_items > 0); +hsdsch_macdflow_ids = private_data_get_hsdsch_macdflow_ids(actx->pinfo); hsdsch_macdflow_ids[num_items-1] = hsdsch_macdflow_id; @@ -23621,28 +24173,34 @@ 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 1785 "./asn1/nbap/nbap.cnf" - - +#line 1891 "./asn1/nbap/nbap.cnf" address dst_addr; - transportLayerAddress_ipv4 = 0; - BindingID_port = 0; - num_items++; + guint32 transportLayerAddress_ipv4; + guint16 bindingID; + guint32 hsdsch_macdflow_id; + nbap_hsdsch_channel_info_t* nbap_hsdsch_channel_info; + nbap_hsdsch_channel_info = private_data_get_nbap_hsdsch_channel_info(actx->pinfo); + + private_data_set_transportLayerAddress_ipv4(actx->pinfo, 0); + private_data_set_binding_id_port(actx->pinfo, 0); + private_data_increment_num_items(actx->pinfo); 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) - { + transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx->pinfo); + bindingID = private_data_get_binding_id_port(actx->pinfo); + if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || bindingID == 0){ return offset; } set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); /* Set address for collection of HSDSCH entries */ + hsdsch_macdflow_id = private_data_get_hsdsch_macdflow_id(actx->pinfo); copy_address(&(nbap_hsdsch_channel_info[hsdsch_macdflow_id].crnc_address),&dst_addr); - nbap_hsdsch_channel_info[hsdsch_macdflow_id].crnc_port = BindingID_port; + nbap_hsdsch_channel_info[hsdsch_macdflow_id].crnc_port = bindingID; @@ -23724,20 +24282,21 @@ static const value_string nbap_RLC_Mode_vals[] = { static int dissect_nbap_RLC_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1712 "./asn1/nbap/nbap.cnf" +#line 1814 "./asn1/nbap/nbap.cnf" guint32 rlc_mode; - + nbap_hsdsch_channel_info_t* nbap_hsdsch_channel_info; + nbap_hsdsch_channel_info = private_data_get_nbap_hsdsch_channel_info(actx->pinfo); offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, &rlc_mode, TRUE, 0, NULL); switch(rlc_mode){ case 0: /* rLC-AM */ - nbap_hsdsch_channel_info[hsdsch_macdflow_id].rlc_mode = FP_RLC_AM; + nbap_hsdsch_channel_info[private_data_get_hsdsch_macdflow_id(actx->pinfo)].rlc_mode = FP_RLC_AM; break; case 1: /* rLC-UM */ - nbap_hsdsch_channel_info[hsdsch_macdflow_id].rlc_mode = FP_RLC_UM; + nbap_hsdsch_channel_info[private_data_get_hsdsch_macdflow_id(actx->pinfo)].rlc_mode = FP_RLC_UM; break; default: break; @@ -23765,8 +24324,8 @@ static const per_sequence_t PriorityQueue_InfoItem_sequence[] = { static int dissect_nbap_PriorityQueue_InfoItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1776 "./asn1/nbap/nbap.cnf" - num_items++; +#line 1882 "./asn1/nbap/nbap.cnf" + private_data_increment_num_items(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -23799,12 +24358,13 @@ static const per_sequence_t HSDSCH_MACdFlows_Information_sequence[] = { static int dissect_nbap_HSDSCH_MACdFlows_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1736 "./asn1/nbap/nbap.cnf" - +#line 1841 "./asn1/nbap/nbap.cnf" int protocol_ie_id; guint32 i; - num_items = 0; - protocol_ie_id = ProtocolIE_ID; + private_data_set_num_items(actx->pinfo,0); + protocol_ie_id = private_data_get_protocol_ie_id(actx->pinfo); + nbap_hsdsch_channel_info_t* nbap_hsdsch_channel_info; + nbap_hsdsch_channel_info = private_data_get_nbap_hsdsch_channel_info(actx->pinfo); /*Handle special cases, when the tree is weird, ie. no useful message appears in the tree, like HSDHSCH-Information-FDD */ @@ -23843,14 +24403,16 @@ dissect_nbap_HSDSCH_MACdFlows_Information(tvbuff_t *tvb _U_, int offset _U_, asn static int dissect_nbap_T_hSDSCH_Physical_Layer_Category(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1729 "./asn1/nbap/nbap.cnf" +#line 1832 "./asn1/nbap/nbap.cnf" guint32 hsdsch_physical_layer_category; + nbap_hsdsch_channel_info_t* nbap_hsdsch_channel_info; + nbap_hsdsch_channel_info = private_data_get_nbap_hsdsch_channel_info(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 64U, &hsdsch_physical_layer_category, TRUE); - nbap_hsdsch_channel_info[hsdsch_macdflow_id].hsdsch_physical_layer_category = hsdsch_physical_layer_category; + nbap_hsdsch_channel_info[private_data_get_hsdsch_macdflow_id(actx->pinfo)].hsdsch_physical_layer_category = hsdsch_physical_layer_category; @@ -23911,7 +24473,7 @@ static const per_sequence_t HSDSCH_FDD_Information_sequence[] = { static int dissect_nbap_HSDSCH_FDD_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1837 "./asn1/nbap/nbap.cnf" +#line 1953 "./asn1/nbap/nbap.cnf" /* * Collect the information about the HSDSCH MACdFlows set up conversation(s) and set the conversation data. */ @@ -23920,6 +24482,8 @@ dissect_nbap_HSDSCH_FDD_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ umts_fp_conversation_info_t *umts_fp_conversation_info; fp_hsdsch_channel_info_t* fp_hsdsch_channel_info = NULL; guint32 i; + nbap_hsdsch_channel_info_t* nbap_hsdsch_channel_info; + nbap_hsdsch_channel_info = private_data_get_nbap_hsdsch_channel_info(actx->pinfo); if (!actx->pinfo->fd->flags.visited){ /* Set port to zero use that as an indication of whether we have data or not */ @@ -23981,7 +24545,7 @@ dissect_nbap_HSDSCH_FDD_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ fp_hsdsch_channel_info->hsdsch_macdflow_id = i ; /*hsdsch_macdflow_ids[i];*/ /* hsdsch_macdflow_id;*/ /*Added july 2012*/ - umts_fp_conversation_info->com_context_id = com_context_id; + umts_fp_conversation_info->com_context_id = private_data_get_com_context_id(actx->pinfo); /* Cheat and use the DCH entries */ umts_fp_conversation_info->num_dch_in_flow++; @@ -24055,26 +24619,31 @@ static const per_sequence_t HSDSCH_MACdFlow_Specific_InfoItem_to_Modify_sequence static int dissect_nbap_HSDSCH_MACdFlow_Specific_InfoItem_to_Modify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1933 "./asn1/nbap/nbap.cnf" +#line 2051 "./asn1/nbap/nbap.cnf" address dst_addr; - transportLayerAddress_ipv4 = 0; - BindingID_port = 0; - num_items++; + guint32 transportLayerAddress_ipv4; + guint16 bindingID; + private_data_set_transportLayerAddress_ipv4(actx->pinfo, 0); + private_data_set_binding_id_port(actx->pinfo, 0); + private_data_increment_num_items(actx->pinfo); + nbap_hsdsch_channel_info_t* nbap_hsdsch_channel_info; + nbap_hsdsch_channel_info = private_data_get_nbap_hsdsch_channel_info(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_HSDSCH_MACdFlow_Specific_InfoItem_to_Modify, HSDSCH_MACdFlow_Specific_InfoItem_to_Modify_sequence); - if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0) - { + transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx->pinfo); + bindingID = private_data_get_binding_id_port(actx->pinfo); + if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || bindingID == 0){ return offset; } set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); /* Set address for collection of HSDSCH entries */ - copy_address(&(nbap_hsdsch_channel_info[hsdsch_macdflow_id].crnc_address),&dst_addr); - nbap_hsdsch_channel_info[hsdsch_macdflow_id].crnc_port = BindingID_port; + copy_address(&(nbap_hsdsch_channel_info[private_data_get_hsdsch_macdflow_id(actx->pinfo)].crnc_address),&dst_addr); + nbap_hsdsch_channel_info[private_data_get_hsdsch_macdflow_id(actx->pinfo)].crnc_port = bindingID; @@ -24113,8 +24682,8 @@ static const per_sequence_t PriorityQueue_InfoItem_to_Add_sequence[] = { static int dissect_nbap_PriorityQueue_InfoItem_to_Add(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1779 "./asn1/nbap/nbap.cnf" - num_items = 1; +#line 1885 "./asn1/nbap/nbap.cnf" + private_data_set_num_items(actx->pinfo,1); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -24248,7 +24817,7 @@ static const per_sequence_t HSDSCH_Information_to_Modify_sequence[] = { static int dissect_nbap_HSDSCH_Information_to_Modify(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1953 "./asn1/nbap/nbap.cnf" +#line 2076 "./asn1/nbap/nbap.cnf" /* * This is pretty much the same like if we setup a previous flow */ @@ -24261,6 +24830,8 @@ dissect_nbap_HSDSCH_Information_to_Modify(tvbuff_t *tvb _U_, int offset _U_, asn umts_fp_conversation_info_t *umts_fp_conversation_info; fp_hsdsch_channel_info_t* fp_hsdsch_channel_info = NULL; guint32 i; + nbap_hsdsch_channel_info_t* nbap_hsdsch_channel_info; + nbap_hsdsch_channel_info = private_data_get_nbap_hsdsch_channel_info(actx->pinfo); if (!actx->pinfo->fd->flags.visited){ /* Set port to zero use that as an indication of whether we have data or not */ @@ -24326,7 +24897,7 @@ dissect_nbap_HSDSCH_Information_to_Modify(tvbuff_t *tvb _U_, int offset _U_, asn fp_hsdsch_channel_info->hsdsch_macdflow_id = i ; /*hsdsch_macdflow_ids[i];*/ /* hsdsch_macdflow_id;*/ /*Added july 2012*/ - umts_fp_conversation_info->com_context_id = com_context_id; + umts_fp_conversation_info->com_context_id = private_data_get_com_context_id(actx->pinfo); /* Cheat and use the DCH entries */ umts_fp_conversation_info->num_dch_in_flow++; @@ -24377,7 +24948,7 @@ static const value_string nbap_HSDSCH_MACdPDUSizeFormat_vals[] = { static int dissect_nbap_HSDSCH_MACdPDUSizeFormat(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1814 "./asn1/nbap/nbap.cnf" +#line 1930 "./asn1/nbap/nbap.cnf" /* * Removed 10 Aug. 2012, I'm not sure if this was right, it wrongfully * set some packets as type 2 for HSDHCH modified items. @@ -24488,8 +25059,8 @@ static const per_sequence_t HSDSCH_MACdFlow_Specific_InformationResp_Item_sequen static int dissect_nbap_HSDSCH_MACdFlow_Specific_InformationResp_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1782 "./asn1/nbap/nbap.cnf" - num_items++; +#line 1888 "./asn1/nbap/nbap.cnf" + private_data_increment_num_items(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -24904,7 +25475,7 @@ static const per_sequence_t HSDSCH_Paging_System_InformationFDD_sequence[] = { static int dissect_nbap_HSDSCH_Paging_System_InformationFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 2172 "./asn1/nbap/nbap.cnf" +#line 2307 "./asn1/nbap/nbap.cnf" /* g_warning("HS-DSCH Type 3 NOT Implemented!"); */ @@ -25098,8 +25669,8 @@ static const per_sequence_t HSDSCH_MACdFlows_to_Delete_Item_sequence[] = { static int dissect_nbap_HSDSCH_MACdFlows_to_Delete_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1773 "./asn1/nbap/nbap.cnf" - num_items++; +#line 1879 "./asn1/nbap/nbap.cnf" + private_data_increment_num_items(actx->pinfo); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -25115,8 +25686,8 @@ static const per_sequence_t HSDSCH_MACdFlows_to_Delete_sequence_of[1] = { static int dissect_nbap_HSDSCH_MACdFlows_to_Delete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1768 "./asn1/nbap/nbap.cnf" - num_items = 0; +#line 1874 "./asn1/nbap/nbap.cnf" + private_data_set_num_items(actx->pinfo,0); offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, @@ -26495,6 +27066,7 @@ dissect_nbap_IB_SG_DATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, #line 618 "./asn1/nbap/nbap.cnf" tvbuff_t *parameter_tvb=NULL; proto_tree *subtree; + guint32 segment_type; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb, NULL); @@ -26502,13 +27074,14 @@ dissect_nbap_IB_SG_DATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, if(!parameter_tvb) return offset; + segment_type = private_data_get_segment_type(actx->pinfo); if((segment_type == 5 /*complete-SIB */)||(segment_type == 6 /*complete-SIB-short */)){ subtree = proto_item_add_subtree(actx->created_item, ett_nbap_ib_sg_data); }else{ return offset; } - switch(ib_type){ + switch(private_data_get_ib_type(actx->pinfo)){ case 0: /* mIB */ dissect_rrc_MasterInformationBlock_PDU(parameter_tvb, actx->pinfo, subtree, NULL); @@ -26626,10 +27199,12 @@ static const value_string nbap_IB_Type_vals[] = { static int dissect_nbap_IB_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 605 "./asn1/nbap/nbap.cnf" +#line 601 "./asn1/nbap/nbap.cnf" + guint32 ib_type; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 26, &ib_type, TRUE, 15, NULL); + private_data_set_ib_type(actx->pinfo, ib_type); @@ -28217,29 +28792,31 @@ dissect_nbap_NI_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_nbap_NodeB_CommunicationContextID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 2186 "./asn1/nbap/nbap.cnf" +#line 2323 "./asn1/nbap/nbap.cnf" + guint node_b_com_context_id; /*Set up and map that maps Node-B ids to CRNC ids, since often you only have one of them present in nbap*/ -nbap_com_context_id_t *cur_val; + nbap_com_context_id_t *cur_val; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 1048575U, &node_b_com_context_id, FALSE); - if (actx->pinfo->fd->flags.visited){ - return offset; - } + private_data_set_node_b_com_context_id(actx->pinfo, node_b_com_context_id); + if (actx->pinfo->fd->flags.visited){ + return offset; + } - /*If both are avaible we can update the map*/ -if(crcn_context_present){ - if( wmem_tree_lookup32(com_context_map, node_b_com_context_id) == NULL ){ + /*If both are avaible we can update the map*/ + if(private_data_get_crnc_context_present(actx->pinfo)){ + if( wmem_tree_lookup32(com_context_map, node_b_com_context_id) == NULL ){ - cur_val = wmem_new(wmem_file_scope(), nbap_com_context_id_t); - cur_val->crnc_context = com_context_id; - cur_val->frame_num = actx->pinfo->num; - wmem_tree_insert32(com_context_map, node_b_com_context_id, cur_val); - com_context_id = -1; - } + cur_val = wmem_new(wmem_file_scope(), nbap_com_context_id_t); + cur_val->crnc_context = private_data_get_com_context_id(actx->pinfo); + cur_val->frame_num = actx->pinfo->num; + wmem_tree_insert32(com_context_map, node_b_com_context_id, cur_val); + private_data_set_com_context_id(actx->pinfo, -1); } + } @@ -28782,11 +29359,11 @@ dissect_nbap_RACH_SubChannelNumbers(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ static int 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 1181 "./asn1/nbap/nbap.cnf" +#line 1256 "./asn1/nbap/nbap.cnf" offset = dissect_nbap_DCH_ID(tvb, offset, actx, tree, hf_index); - dch_id = t_dch_id; + private_data_set_dch_id(actx->pinfo, private_data_get_t_dch_id(actx->pinfo)); @@ -28804,27 +29381,34 @@ 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 1186 "./asn1/nbap/nbap.cnf" +#line 1261 "./asn1/nbap/nbap.cnf" address dst_addr, null_addr; conversation_t *conversation = NULL; umts_fp_conversation_info_t *umts_fp_conversation_info; int i, j, num_tf; +guint32 transportLayerAddress_ipv4; +guint16 bindingID; +guint32 dch_id; +nbap_dch_channel_info_t* nbap_dch_chnl_info; +nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); -transportLayerAddress_ipv4 = 0; -BindingID_port = 0; -dch_id = 0xFFFFFFFF; +private_data_set_transportLayerAddress_ipv4(actx->pinfo, 0); +private_data_set_binding_id_port(actx->pinfo, 0); +private_data_set_dch_id(actx->pinfo, 0xFFFFFFFF); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_RL_Specific_DCH_Info_Item, RL_Specific_DCH_Info_Item_sequence); - if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0) - { + + transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx->pinfo); + bindingID = private_data_get_binding_id_port(actx->pinfo); + if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || bindingID == 0){ return offset; } /*RBS might sometimes send a nonsens bind, to indicate that no DCH is present*/ - if(BindingID_port == NBAP_IGNORE_PORT){ + if(bindingID == NBAP_IGNORE_PORT){ return offset; } @@ -28833,13 +29417,13 @@ dch_id = 0xFFFFFFFF; set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); conversation = find_conversation(actx->pinfo->num,&dst_addr, - &null_addr, PT_UDP, BindingID_port, + &null_addr, PT_UDP,private_data_get_binding_id_port(actx->pinfo), 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->num, &dst_addr, - &null_addr, PT_UDP,BindingID_port , + &null_addr, PT_UDP,private_data_get_binding_id_port(actx->pinfo), 0, NO_ADDR2|NO_PORT2); /* Set dissector */ @@ -28854,19 +29438,20 @@ dch_id = 0xFFFFFFFF; umts_fp_conversation_info->dl_frame_number = 0; umts_fp_conversation_info->ul_frame_number = actx->pinfo->num; copy_address_wmem(wmem_file_scope(), &(umts_fp_conversation_info->crnc_address), &dst_addr); - umts_fp_conversation_info->crnc_port = BindingID_port; - umts_fp_conversation_info->scrambling_code = ul_scrambling_code; + umts_fp_conversation_info->crnc_port = bindingID; + umts_fp_conversation_info->scrambling_code = private_data_get_ul_scrambling_code(actx->pinfo); umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN; /* DCH's in this flow */ - umts_fp_conversation_info->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present; + umts_fp_conversation_info->dch_crc_present = private_data_get_dch_crc_present(actx->pinfo); /*Save unique UE-identifier */ - umts_fp_conversation_info->com_context_id = com_context_id; + umts_fp_conversation_info->com_context_id = private_data_get_com_context_id(actx->pinfo); /*UPLINK*/ /* Set data for First or single channel */ - umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[dch_id].num_ul_chans; + dch_id = private_data_get_dch_id(actx->pinfo); + umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[private_data_get_dch_id(actx->pinfo)].num_ul_chans; for (j = 0; j < num_tf; j++) { umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[dch_id].ul_chan_tf_size[j]; umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[dch_id].ul_chan_num_tbs[j]; @@ -28949,23 +29534,29 @@ 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 1301 "./asn1/nbap/nbap.cnf" +#line 1384 "./asn1/nbap/nbap.cnf" address dst_addr, null_addr; conversation_t *conversation; umts_fp_conversation_info_t *umts_fp_conversation_info = NULL; fp_edch_channel_info_t* fp_edch_channel_info; nbap_edch_port_info_t *old_info = NULL; +guint32 transportLayerAddress_ipv4; +guint16 bindingID; +guint32 e_dch_macdflow_id; +nbap_edch_channel_info_t* nbap_edch_channel_info; +nbap_edch_channel_info = private_data_get_nbap_edch_channel_info(actx->pinfo); -transportLayerAddress_ipv4 = 0; -BindingID_port = 0; +private_data_set_transportLayerAddress_ipv4(actx->pinfo, 0); +private_data_set_binding_id_port(actx->pinfo, 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) - { + transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx->pinfo); + bindingID = private_data_get_binding_id_port(actx->pinfo); + if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || bindingID == 0){ return offset; } clear_address(&null_addr); @@ -28973,7 +29564,7 @@ BindingID_port = 0; set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); conversation = find_conversation(actx->pinfo->num,&dst_addr, - &null_addr, PT_UDP, BindingID_port, + &null_addr, PT_UDP, bindingID, 0, NO_ADDR_B|NO_PORT_B); if (conversation) { umts_fp_conversation_info = (umts_fp_conversation_info_t*)conversation_get_proto_data(conversation, proto_fp); @@ -28988,7 +29579,7 @@ BindingID_port = 0; /* It's not part of any conversation - create a new one. */ conversation = conversation_new(actx->pinfo->num, &dst_addr, - &null_addr, PT_UDP,BindingID_port , + &null_addr, PT_UDP, bindingID, 0, NO_ADDR2|NO_PORT2); /* Set dissector */ @@ -29002,7 +29593,7 @@ BindingID_port = 0; umts_fp_conversation_info->dl_frame_number = 0; umts_fp_conversation_info->ul_frame_number = actx->pinfo->num; copy_address_wmem(wmem_file_scope(), &(umts_fp_conversation_info->crnc_address), &dst_addr); - umts_fp_conversation_info->crnc_port = BindingID_port; + umts_fp_conversation_info->crnc_port = bindingID; umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN; @@ -29010,11 +29601,11 @@ BindingID_port = 0; fp_edch_channel_info = wmem_new0(wmem_file_scope(), fp_edch_channel_info_t); umts_fp_conversation_info->channel_specific_info = (void*)fp_edch_channel_info; - if(crcn_context_present){ - umts_fp_conversation_info->com_context_id = com_context_id; + if(private_data_get_crnc_context_present(actx->pinfo)){ + umts_fp_conversation_info->com_context_id = private_data_get_com_context_id(actx->pinfo); }else{ nbap_com_context_id_t *cur_val; - if((cur_val=(nbap_com_context_id_t *)wmem_tree_lookup32(com_context_map, node_b_com_context_id)) != NULL){ + if((cur_val=(nbap_com_context_id_t *)wmem_tree_lookup32(com_context_map,private_data_get_node_b_com_context_id(actx->pinfo))) != NULL){ umts_fp_conversation_info->com_context_id = cur_val->crnc_context; }else{ expert_add_info(actx->pinfo, NULL, &ei_nbap_no_set_comm_context_id); @@ -29023,41 +29614,38 @@ BindingID_port = 0; /* Check if we allready have this context */ - if( (old_info = (nbap_edch_port_info_t *)wmem_tree_lookup32(edch_flow_port_map, com_context_id)) == NULL ){ + e_dch_macdflow_id = private_data_get_e_dch_macdflow_id(actx->pinfo); + if( (old_info = (nbap_edch_port_info_t *)wmem_tree_lookup32(edch_flow_port_map,private_data_get_com_context_id(actx->pinfo))) == NULL ){ nbap_edch_port_info_t * nbap_edch_port_info; nbap_edch_port_info = wmem_new0(wmem_file_scope(), nbap_edch_port_info_t); /*Saving port/flow map based on context id for future reconfigurations*/ - nbap_edch_port_info->crnc_port[e_dch_macdflow_id] = BindingID_port; + nbap_edch_port_info->crnc_port[e_dch_macdflow_id] = bindingID; /*Ip address might be useful as well*/ - nbap_edch_port_info->crnc_address = transportLayerAddress_ipv4; + nbap_edch_port_info->crnc_address = private_data_get_transportLayerAddress_ipv4(actx->pinfo); nbap_debug("Frame %u RL-Specific-E-DCH-Information-Item Start", actx->pinfo->num); nbap_debug(" wmem_tree_insert32(edch_flow_port_map) com_context_id %u e_dch_macdflow_id %u IP %s Port %u", - umts_fp_conversation_info->com_context_id, - e_dch_macdflow_id, - address_to_str(wmem_packet_scope(), &dst_addr), - BindingID_port); + umts_fp_conversation_info->com_context_id,e_dch_macdflow_id, + address_to_str(wmem_packet_scope(), &dst_addr),bindingID); wmem_tree_insert32(edch_flow_port_map, umts_fp_conversation_info->com_context_id, nbap_edch_port_info); }else{ nbap_debug(" Insert in existing edch_flow_port_map com_context_id %u e_dch_macdflow_id %u IP %s Port %u", - umts_fp_conversation_info->com_context_id, - e_dch_macdflow_id, - address_to_str(wmem_packet_scope(), &dst_addr), - BindingID_port); + umts_fp_conversation_info->com_context_id,e_dch_macdflow_id, + address_to_str(wmem_packet_scope(), &dst_addr), bindingID); /* Must be same ADDRESS */ - old_info->crnc_port[e_dch_macdflow_id] = BindingID_port; + old_info->crnc_port[e_dch_macdflow_id] = bindingID; } /* Set address for collection of DDI entries */ copy_address(&(nbap_edch_channel_info[e_dch_macdflow_id].crnc_address),&dst_addr); - nbap_edch_channel_info[e_dch_macdflow_id].crnc_port = BindingID_port; + nbap_edch_channel_info[e_dch_macdflow_id].crnc_port = bindingID; set_umts_fp_conv_data(conversation, umts_fp_conversation_info); @@ -29996,10 +30584,12 @@ static const value_string nbap_Segment_Type_vals[] = { static int dissect_nbap_Segment_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 608 "./asn1/nbap/nbap.cnf" +#line 606 "./asn1/nbap/nbap.cnf" + guint32 segment_type; offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 7, &segment_type, TRUE, 0, NULL); + private_data_set_segment_type(actx->pinfo, segment_type); @@ -32329,7 +32919,7 @@ static const per_sequence_t CommonTransportChannelSetupRequestFDD_sequence[] = { static int dissect_nbap_CommonTransportChannelSetupRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 153 "./asn1/nbap/nbap.cnf" +#line 162 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonTransportChannelSetupRequest(FDD) "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -32519,32 +33109,39 @@ static const per_sequence_t FACH_ParametersItem_CTCH_SetupRqstFDD_sequence[] = { static int dissect_nbap_FACH_ParametersItem_CTCH_SetupRqstFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 985 "./asn1/nbap/nbap.cnf" +#line 1022 "./asn1/nbap/nbap.cnf" address dst_addr, null_addr; conversation_t *conversation; fp_fach_channel_info_t* fp_fach_channel_info; umts_fp_conversation_info_t *umts_fp_conversation_info; int i, j, num_tf; +guint32 transportLayerAddress_ipv4; +guint16 bindingID; +guint32 common_physical_channel_id; +nbap_dch_channel_info_t* nbap_dch_chnl_info; +nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); + +private_data_set_transportLayerAddress_ipv4(actx->pinfo, 0); +private_data_set_binding_id_port(actx->pinfo, 0); -transportLayerAddress_ipv4 = 0; -BindingID_port = 0; -transportFormatSet_type = NBAP_CPCH; +private_data_set_transport_format_set_type(actx->pinfo, NBAP_CPCH); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_FACH_ParametersItem_CTCH_SetupRqstFDD, FACH_ParametersItem_CTCH_SetupRqstFDD_sequence); - if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0) - { + transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx->pinfo); + bindingID = private_data_get_binding_id_port(actx->pinfo); + if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || bindingID == 0){ return offset; } clear_address(&null_addr); set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); - conversation = conversation_new(actx->pinfo->num, &dst_addr, &null_addr, PT_UDP,BindingID_port, 0, NO_ADDR2|NO_PORT2); + conversation = conversation_new(actx->pinfo->num, &dst_addr, &null_addr, PT_UDP, bindingID, 0, NO_ADDR2|NO_PORT2); /* Set dissector */ conversation_set_dissector(conversation, fp_handle); @@ -32558,10 +33155,10 @@ transportFormatSet_type = NBAP_CPCH; umts_fp_conversation_info->dl_frame_number = 0; umts_fp_conversation_info->ul_frame_number = actx->pinfo->num; copy_address_wmem(wmem_file_scope(), &(umts_fp_conversation_info->crnc_address), &dst_addr); - umts_fp_conversation_info->crnc_port = BindingID_port; + umts_fp_conversation_info->crnc_port = bindingID; umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN; /*Save unique UE-identifier */ - umts_fp_conversation_info->com_context_id = crcn_context_present ? com_context_id : 1; + umts_fp_conversation_info->com_context_id = private_data_get_crnc_context_present(actx->pinfo) ? private_data_get_com_context_id(actx->pinfo) : 1; /* Adding the 'channel specific info' for FACH */ fp_fach_channel_info = wmem_new0(wmem_file_scope(), fp_fach_channel_info_t); @@ -32569,24 +33166,25 @@ transportFormatSet_type = NBAP_CPCH; umts_fp_conversation_info->channel_specific_info = (void*)fp_fach_channel_info; /* DCH's in this flow */ - umts_fp_conversation_info->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present; + umts_fp_conversation_info->dch_crc_present = private_data_get_dch_crc_present(actx->pinfo); /* Set data for First or single channel */ - umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[commonphysicalchannelid].num_ul_chans; + common_physical_channel_id = private_data_get_common_physical_channel_id(actx->pinfo); + umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[common_physical_channel_id].num_ul_chans; for (j = 0; j < num_tf; j++) { - umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_tf_size[j]; - umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_num_tbs[j]; + umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[common_physical_channel_id].ul_chan_tf_size[j]; + umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[common_physical_channel_id].ul_chan_num_tbs[j]; } /* Traffic flows per DCH(DL) */ - umts_fp_conversation_info->fp_dch_channel_info[0].num_dl_chans = num_tf = nbap_dch_chnl_info[commonphysicalchannelid].num_dl_chans; + umts_fp_conversation_info->fp_dch_channel_info[0].num_dl_chans = num_tf = nbap_dch_chnl_info[common_physical_channel_id].num_dl_chans; for (j = 0; j < num_tf; j++) { - umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_tf_size[j] = nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_tf_size[j]; - umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_num_tbs[j] = nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_num_tbs[j]; + umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_tf_size[j] = nbap_dch_chnl_info[common_physical_channel_id].dl_chan_tf_size[j]; + umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_num_tbs[j] = nbap_dch_chnl_info[common_physical_channel_id].dl_chan_num_tbs[j]; } /* Set data for associated DCH's if we have any */ - i = commonphysicalchannelid; - umts_fp_conversation_info->dch_ids_in_flow_list[0] = commonphysicalchannelid; + i = common_physical_channel_id; + umts_fp_conversation_info->dch_ids_in_flow_list[0] = common_physical_channel_id; while(nbap_dch_chnl_info[i].next_dch != 0){ i = nbap_dch_chnl_info[i].next_dch; umts_fp_conversation_info->num_dch_in_flow++; @@ -32610,7 +33208,7 @@ transportFormatSet_type = NBAP_CPCH; set_umts_fp_conv_data(conversation, umts_fp_conversation_info); /* Add Setup Conversation to list, we need it in response msg */ - add_setup_conv(TransactionID, ddMode, commontransportchannelid, actx->pinfo->num, &dst_addr, BindingID_port, umts_fp_conversation_info, conversation); + add_setup_conv(private_data_get_transaction_id(actx->pinfo),private_data_get_dd_mode(actx->pinfo),private_data_get_common_transport_channel_id(actx->pinfo), actx->pinfo->num, &dst_addr, bindingID, umts_fp_conversation_info, conversation); } @@ -32636,10 +33234,12 @@ dissect_nbap_FACH_ParametersListIE_CTCH_SetupRqstFDD(tvbuff_t *tvb _U_, int offs static int dissect_nbap_T_transportFormatSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 1103 "./asn1/nbap/nbap.cnf" - transportFormatSet_type = NBAP_PCH; - nbap_dch_chnl_info[commontransportchannelid].num_dl_chans = 0; - nbap_dch_chnl_info[commontransportchannelid].num_ul_chans = 0; +#line 1156 "./asn1/nbap/nbap.cnf" + nbap_dch_channel_info_t* nbap_dch_chnl_info; + nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); + private_data_set_transport_format_set_type(actx->pinfo, NBAP_PCH); + nbap_dch_chnl_info[private_data_get_common_transport_channel_id(actx->pinfo)].num_dl_chans = 0; + nbap_dch_chnl_info[private_data_get_common_transport_channel_id(actx->pinfo)].num_ul_chans = 0; @@ -32681,7 +33281,7 @@ static const per_sequence_t PCH_ParametersItem_CTCH_SetupRqstFDD_sequence[] = { static int dissect_nbap_PCH_ParametersItem_CTCH_SetupRqstFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 881 "./asn1/nbap/nbap.cnf" +#line 911 "./asn1/nbap/nbap.cnf" address dst_addr, null_addr; conversation_t *conversation; @@ -32689,26 +33289,32 @@ conversation_t *conversation; fp_pch_channel_info_t *fp_pch_channel_info; umts_fp_conversation_info_t *umts_fp_conversation_info; int i, j, num_tf; +guint32 transportLayerAddress_ipv4; +guint16 bindingID; +guint32 common_transport_channel_id; +nbap_dch_channel_info_t* nbap_dch_chnl_info; +nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); -transportLayerAddress_ipv4 = 0; -BindingID_port = 0; +private_data_set_transportLayerAddress_ipv4(actx->pinfo, 0); +private_data_set_binding_id_port(actx->pinfo, 0); /* There can only be one item, set num_items here to collect the TransportFormatSet data */ -num_items = 1; +private_data_set_num_items(actx->pinfo, 1); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_PCH_ParametersItem_CTCH_SetupRqstFDD, PCH_ParametersItem_CTCH_SetupRqstFDD_sequence); - if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0) - { + transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx->pinfo); + bindingID = private_data_get_binding_id_port(actx->pinfo); + if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || bindingID == 0){ return offset; } clear_address(&null_addr); set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); - conversation = conversation_new(actx->pinfo->num, &dst_addr, &null_addr, PT_UDP,BindingID_port, 0, NO_ADDR2|NO_PORT2); + conversation = conversation_new(actx->pinfo->num, &dst_addr, &null_addr, PT_UDP, bindingID, 0, NO_ADDR2|NO_PORT2); /* Set dissector */ conversation_set_dissector(conversation, fp_handle); @@ -32722,40 +33328,41 @@ num_items = 1; umts_fp_conversation_info->dl_frame_number = 0; umts_fp_conversation_info->ul_frame_number = actx->pinfo->num; copy_address_wmem(wmem_file_scope(), &(umts_fp_conversation_info->crnc_address), &dst_addr); - umts_fp_conversation_info->crnc_port = BindingID_port; + umts_fp_conversation_info->crnc_port = bindingID; umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN; fp_pch_channel_info = wmem_new0(wmem_file_scope(), fp_pch_channel_info_t); - fp_pch_channel_info->paging_indications = paging_indications; + fp_pch_channel_info->paging_indications = private_data_get_paging_indications(actx->pinfo); umts_fp_conversation_info->channel_specific_info = (void*)fp_pch_channel_info; /* DCH's in this flow */ - umts_fp_conversation_info->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present; + umts_fp_conversation_info->dch_crc_present = private_data_get_dch_crc_present(actx->pinfo); /* Set data for First or single channel */ - umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[commontransportchannelid].num_ul_chans; + common_transport_channel_id = private_data_get_common_transport_channel_id(actx->pinfo); + umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[common_transport_channel_id].num_ul_chans; nbap_debug("Frame %u PCH-ParametersItem-CTCH-SetupRqstFDD Start: num_tf %u", actx->pinfo->num, num_tf); for (j = 0; j < num_tf; j++) { - umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[commontransportchannelid].ul_chan_tf_size[j]; - umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[commontransportchannelid].ul_chan_num_tbs[j]; - nbap_debug(" UL tf %u ul_chan_tf_size %u",j, nbap_dch_chnl_info[commontransportchannelid].ul_chan_tf_size[j]); + umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[common_transport_channel_id].ul_chan_tf_size[j]; + umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[common_transport_channel_id].ul_chan_num_tbs[j]; + nbap_debug(" UL tf %u ul_chan_tf_size %u",j, nbap_dch_chnl_info[common_transport_channel_id].ul_chan_tf_size[j]); } /* Traffic flows per DCH(DL) */ - umts_fp_conversation_info->fp_dch_channel_info[0].num_dl_chans = num_tf = nbap_dch_chnl_info[commontransportchannelid].num_dl_chans; + umts_fp_conversation_info->fp_dch_channel_info[0].num_dl_chans = num_tf = nbap_dch_chnl_info[common_transport_channel_id].num_dl_chans; for (j = 0; j < num_tf; j++) { - umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_tf_size[j] = nbap_dch_chnl_info[commontransportchannelid].dl_chan_tf_size[j]; - umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_num_tbs[j] = nbap_dch_chnl_info[commontransportchannelid].dl_chan_num_tbs[j]; - nbap_debug(" DL tf %u ul_chan_tf_size %u",j, nbap_dch_chnl_info[commontransportchannelid].dl_chan_tf_size[j]); + umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_tf_size[j] = nbap_dch_chnl_info[common_transport_channel_id].dl_chan_tf_size[j]; + umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_num_tbs[j] = nbap_dch_chnl_info[common_transport_channel_id].dl_chan_num_tbs[j]; + nbap_debug(" DL tf %u ul_chan_tf_size %u",j, nbap_dch_chnl_info[common_transport_channel_id].dl_chan_tf_size[j]); } /* Set data for associated DCH's if we have any */ - i = commontransportchannelid; + i = common_transport_channel_id; - nbap_debug(" commontransportchannelid %u next ch %u",commontransportchannelid, nbap_dch_chnl_info[i].next_dch); + nbap_debug(" commontransportchannelid %u next ch %u",common_transport_channel_id, nbap_dch_chnl_info[i].next_dch); - umts_fp_conversation_info->dch_ids_in_flow_list[0] = commontransportchannelid; + umts_fp_conversation_info->dch_ids_in_flow_list[0] = common_transport_channel_id; while(nbap_dch_chnl_info[i].next_dch != 0){ i = nbap_dch_chnl_info[i].next_dch; umts_fp_conversation_info->num_dch_in_flow++; @@ -32782,7 +33389,7 @@ num_items = 1; set_umts_fp_conv_data(conversation, umts_fp_conversation_info); /* Add Setup Conversation to list, we need it in response msg */ - add_setup_conv(TransactionID, ddMode, commontransportchannelid, actx->pinfo->num, &dst_addr, BindingID_port, umts_fp_conversation_info, conversation); + add_setup_conv(private_data_get_transaction_id(actx->pinfo), private_data_get_dd_mode(actx->pinfo), common_transport_channel_id, actx->pinfo->num, &dst_addr, bindingID, umts_fp_conversation_info, conversation); nbap_debug("Frame %u PCH-ParametersItem-CTCH-SetupRqstFDD End", actx->pinfo->num); } @@ -32821,30 +33428,37 @@ 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 790 "./asn1/nbap/nbap.cnf" +#line 812 "./asn1/nbap/nbap.cnf" address dst_addr, null_addr; conversation_t *conversation; fp_rach_channel_info_t* fp_rach_channel_info; umts_fp_conversation_info_t *umts_fp_conversation_info; int j, num_tf; +guint32 transportLayerAddress_ipv4; +guint16 bindingID; +guint32 common_physical_channel_id; +nbap_dch_channel_info_t* nbap_dch_chnl_info; +nbap_dch_chnl_info = private_data_get_nbap_dch_chnl_info(actx->pinfo); -transportLayerAddress_ipv4 = 0; -BindingID_port = 0; -transportFormatSet_type = NBAP_CPCH; +private_data_set_transportLayerAddress_ipv4(actx->pinfo, 0); +private_data_set_binding_id_port(actx->pinfo, 0); +private_data_set_transport_format_set_type(actx->pinfo, NBAP_CPCH); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_RACH_ParametersItem_CTCH_SetupRqstFDD, RACH_ParametersItem_CTCH_SetupRqstFDD_sequence); - if (actx->pinfo->fd->flags.visited||transportLayerAddress_ipv4==0||BindingID_port == 0) - { + + transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx->pinfo); + bindingID = private_data_get_binding_id_port(actx->pinfo); + if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || bindingID == 0){ return offset; } clear_address(&null_addr); set_address(&dst_addr, AT_IPv4, 4, &transportLayerAddress_ipv4); - conversation = conversation_new(actx->pinfo->num, &dst_addr, &null_addr, PT_UDP,BindingID_port, 0, NO_ADDR2|NO_PORT2); + conversation = conversation_new(actx->pinfo->num, &dst_addr, &null_addr, PT_UDP, bindingID, 0, NO_ADDR2|NO_PORT2); conversation_set_dissector(conversation, fp_handle); @@ -32857,7 +33471,7 @@ transportFormatSet_type = NBAP_CPCH; umts_fp_conversation_info->dl_frame_number = 0; umts_fp_conversation_info->ul_frame_number = actx->pinfo->num; copy_address_wmem(wmem_file_scope(), &(umts_fp_conversation_info->crnc_address), &dst_addr); - umts_fp_conversation_info->crnc_port = BindingID_port; + umts_fp_conversation_info->crnc_port = bindingID; umts_fp_conversation_info->rlc_mode = FP_RLC_MODE_UNKNOWN; /* Adding the 'channel specific info' for RACH */ @@ -32867,30 +33481,31 @@ transportFormatSet_type = NBAP_CPCH; /*Save unique UE-identifier */ - umts_fp_conversation_info->com_context_id = crcn_context_present ? com_context_id : 1; + umts_fp_conversation_info->com_context_id = private_data_get_crnc_context_present(actx->pinfo) ? private_data_get_com_context_id(actx->pinfo) : 1; /* DCH's in this flow */ - umts_fp_conversation_info->dch_crc_present = g_nbap_msg_info_for_fp.dch_crc_present; + umts_fp_conversation_info->dch_crc_present = private_data_get_dch_crc_present(actx->pinfo); /* Set data for First or single channel */ - umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[commonphysicalchannelid].num_ul_chans; + common_physical_channel_id = private_data_get_common_physical_channel_id(actx->pinfo); + umts_fp_conversation_info->fp_dch_channel_info[0].num_ul_chans = num_tf = nbap_dch_chnl_info[common_physical_channel_id].num_ul_chans; for (j = 0; j < num_tf; j++) { - umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_tf_size[j]; - umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[commonphysicalchannelid].ul_chan_num_tbs[j]; + umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_tf_size[j] = nbap_dch_chnl_info[common_physical_channel_id].ul_chan_tf_size[j]; + umts_fp_conversation_info->fp_dch_channel_info[0].ul_chan_num_tbs[j] = nbap_dch_chnl_info[common_physical_channel_id].ul_chan_num_tbs[j]; } /* Traffic flows per DCH(DL) */ - umts_fp_conversation_info->fp_dch_channel_info[0].num_dl_chans = num_tf = nbap_dch_chnl_info[commonphysicalchannelid].num_dl_chans; + umts_fp_conversation_info->fp_dch_channel_info[0].num_dl_chans = num_tf = nbap_dch_chnl_info[common_physical_channel_id].num_dl_chans; for (j = 0; j < num_tf; j++) { - umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_tf_size[j] = nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_tf_size[j]; - umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_num_tbs[j] = nbap_dch_chnl_info[commonphysicalchannelid].dl_chan_num_tbs[j]; + umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_tf_size[j] = nbap_dch_chnl_info[common_physical_channel_id].dl_chan_tf_size[j]; + umts_fp_conversation_info->fp_dch_channel_info[0].dl_chan_num_tbs[j] = nbap_dch_chnl_info[common_physical_channel_id].dl_chan_num_tbs[j]; } - umts_fp_conversation_info->dch_ids_in_flow_list[0] = commonphysicalchannelid; + umts_fp_conversation_info->dch_ids_in_flow_list[0] = common_physical_channel_id; umts_fp_conversation_info->num_dch_in_flow=1; set_umts_fp_conv_data(conversation, umts_fp_conversation_info); /* Add Setup Conversation to list, we need it in response msg */ - add_setup_conv(TransactionID, ddMode, commontransportchannelid, actx->pinfo->num, &dst_addr, BindingID_port, umts_fp_conversation_info, conversation); + add_setup_conv(private_data_get_transaction_id(actx->pinfo),private_data_get_dd_mode(actx->pinfo),private_data_get_common_transport_channel_id(actx->pinfo), actx->pinfo->num, &dst_addr, bindingID, umts_fp_conversation_info, conversation); } @@ -33602,7 +34217,7 @@ static const per_sequence_t CommonTransportChannelSetupResponse_sequence[] = { static int dissect_nbap_CommonTransportChannelSetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 159 "./asn1/nbap/nbap.cnf" +#line 168 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonTransportChannelSetupResponse "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -33637,7 +34252,7 @@ static const per_sequence_t CommonTransportChannelSetupFailure_sequence[] = { static int dissect_nbap_CommonTransportChannelSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 165 "./asn1/nbap/nbap.cnf" +#line 174 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonTransportChannelSetupFailure "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -34356,7 +34971,7 @@ static const per_sequence_t UnblockResourceIndication_sequence[] = { static int dissect_nbap_UnblockResourceIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 563 "./asn1/nbap/nbap.cnf" +#line 559 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"UnblockResourceIndication "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -34377,7 +34992,7 @@ static const per_sequence_t AuditRequiredIndication_sequence[] = { static int dissect_nbap_AuditRequiredIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 467 "./asn1/nbap/nbap.cnf" +#line 463 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"AuditRequiredIndication "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -34398,7 +35013,7 @@ static const per_sequence_t AuditRequest_sequence[] = { static int dissect_nbap_AuditRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 220 "./asn1/nbap/nbap.cnf" +#line 233 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"AuditRequest "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -34419,7 +35034,7 @@ static const per_sequence_t AuditResponse_sequence[] = { static int dissect_nbap_AuditResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 226 "./asn1/nbap/nbap.cnf" +#line 239 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"AuditResponse "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -35013,7 +35628,7 @@ static const per_sequence_t AuditFailure_sequence[] = { static int dissect_nbap_AuditFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 232 "./asn1/nbap/nbap.cnf" +#line 245 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"AuditFailure "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -35035,7 +35650,7 @@ static const per_sequence_t CommonMeasurementInitiationRequest_sequence[] = { static int dissect_nbap_CommonMeasurementInitiationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 300 "./asn1/nbap/nbap.cnf" +#line 301 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementInitiationRequest "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -35153,7 +35768,7 @@ static const per_sequence_t CommonMeasurementInitiationResponse_sequence[] = { static int dissect_nbap_CommonMeasurementInitiationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 306 "./asn1/nbap/nbap.cnf" +#line 307 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementInitiationResponse "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -35269,7 +35884,7 @@ static const per_sequence_t CommonMeasurementInitiationFailure_sequence[] = { static int dissect_nbap_CommonMeasurementInitiationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 312 "./asn1/nbap/nbap.cnf" +#line 313 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementInitiationFailure "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -35290,7 +35905,7 @@ static const per_sequence_t CommonMeasurementReport_sequence[] = { static int dissect_nbap_CommonMeasurementReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 473 "./asn1/nbap/nbap.cnf" +#line 469 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementReport "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -35406,7 +36021,7 @@ static const per_sequence_t CommonMeasurementTerminationRequest_sequence[] = { static int dissect_nbap_CommonMeasurementTerminationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 479 "./asn1/nbap/nbap.cnf" +#line 475 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementTerminationRequest "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -35427,7 +36042,7 @@ static const per_sequence_t CommonMeasurementFailureIndication_sequence[] = { static int dissect_nbap_CommonMeasurementFailureIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 485 "./asn1/nbap/nbap.cnf" +#line 481 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonMeasurementFailureIndication "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -35448,7 +36063,7 @@ static const per_sequence_t CellSetupRequestFDD_sequence[] = { static int dissect_nbap_CellSetupRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 125 "./asn1/nbap/nbap.cnf" +#line 134 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CellSetupRequest(FDD) "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -35980,7 +36595,7 @@ static const per_sequence_t CellSetupResponse_sequence[] = { static int dissect_nbap_CellSetupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 131 "./asn1/nbap/nbap.cnf" +#line 140 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CellSetupResponse "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -36001,7 +36616,7 @@ static const per_sequence_t CellSetupFailure_sequence[] = { static int dissect_nbap_CellSetupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 137 "./asn1/nbap/nbap.cnf" +#line 146 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CellSetupFailure "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -36544,7 +37159,7 @@ static const per_sequence_t ResourceStatusIndication_sequence[] = { static int dissect_nbap_ResourceStatusIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 461 "./asn1/nbap/nbap.cnf" +#line 457 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"ResourceStatusIndication "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -37302,7 +37917,7 @@ static const per_sequence_t SystemInformationUpdateRequest_sequence[] = { static int dissect_nbap_SystemInformationUpdateRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 279 "./asn1/nbap/nbap.cnf" +#line 280 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"SystemInformationUpdateRequest "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -37375,8 +37990,8 @@ static int dissect_nbap_MIB_SB_SIB_InformationItem_SystemInfoUpdateRqst(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 611 "./asn1/nbap/nbap.cnf" - ib_type = 10; /* not-Used-sIB8 */ - segment_type = 0; + private_data_set_ib_type(actx->pinfo, 10); /* not-Used-sIB8 */ + private_data_set_segment_type(actx->pinfo, 0); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nbap_MIB_SB_SIB_InformationItem_SystemInfoUpdateRqst, MIB_SB_SIB_InformationItem_SystemInfoUpdateRqst_sequence); @@ -37441,7 +38056,7 @@ static const per_sequence_t SystemInformationUpdateResponse_sequence[] = { static int dissect_nbap_SystemInformationUpdateResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 285 "./asn1/nbap/nbap.cnf" +#line 286 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"SystemInformationUpdateResponse "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -37462,7 +38077,7 @@ static const per_sequence_t SystemInformationUpdateFailure_sequence[] = { static int dissect_nbap_SystemInformationUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 291 "./asn1/nbap/nbap.cnf" +#line 292 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"SystemInformationUpdateFailure "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -37484,13 +38099,7 @@ static const per_sequence_t RadioLinkSetupRequestFDD_sequence[] = { static int dissect_nbap_RadioLinkSetupRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 242 "./asn1/nbap/nbap.cnf" - - g_nbap_msg_info_for_fp.ProcedureCode = ProcedureCode; - g_nbap_msg_info_for_fp.ddMode = ddMode; - g_nbap_msg_info_for_fp.is_uplink = TRUE; - g_nbap_msg_info_for_fp.dch_crc_present = 2; /* unknown */ - +#line 255 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkSetupRequest(FDD) "); /* CRNC -> Node B */ @@ -37967,13 +38576,7 @@ static const per_sequence_t RadioLinkSetupResponseFDD_sequence[] = { static int dissect_nbap_RadioLinkSetupResponseFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 255 "./asn1/nbap/nbap.cnf" - - g_nbap_msg_info_for_fp.ProcedureCode = ProcedureCode; - g_nbap_msg_info_for_fp.ddMode = ddMode; - g_nbap_msg_info_for_fp.is_uplink = FALSE; - g_nbap_msg_info_for_fp.dch_crc_present = 2; /* unknown */ - +#line 262 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkSetupResponse(FDD) "); /* Node B -> CRNC */ @@ -38193,7 +38796,7 @@ static const per_sequence_t RadioLinkSetupFailureFDD_sequence[] = { static int dissect_nbap_RadioLinkSetupFailureFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 268 "./asn1/nbap/nbap.cnf" +#line 269 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkSetupFailure(FDD) "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -38478,7 +39081,7 @@ static const per_sequence_t RadioLinkAdditionRequestFDD_sequence[] = { static int dissect_nbap_RadioLinkAdditionRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 318 "./asn1/nbap/nbap.cnf" +#line 319 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkAdditionRequest(FDD) "); @@ -38850,7 +39453,7 @@ static const per_sequence_t RadioLinkAdditionResponseFDD_sequence[] = { static int dissect_nbap_RadioLinkAdditionResponseFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 323 "./asn1/nbap/nbap.cnf" +#line 324 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkAdditionResponse(FDD) "); @@ -39126,7 +39729,7 @@ static const per_sequence_t RadioLinkAdditionFailureFDD_sequence[] = { static int dissect_nbap_RadioLinkAdditionFailureFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 329 "./asn1/nbap/nbap.cnf" +#line 330 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkAdditionRequest(FDD) "); @@ -39411,15 +40014,10 @@ static const per_sequence_t RadioLinkReconfigurationPrepareFDD_sequence[] = { static int dissect_nbap_RadioLinkReconfigurationPrepareFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 356 "./asn1/nbap/nbap.cnf" +#line 357 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationPrepare(FDD) "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; - g_nbap_msg_info_for_fp.ProcedureCode = ProcedureCode; - g_nbap_msg_info_for_fp.ddMode = ddMode; - g_nbap_msg_info_for_fp.is_uplink = TRUE; - g_nbap_msg_info_for_fp.dch_crc_present = 2; /* unknown */ - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -41034,7 +41632,7 @@ static const per_sequence_t RadioLinkReconfigurationReady_sequence[] = { static int dissect_nbap_RadioLinkReconfigurationReady(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 367 "./asn1/nbap/nbap.cnf" +#line 363 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationReady "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -41116,7 +41714,7 @@ static const per_sequence_t RadioLinkReconfigurationFailure_sequence[] = { static int dissect_nbap_RadioLinkReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 374 "./asn1/nbap/nbap.cnf" +#line 370 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationFailure "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -41225,13 +41823,13 @@ static const per_sequence_t RadioLinkReconfigurationCommit_sequence[] = { static int dissect_nbap_RadioLinkReconfigurationCommit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 491 "./asn1/nbap/nbap.cnf" +#line 487 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationCommit "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; -#line 2238 "./asn1/nbap/nbap.cnf" +#line 2381 "./asn1/nbap/nbap.cnf" /* * Here we need to signal the CFN value, down to FP so * that lowert layers know when a reconfiguration becomes active @@ -41255,7 +41853,7 @@ static const per_sequence_t RadioLinkReconfigurationCancel_sequence[] = { static int dissect_nbap_RadioLinkReconfigurationCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 497 "./asn1/nbap/nbap.cnf" +#line 493 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationCancel "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -41276,7 +41874,7 @@ static const per_sequence_t RadioLinkReconfigurationRequestFDD_sequence[] = { static int dissect_nbap_RadioLinkReconfigurationRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 385 "./asn1/nbap/nbap.cnf" +#line 381 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationRequestFDD(FDD) "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -41733,7 +42331,7 @@ static const per_sequence_t RadioLinkReconfigurationResponse_sequence[] = { static int dissect_nbap_RadioLinkReconfigurationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 391 "./asn1/nbap/nbap.cnf" +#line 387 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkReconfigurationResponse "); @@ -41794,7 +42392,7 @@ static const per_sequence_t RadioLinkDeletionRequest_sequence[] = { static int dissect_nbap_RadioLinkDeletionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 342 "./asn1/nbap/nbap.cnf" +#line 343 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkDeletionRequest "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -41845,7 +42443,7 @@ static const per_sequence_t RadioLinkDeletionResponse_sequence[] = { static int dissect_nbap_RadioLinkDeletionResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 349 "./asn1/nbap/nbap.cnf" +#line 350 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkDeletionResponse "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -41867,7 +42465,7 @@ static const per_sequence_t DL_PowerControlRequest_sequence[] = { static int dissect_nbap_DL_PowerControlRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 545 "./asn1/nbap/nbap.cnf" +#line 541 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"DL-PowerControlRequest "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -41918,7 +42516,7 @@ static const per_sequence_t DL_PowerTimeslotControlRequest_sequence[] = { static int dissect_nbap_DL_PowerTimeslotControlRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 551 "./asn1/nbap/nbap.cnf" +#line 547 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"DL-PowerTimeslotControlRequest "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -41939,7 +42537,7 @@ static const per_sequence_t DedicatedMeasurementInitiationRequest_sequence[] = { static int dissect_nbap_DedicatedMeasurementInitiationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 407 "./asn1/nbap/nbap.cnf" +#line 403 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementInitiationRequest "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -42135,7 +42733,7 @@ static const per_sequence_t DedicatedMeasurementInitiationResponse_sequence[] = static int dissect_nbap_DedicatedMeasurementInitiationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 413 "./asn1/nbap/nbap.cnf" +#line 409 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementInitiationResponse "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -42440,7 +43038,7 @@ static const per_sequence_t DedicatedMeasurementInitiationFailure_sequence[] = { static int dissect_nbap_DedicatedMeasurementInitiationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 420 "./asn1/nbap/nbap.cnf" +#line 416 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementInitiationFailure "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -42462,7 +43060,7 @@ static const per_sequence_t DedicatedMeasurementReport_sequence[] = { static int dissect_nbap_DedicatedMeasurementReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 525 "./asn1/nbap/nbap.cnf" +#line 521 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementReport "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -42645,7 +43243,7 @@ static const per_sequence_t DedicatedMeasurementTerminationRequest_sequence[] = static int dissect_nbap_DedicatedMeasurementTerminationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 532 "./asn1/nbap/nbap.cnf" +#line 528 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementTerminationRequest "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -42666,7 +43264,7 @@ static const per_sequence_t DedicatedMeasurementFailureIndication_sequence[] = { static int dissect_nbap_DedicatedMeasurementFailureIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 538 "./asn1/nbap/nbap.cnf" +#line 534 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"DedicatedMeasurementFailureIndication "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -42688,7 +43286,7 @@ static const per_sequence_t RadioLinkFailureIndication_sequence[] = { static int dissect_nbap_RadioLinkFailureIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 503 "./asn1/nbap/nbap.cnf" +#line 499 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkFailureIndication "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -42870,7 +43468,7 @@ static const per_sequence_t RadioLinkPreemptionRequiredIndication_sequence[] = { static int dissect_nbap_RadioLinkPreemptionRequiredIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 510 "./asn1/nbap/nbap.cnf" +#line 506 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkPreemptionRequiredIndication "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -42921,7 +43519,7 @@ static const per_sequence_t RadioLinkRestoreIndication_sequence[] = { static int dissect_nbap_RadioLinkRestoreIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 517 "./asn1/nbap/nbap.cnf" +#line 513 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkRestoreIndication "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -43101,7 +43699,7 @@ static const per_sequence_t CompressedModeCommand_sequence[] = { static int dissect_nbap_CompressedModeCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 557 "./asn1/nbap/nbap.cnf" +#line 553 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"CompressedModeCommand "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -43122,7 +43720,7 @@ static const per_sequence_t ErrorIndication_sequence[] = { static int dissect_nbap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 569 "./asn1/nbap/nbap.cnf" +#line 565 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"ErrorIndication "); @@ -43142,7 +43740,7 @@ static const per_sequence_t PrivateMessage_sequence[] = { static int dissect_nbap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 578 "./asn1/nbap/nbap.cnf" +#line 574 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"PrivateMessage "); @@ -43161,7 +43759,7 @@ static const per_sequence_t PhysicalSharedChannelReconfigurationRequestFDD_seque static int dissect_nbap_PhysicalSharedChannelReconfigurationRequestFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 427 "./asn1/nbap/nbap.cnf" +#line 423 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"PhysicalSharedChannelReconfigurationRequest(FDD) "); /* CRNC -> Node B */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -45629,7 +46227,7 @@ static const per_sequence_t PhysicalSharedChannelReconfigurationResponse_sequenc static int dissect_nbap_PhysicalSharedChannelReconfigurationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 433 "./asn1/nbap/nbap.cnf" +#line 429 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"PhysicalSharedChannelReconfigurationResponse "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -45680,7 +46278,7 @@ static const per_sequence_t PhysicalSharedChannelReconfigurationFailure_sequence static int dissect_nbap_PhysicalSharedChannelReconfigurationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 439 "./asn1/nbap/nbap.cnf" +#line 435 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"PhysicalSharedChannelReconfigurationFailure "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -47133,7 +47731,7 @@ static const per_sequence_t BearerRearrangementIndication_sequence[] = { static int dissect_nbap_BearerRearrangementIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 585 "./asn1/nbap/nbap.cnf" +#line 581 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"BearerRearrangementIndication "); @@ -47435,7 +48033,7 @@ static const per_sequence_t RadioLinkParameterUpdateIndicationFDD_sequence[] = { static int dissect_nbap_RadioLinkParameterUpdateIndicationFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 593 "./asn1/nbap/nbap.cnf" +#line 589 "./asn1/nbap/nbap.cnf" col_set_str(actx->pinfo->cinfo, COL_INFO,"RadioLinkParameterUpdateIndication(FDD) "); /* Node B -> CRNC */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -55330,16 +55928,20 @@ static int dissect_NULL_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tre /*--- End of included file: packet-nbap-fn.c ---*/ -#line 365 "./asn1/nbap/packet-nbap-template.c" +#line 801 "./asn1/nbap/packet-nbap-template.c" static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { - return (dissector_try_uint_new(nbap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree, FALSE, NULL)) ? tvb_captured_length(tvb) : 0; + guint32 protocol_ie_id; + protocol_ie_id = private_data_get_protocol_ie_id(pinfo); + return (dissector_try_uint_new(nbap_ies_dissector_table, protocol_ie_id, tvb, pinfo, tree, FALSE, NULL)) ? tvb_captured_length(tvb) : 0; } static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { - return (dissector_try_uint_new(nbap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree, FALSE, NULL)) ? tvb_captured_length(tvb) : 0; + guint32 protocol_ie_id; + protocol_ie_id = private_data_get_protocol_ie_id(pinfo); + return (dissector_try_uint_new(nbap_extension_dissector_table, protocol_ie_id, tvb, pinfo, tree, FALSE, NULL)) ? tvb_captured_length(tvb) : 0; } static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) @@ -55365,11 +55967,13 @@ static void add_hsdsch_bind(packet_info *pinfo){ umts_fp_conversation_info_t *umts_fp_conversation_info; fp_hsdsch_channel_info_t* fp_hsdsch_channel_info = NULL; guint32 i; + nbap_hsdsch_channel_info_t* nbap_hsdsch_channel_info; if (pinfo->fd->flags.visited){ return; } + nbap_hsdsch_channel_info = private_data_get_nbap_hsdsch_channel_info(pinfo); /* Set port to zero use that as an indication of whether we have data or not */ clear_address(&null_addr); for (i = 0; i < maxNrOfMACdFlows; i++) { @@ -55520,7 +56124,6 @@ dissect_nbap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { proto_item *nbap_item = NULL; proto_tree *nbap_tree = NULL; - int i; /* make entry in the Protocol column on summary display */ col_set_str(pinfo->cinfo, COL_PROTOCOL, "NBAP"); @@ -55528,11 +56131,8 @@ dissect_nbap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) nbap_item = proto_tree_add_item(tree, proto_nbap, tvb, 0, -1, ENC_NA); nbap_tree = proto_item_add_subtree(nbap_item, ett_nbap); - /*Do a little cleanup just as a precaution*/ - for (i = 0; i < maxNrOfMACdFlows; i++) { - nbap_hsdsch_channel_info[i].entity = hs; - } - ul_scrambling_code = 0; + /* Clearing any old 'private data' stored */ + nbap_reset_private_data(pinfo); return dissect_NBAP_PDU_PDU(tvb, pinfo, nbap_tree, data); } @@ -68795,7 +69395,7 @@ void proto_register_nbap(void) NULL, HFILL }}, /*--- End of included file: packet-nbap-hfarr.c ---*/ -#line 665 "./asn1/nbap/packet-nbap-template.c" +#line 1103 "./asn1/nbap/packet-nbap-template.c" }; /* List of subtrees */ @@ -70435,7 +71035,7 @@ void proto_register_nbap(void) &ett_nbap_Outcome, /*--- End of included file: packet-nbap-ettarr.c ---*/ -#line 674 "./asn1/nbap/packet-nbap-template.c" +#line 1112 "./asn1/nbap/packet-nbap-template.c" }; static ei_register_info ei[] = { @@ -71587,6 +72187,6 @@ proto_reg_handoff_nbap(void) /*--- End of included file: packet-nbap-dis-tab.c ---*/ -#line 729 "./asn1/nbap/packet-nbap-template.c" +#line 1167 "./asn1/nbap/packet-nbap-template.c" } |