aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorDarien Spencer <cusneud@mail.com>2017-10-21 17:48:40 +0300
committerAnders Broman <a.broman58@gmail.com>2017-10-26 07:10:03 +0000
commitf97befbaa57ff432958d014b007c909e04cd8ff9 (patch)
tree253362f96919b1ef3fdb0339b30ad7658c644bc4 /epan
parentbfad9c56f9e65eafba00f97e5e649842782eb2e1 (diff)
RANAP: Associate RTP dissector with CS streams
Change-Id: If02b8cc5110c70e50ae04d245c45b1d133ee7fd3 Reviewed-on: https://code.wireshark.org/review/24010 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/asn1/ranap/packet-ranap-template.c66
-rw-r--r--epan/dissectors/asn1/ranap/ranap.cnf40
-rw-r--r--epan/dissectors/packet-ranap.c308
3 files changed, 314 insertions, 100 deletions
diff --git a/epan/dissectors/asn1/ranap/packet-ranap-template.c b/epan/dissectors/asn1/ranap/packet-ranap-template.c
index 68e5f27512..fe48a19ba2 100644
--- a/epan/dissectors/asn1/ranap/packet-ranap-template.c
+++ b/epan/dissectors/asn1/ranap/packet-ranap-template.c
@@ -41,6 +41,7 @@
#include "packet-gsm_a_common.h"
#include "packet-isup.h"
#include "packet-s1ap.h"
+#include "packet-rtp.h"
#ifdef _MSC_VER
/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
@@ -83,6 +84,68 @@ static int ett_ranap_TransportLayerAddress_nsap = -1;
#include "packet-ranap-ett.c"
+/*****************************************************************************/
+/* Packet private data */
+/* For this dissector, all access to actx->private_data should be made */
+/* through this API, which ensures that they will not overwrite each other!! */
+/*****************************************************************************/
+
+
+typedef struct ranap_private_data_t
+{
+ guint32 transportLayerAddress_ipv4;
+ guint16 binding_id_port;
+} ranap_private_data_t;
+
+
+/* Helper function to get or create the private data struct */
+static ranap_private_data_t* ranap_get_private_data(asn1_ctx_t *actx)
+{
+ packet_info *pinfo = actx->pinfo;
+ ranap_private_data_t *private_data = (ranap_private_data_t *)p_get_proto_data(pinfo->pool, pinfo, proto_ranap, 0);
+ if(private_data != NULL ) {
+ return private_data;
+ }
+ else {
+ private_data = wmem_new0(pinfo->pool, ranap_private_data_t);
+ p_add_proto_data(pinfo->pool, pinfo, proto_ranap, 0, private_data);
+ return private_data;
+ }
+}
+
+/* Helper function to reset the the private data struct */
+static void ranap_reset_private_data(packet_info *pinfo)
+{
+ p_remove_proto_data(pinfo->pool, pinfo, proto_ranap, 0);
+}
+
+static guint32 private_data_get_transportLayerAddress_ipv4(asn1_ctx_t *actx)
+{
+ ranap_private_data_t *private_data = (ranap_private_data_t*)ranap_get_private_data(actx);
+ return private_data->transportLayerAddress_ipv4;
+}
+
+static void private_data_set_transportLayerAddress_ipv4(asn1_ctx_t *actx, guint32 transportLayerAddress_ipv4)
+{
+ ranap_private_data_t *private_data = (ranap_private_data_t*)ranap_get_private_data(actx);
+ private_data->transportLayerAddress_ipv4 = transportLayerAddress_ipv4;
+}
+
+static guint16 private_data_get_binding_id_port(asn1_ctx_t *actx)
+{
+ ranap_private_data_t *private_data = (ranap_private_data_t*)ranap_get_private_data(actx);
+ return private_data->binding_id_port;
+}
+
+static void private_data_set_binding_id_port(asn1_ctx_t *actx, guint16 binding_id_port)
+{
+ ranap_private_data_t *private_data = (ranap_private_data_t*)ranap_get_private_data(actx);
+ private_data->binding_id_port = binding_id_port;
+}
+
+/*****************************************************************************/
+
+
/* Global variables */
static guint32 ProcedureCode;
static guint32 ProtocolIE_ID;
@@ -246,6 +309,9 @@ dissect_ranap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
through function calls */
p_add_proto_data(pinfo->pool, pinfo, proto_ranap, pinfo->curr_layer_num, data);
+ /* Clearing any old 'private data' stored */
+ ranap_reset_private_data(pinfo);
+
dissect_RANAP_PDU_PDU(tvb, pinfo, ranap_tree, NULL);
if (sccp_msg_lcl) {
diff --git a/epan/dissectors/asn1/ranap/ranap.cnf b/epan/dissectors/asn1/ranap/ranap.cnf
index e281c7ef0f..cba0bea86f 100644
--- a/epan/dissectors/asn1/ranap/ranap.cnf
+++ b/epan/dissectors/asn1/ranap/ranap.cnf
@@ -323,6 +323,7 @@ MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
if (tvb_len==4){
/* IPv4 */
proto_tree_add_item(subtree, hf_ranap_transportLayerAddress_ipv4, parameter_tvb, 0, tvb_len, ENC_BIG_ENDIAN);
+ private_data_set_transportLayerAddress_ipv4(actx, tvb_get_ipv4(parameter_tvb, 0));
}
if (tvb_len==16){
/* IPv6 */
@@ -332,6 +333,10 @@ MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
if ((tvb_len==20) || (tvb_len==25)) {
item = proto_tree_add_item(subtree, hf_ranap_transportLayerAddress_nsap, parameter_tvb, 0, 20, ENC_NA);
nsap_tree = proto_item_add_subtree(item, ett_ranap_TransportLayerAddress_nsap);
+ if(tvb_get_ntoh24(parameter_tvb,0) == 0x350001){
+ /* IPv4 */
+ private_data_set_transportLayerAddress_ipv4(actx, tvb_get_ipv4(parameter_tvb, 3));
+ }
dissect_nsap(parameter_tvb, 0, tvb_len, nsap_tree);
}
@@ -392,6 +397,7 @@ MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
if (tvb_get_ntohs(value_tvb, 2) == 0) {
/* Will show first 2 bytes as an integer, as very likely to be a UDP port number */
guint16 port_number = tvb_get_ntohs(value_tvb, 0);
+ private_data_set_binding_id_port(actx, port_number);
proto_item_append_text(actx->created_item, " (%%u)", port_number);
}
@@ -402,6 +408,40 @@ MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
if (value_tvb)
dissect_s1ap_UE_HistoryInformation_PDU(value_tvb, %(ACTX)s->pinfo, tree, NULL);
+#.FN_BODY RAB-SetupOrModifyItemFirst
+ address ipv4_addr;
+ guint32 transportLayerAddress_ipv4;
+ guint16 binding_id;
+
+ private_data_set_transportLayerAddress_ipv4(actx, 0);
+ private_data_set_binding_id_port(actx, 0);
+%(DEFAULT_BODY)s
+ transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx);
+ binding_id = private_data_get_binding_id_port(actx);
+ if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || binding_id == 0){
+ return offset;
+ }
+ set_address(&ipv4_addr, AT_IPv4, 4, &transportLayerAddress_ipv4);
+ /* Set RTP dissector for the UDP stream of this RAB */
+ rtp_add_address(actx->pinfo, PT_UDP, &ipv4_addr, binding_id, 0, "RANAP", actx->pinfo->num, FALSE, 0);
+
+#.FN_BODY RAB-SetupOrModifiedItem
+ address ipv4_addr;
+ guint32 transportLayerAddress_ipv4;
+ guint16 binding_id;
+
+ private_data_set_transportLayerAddress_ipv4(actx, 0);
+ private_data_set_binding_id_port(actx, 0);
+%(DEFAULT_BODY)s
+ transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx);
+ binding_id = private_data_get_binding_id_port(actx);
+ if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || binding_id == 0){
+ return offset;
+ }
+ set_address(&ipv4_addr, AT_IPv4, 4, &transportLayerAddress_ipv4);
+ /* Set RTP dissector for the UDP stream of this RAB */
+ rtp_add_address(actx->pinfo, PT_UDP, &ipv4_addr, binding_id, 0, "RANAP", actx->pinfo->num, FALSE, 0);
+
# Contains the BSSGP RIM PDU as defined in TS 48.018 [36].
#.FN_BODY RIMInformation VAL_PTR=&value_tvb
tvbuff_t *value_tvb = NULL;
diff --git a/epan/dissectors/packet-ranap.c b/epan/dissectors/packet-ranap.c
index 52e56b300f..75e1c47e24 100644
--- a/epan/dissectors/packet-ranap.c
+++ b/epan/dissectors/packet-ranap.c
@@ -49,6 +49,7 @@
#include "packet-gsm_a_common.h"
#include "packet-isup.h"
#include "packet-s1ap.h"
+#include "packet-rtp.h"
#ifdef _MSC_VER
/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
@@ -456,7 +457,7 @@ typedef enum _ProtocolIE_ID_enum {
} ProtocolIE_ID_enum;
/*--- End of included file: packet-ranap-val.h ---*/
-#line 60 "./asn1/ranap/packet-ranap-template.c"
+#line 61 "./asn1/ranap/packet-ranap-template.c"
void proto_register_ranap(void);
void proto_reg_handoff_ranap(void);
@@ -1270,7 +1271,7 @@ static int hf_ranap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_valu
static int hf_ranap_value = -1; /* T_value */
/*--- End of included file: packet-ranap-hf.c ---*/
-#line 78 "./asn1/ranap/packet-ranap-template.c"
+#line 79 "./asn1/ranap/packet-ranap-template.c"
/* Initialize the subtree pointers */
static int ett_ranap = -1;
@@ -1633,7 +1634,69 @@ static gint ett_ranap_UnsuccessfulOutcome = -1;
static gint ett_ranap_Outcome = -1;
/*--- End of included file: packet-ranap-ett.c ---*/
-#line 85 "./asn1/ranap/packet-ranap-template.c"
+#line 86 "./asn1/ranap/packet-ranap-template.c"
+
+/*****************************************************************************/
+/* Packet private data */
+/* For this dissector, all access to actx->private_data should be made */
+/* through this API, which ensures that they will not overwrite each other!! */
+/*****************************************************************************/
+
+
+typedef struct ranap_private_data_t
+{
+ guint32 transportLayerAddress_ipv4;
+ guint16 binding_id_port;
+} ranap_private_data_t;
+
+
+/* Helper function to get or create the private data struct */
+static ranap_private_data_t* ranap_get_private_data(asn1_ctx_t *actx)
+{
+ packet_info *pinfo = actx->pinfo;
+ ranap_private_data_t *private_data = (ranap_private_data_t *)p_get_proto_data(pinfo->pool, pinfo, proto_ranap, 0);
+ if(private_data != NULL ) {
+ return private_data;
+ }
+ else {
+ private_data = wmem_new0(pinfo->pool, ranap_private_data_t);
+ p_add_proto_data(pinfo->pool, pinfo, proto_ranap, 0, private_data);
+ return private_data;
+ }
+}
+
+/* Helper function to reset the the private data struct */
+static void ranap_reset_private_data(packet_info *pinfo)
+{
+ p_remove_proto_data(pinfo->pool, pinfo, proto_ranap, 0);
+}
+
+static guint32 private_data_get_transportLayerAddress_ipv4(asn1_ctx_t *actx)
+{
+ ranap_private_data_t *private_data = (ranap_private_data_t*)ranap_get_private_data(actx);
+ return private_data->transportLayerAddress_ipv4;
+}
+
+static void private_data_set_transportLayerAddress_ipv4(asn1_ctx_t *actx, guint32 transportLayerAddress_ipv4)
+{
+ ranap_private_data_t *private_data = (ranap_private_data_t*)ranap_get_private_data(actx);
+ private_data->transportLayerAddress_ipv4 = transportLayerAddress_ipv4;
+}
+
+static guint16 private_data_get_binding_id_port(asn1_ctx_t *actx)
+{
+ ranap_private_data_t *private_data = (ranap_private_data_t*)ranap_get_private_data(actx);
+ return private_data->binding_id_port;
+}
+
+static void private_data_set_binding_id_port(asn1_ctx_t *actx, guint16 binding_id_port)
+{
+ ranap_private_data_t *private_data = (ranap_private_data_t*)ranap_get_private_data(actx);
+ private_data->binding_id_port = binding_id_port;
+}
+
+/*****************************************************************************/
+
/* Global variables */
static guint32 ProcedureCode;
@@ -3273,6 +3336,7 @@ dissect_ranap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
if (tvb_len==4){
/* IPv4 */
proto_tree_add_item(subtree, hf_ranap_transportLayerAddress_ipv4, parameter_tvb, 0, tvb_len, ENC_BIG_ENDIAN);
+ private_data_set_transportLayerAddress_ipv4(actx, tvb_get_ipv4(parameter_tvb, 0));
}
if (tvb_len==16){
/* IPv6 */
@@ -3282,6 +3346,10 @@ dissect_ranap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
if ((tvb_len==20) || (tvb_len==25)) {
item = proto_tree_add_item(subtree, hf_ranap_transportLayerAddress_nsap, parameter_tvb, 0, 20, ENC_NA);
nsap_tree = proto_item_add_subtree(item, ett_ranap_TransportLayerAddress_nsap);
+ if(tvb_get_ntoh24(parameter_tvb,0) == 0x350001){
+ /* IPv4 */
+ private_data_set_transportLayerAddress_ipv4(actx, tvb_get_ipv4(parameter_tvb, 3));
+ }
dissect_nsap(parameter_tvb, 0, tvb_len, nsap_tree);
}
@@ -3800,7 +3868,7 @@ dissect_ranap_BarometricPressure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
static int
dissect_ranap_BindingID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 389 "./asn1/ranap/ranap.cnf"
+#line 394 "./asn1/ranap/ranap.cnf"
tvbuff_t *value_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
4, 4, FALSE, &value_tvb);
@@ -3809,6 +3877,7 @@ dissect_ranap_BindingID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
if (tvb_get_ntohs(value_tvb, 2) == 0) {
/* Will show first 2 bytes as an integer, as very likely to be a UDP port number */
guint16 port_number = tvb_get_ntohs(value_tvb, 0);
+ private_data_set_binding_id_port(actx, port_number);
proto_item_append_text(actx->created_item, " (%u)", port_number);
}
@@ -5239,7 +5308,7 @@ dissect_ranap_GlobalRNC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
static int
dissect_ranap_GTP_TEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 339 "./asn1/ranap/ranap.cnf"
+#line 344 "./asn1/ranap/ranap.cnf"
tvbuff_t *parameter_tvb=NULL;
int saved_hf;
@@ -5758,7 +5827,7 @@ dissect_ranap_IntegrityProtectionInformation(tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_ranap_RIMInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 407 "./asn1/ranap/ranap.cnf"
+#line 447 "./asn1/ranap/ranap.cnf"
tvbuff_t *value_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -8382,7 +8451,7 @@ dissect_ranap_Service_Handover(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static int
dissect_ranap_Source_ToTarget_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 374 "./asn1/ranap/ranap.cnf"
+#line 379 "./asn1/ranap/ranap.cnf"
dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer(tvb , offset, actx ,tree , hf_ranap_ranap_SourceRNC_ToTargetRNC_TransparentContainer_PDU );
@@ -8459,7 +8528,7 @@ static const per_sequence_t SourceRNC_ToTargetRNC_TransparentContainer_sequence[
static int
dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 351 "./asn1/ranap/ranap.cnf"
+#line 356 "./asn1/ranap/ranap.cnf"
/* If SourceRNC-ToTargetRNC-TransparentContainer is called through
dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer_PDU
ProtocolIE_ID may be unset
@@ -8722,7 +8791,7 @@ dissect_ranap_SRVCC_Operation_Possible(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static int
dissect_ranap_Target_ToSource_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 384 "./asn1/ranap/ranap.cnf"
+#line 389 "./asn1/ranap/ranap.cnf"
dissect_ranap_TargetRNC_ToSourceRNC_TransparentContainer(tvb , offset, actx ,tree , hf_ranap_ranap_TargetRNC_ToSourceRNC_TransparentContainer_PDU );
@@ -8776,7 +8845,7 @@ static const per_sequence_t TargetRNC_ToSourceRNC_TransparentContainer_sequence[
static int
dissect_ranap_TargetRNC_ToSourceRNC_TransparentContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 360 "./asn1/ranap/ranap.cnf"
+#line 365 "./asn1/ranap/ranap.cnf"
/* If TargetRNC-ToSourceRNC-TransparentContainer is called through
dissect_ranap_TargetRNC_ToSourceRNC_TransparentContainer_PDU
ProtocolIE_ID may be unset
@@ -8961,7 +9030,7 @@ dissect_ranap_UE_AggregateMaximumBitRate(tvbuff_t *tvb _U_, int offset _U_, asn1
static int
dissect_ranap_UE_History_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 399 "./asn1/ranap/ranap.cnf"
+#line 405 "./asn1/ranap/ranap.cnf"
tvbuff_t *value_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -9376,7 +9445,7 @@ static const per_sequence_t Iu_ReleaseCommand_sequence[] = {
static int
dissect_ranap_Iu_ReleaseCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 417 "./asn1/ranap/ranap.cnf"
+#line 457 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"Iu-ReleaseCommand ");
@@ -9395,7 +9464,7 @@ static const per_sequence_t Iu_ReleaseComplete_sequence[] = {
static int
dissect_ranap_Iu_ReleaseComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 421 "./asn1/ranap/ranap.cnf"
+#line 461 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"Iu-ReleaseComplete ");
@@ -9495,7 +9564,7 @@ static const per_sequence_t RelocationRequired_sequence[] = {
static int
dissect_ranap_RelocationRequired(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 425 "./asn1/ranap/ranap.cnf"
+#line 465 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RelocationRequired ");
@@ -9514,7 +9583,7 @@ static const per_sequence_t RelocationCommand_sequence[] = {
static int
dissect_ranap_RelocationCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 429 "./asn1/ranap/ranap.cnf"
+#line 469 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RelocationCommand ");
@@ -9583,7 +9652,7 @@ static const per_sequence_t RelocationPreparationFailure_sequence[] = {
static int
dissect_ranap_RelocationPreparationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 433 "./asn1/ranap/ranap.cnf"
+#line 473 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RelocationPreparationFailure ");
@@ -9602,7 +9671,7 @@ static const per_sequence_t RelocationRequest_sequence[] = {
static int
dissect_ranap_RelocationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 437 "./asn1/ranap/ranap.cnf"
+#line 477 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RelocationRequest ");
@@ -9714,7 +9783,7 @@ static const per_sequence_t RelocationRequestAcknowledge_sequence[] = {
static int
dissect_ranap_RelocationRequestAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 441 "./asn1/ranap/ranap.cnf"
+#line 481 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RelocationRequestAcknowledge ");
@@ -9784,7 +9853,7 @@ static const per_sequence_t RelocationFailure_sequence[] = {
static int
dissect_ranap_RelocationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 445 "./asn1/ranap/ranap.cnf"
+#line 485 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RelocationFailure ");
@@ -9803,7 +9872,7 @@ static const per_sequence_t RelocationCancel_sequence[] = {
static int
dissect_ranap_RelocationCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 449 "./asn1/ranap/ranap.cnf"
+#line 489 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RelocationCancel ");
@@ -9822,7 +9891,7 @@ static const per_sequence_t RelocationCancelAcknowledge_sequence[] = {
static int
dissect_ranap_RelocationCancelAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 453 "./asn1/ranap/ranap.cnf"
+#line 493 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RelocationCancelAcknowledge ");
@@ -9841,7 +9910,7 @@ static const per_sequence_t SRNS_ContextRequest_sequence[] = {
static int
dissect_ranap_SRNS_ContextRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 457 "./asn1/ranap/ranap.cnf"
+#line 497 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"SRNS-ContextRequest ");
@@ -9884,7 +9953,7 @@ static const per_sequence_t SRNS_ContextResponse_sequence[] = {
static int
dissect_ranap_SRNS_ContextResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 461 "./asn1/ranap/ranap.cnf"
+#line 501 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"SRNS-ContextResponse ");
@@ -9956,7 +10025,7 @@ static const per_sequence_t SecurityModeCommand_sequence[] = {
static int
dissect_ranap_SecurityModeCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 465 "./asn1/ranap/ranap.cnf"
+#line 505 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"SecurityModeCommand ");
@@ -9975,7 +10044,7 @@ static const per_sequence_t SecurityModeComplete_sequence[] = {
static int
dissect_ranap_SecurityModeComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 469 "./asn1/ranap/ranap.cnf"
+#line 509 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"SecurityModeComplete ");
@@ -9994,7 +10063,7 @@ static const per_sequence_t SecurityModeReject_sequence[] = {
static int
dissect_ranap_SecurityModeReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 473 "./asn1/ranap/ranap.cnf"
+#line 513 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"SecurityModeReject ");
@@ -10013,7 +10082,7 @@ static const per_sequence_t DataVolumeReportRequest_sequence[] = {
static int
dissect_ranap_DataVolumeReportRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 477 "./asn1/ranap/ranap.cnf"
+#line 517 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"DataVolumeReportRequest ");
@@ -10056,7 +10125,7 @@ static const per_sequence_t DataVolumeReport_sequence[] = {
static int
dissect_ranap_DataVolumeReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 481 "./asn1/ranap/ranap.cnf"
+#line 521 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"DataVolumeReport ");
@@ -10100,7 +10169,7 @@ static const per_sequence_t Reset_sequence[] = {
static int
dissect_ranap_Reset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 485 "./asn1/ranap/ranap.cnf"
+#line 525 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"Reset ");
@@ -10119,7 +10188,7 @@ static const per_sequence_t ResetAcknowledge_sequence[] = {
static int
dissect_ranap_ResetAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 489 "./asn1/ranap/ranap.cnf"
+#line 529 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"ResetAcknowledge ");
@@ -10138,7 +10207,7 @@ static const per_sequence_t ResetResource_sequence[] = {
static int
dissect_ranap_ResetResource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 569 "./asn1/ranap/ranap.cnf"
+#line 609 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"ResetResource ");
@@ -10181,7 +10250,7 @@ static const per_sequence_t ResetResourceAcknowledge_sequence[] = {
static int
dissect_ranap_ResetResourceAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 573 "./asn1/ranap/ranap.cnf"
+#line 613 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"ResetResourceAcknowledge ");
@@ -10224,7 +10293,7 @@ static const per_sequence_t RAB_ReleaseRequest_sequence[] = {
static int
dissect_ranap_RAB_ReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 493 "./asn1/ranap/ranap.cnf"
+#line 533 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RAB-ReleaseRequest ");
@@ -10268,7 +10337,7 @@ static const per_sequence_t Iu_ReleaseRequest_sequence[] = {
static int
dissect_ranap_Iu_ReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 497 "./asn1/ranap/ranap.cnf"
+#line 537 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"Iu-ReleaseRequest ");
@@ -10287,7 +10356,7 @@ static const per_sequence_t RelocationDetect_sequence[] = {
static int
dissect_ranap_RelocationDetect(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 501 "./asn1/ranap/ranap.cnf"
+#line 541 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RelocationDetect ");
@@ -10306,7 +10375,7 @@ static const per_sequence_t RelocationComplete_sequence[] = {
static int
dissect_ranap_RelocationComplete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 505 "./asn1/ranap/ranap.cnf"
+#line 545 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RelocationComplete ");
@@ -10325,7 +10394,7 @@ static const per_sequence_t EnhancedRelocationCompleteRequest_sequence[] = {
static int
dissect_ranap_EnhancedRelocationCompleteRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 705 "./asn1/ranap/ranap.cnf"
+#line 745 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"EnhancedRelocationCompleteRequest ");
@@ -10371,7 +10440,7 @@ static const per_sequence_t EnhancedRelocationCompleteResponse_sequence[] = {
static int
dissect_ranap_EnhancedRelocationCompleteResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 709 "./asn1/ranap/ranap.cnf"
+#line 749 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"EnhancedRelocationCompleteResponse ");
@@ -10444,7 +10513,7 @@ static const per_sequence_t EnhancedRelocationCompleteFailure_sequence[] = {
static int
dissect_ranap_EnhancedRelocationCompleteFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 713 "./asn1/ranap/ranap.cnf"
+#line 753 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"EnhancedRelocationCompleteFailure ");
@@ -10463,7 +10532,7 @@ static const per_sequence_t EnhancedRelocationCompleteConfirm_sequence[] = {
static int
dissect_ranap_EnhancedRelocationCompleteConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 717 "./asn1/ranap/ranap.cnf"
+#line 757 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"EnhancedRelocationCompleteConfirm ");
@@ -10482,7 +10551,7 @@ static const per_sequence_t Paging_sequence[] = {
static int
dissect_ranap_Paging(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 509 "./asn1/ranap/ranap.cnf"
+#line 549 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"Paging ");
@@ -10501,7 +10570,7 @@ static const per_sequence_t CommonID_sequence[] = {
static int
dissect_ranap_CommonID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 513 "./asn1/ranap/ranap.cnf"
+#line 553 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"CommonID ");
@@ -10520,7 +10589,7 @@ static const per_sequence_t CN_InvokeTrace_sequence[] = {
static int
dissect_ranap_CN_InvokeTrace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 517 "./asn1/ranap/ranap.cnf"
+#line 557 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"CN-InvokeTrace ");
@@ -10539,7 +10608,7 @@ static const per_sequence_t CN_DeactivateTrace_sequence[] = {
static int
dissect_ranap_CN_DeactivateTrace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 521 "./asn1/ranap/ranap.cnf"
+#line 561 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"CN-DeactivateTrace ");
@@ -10558,7 +10627,7 @@ static const per_sequence_t LocationReportingControl_sequence[] = {
static int
dissect_ranap_LocationReportingControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 525 "./asn1/ranap/ranap.cnf"
+#line 565 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"LocationReportingControl ");
@@ -10577,7 +10646,7 @@ static const per_sequence_t LocationReport_sequence[] = {
static int
dissect_ranap_LocationReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 529 "./asn1/ranap/ranap.cnf"
+#line 569 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"LocationReport ");
@@ -10596,7 +10665,7 @@ static const per_sequence_t InitialUE_Message_sequence[] = {
static int
dissect_ranap_InitialUE_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 533 "./asn1/ranap/ranap.cnf"
+#line 573 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"InitialUE-Message ");
@@ -10615,7 +10684,7 @@ static const per_sequence_t DirectTransfer_sequence[] = {
static int
dissect_ranap_DirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 537 "./asn1/ranap/ranap.cnf"
+#line 577 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"DirectTransfer ");
@@ -10643,7 +10712,7 @@ static const per_sequence_t Overload_sequence[] = {
static int
dissect_ranap_Overload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 541 "./asn1/ranap/ranap.cnf"
+#line 581 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"Overload ");
@@ -10662,7 +10731,7 @@ static const per_sequence_t ErrorIndication_sequence[] = {
static int
dissect_ranap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 545 "./asn1/ranap/ranap.cnf"
+#line 585 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"ErrorIndication ");
@@ -10681,7 +10750,7 @@ static const per_sequence_t SRNS_DataForwardCommand_sequence[] = {
static int
dissect_ranap_SRNS_DataForwardCommand(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 549 "./asn1/ranap/ranap.cnf"
+#line 589 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"SRNS-DataForwardCommand ");
@@ -10700,7 +10769,7 @@ static const per_sequence_t ForwardSRNS_Context_sequence[] = {
static int
dissect_ranap_ForwardSRNS_Context(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 553 "./asn1/ranap/ranap.cnf"
+#line 593 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"ForwardSRNS-Context ");
@@ -10719,7 +10788,7 @@ static const per_sequence_t RAB_AssignmentRequest_sequence[] = {
static int
dissect_ranap_RAB_AssignmentRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 557 "./asn1/ranap/ranap.cnf"
+#line 597 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RAB-AssignmentRequest ");
@@ -10768,9 +10837,27 @@ static const per_sequence_t RAB_SetupOrModifyItemFirst_sequence[] = {
static int
dissect_ranap_RAB_SetupOrModifyItemFirst(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 412 "./asn1/ranap/ranap.cnf"
+ address ipv4_addr;
+ guint32 transportLayerAddress_ipv4;
+ guint16 binding_id;
+
+ private_data_set_transportLayerAddress_ipv4(actx, 0);
+ private_data_set_binding_id_port(actx, 0);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_ranap_RAB_SetupOrModifyItemFirst, RAB_SetupOrModifyItemFirst_sequence);
+ transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx);
+ binding_id = private_data_get_binding_id_port(actx);
+ if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || binding_id == 0){
+ return offset;
+ }
+ set_address(&ipv4_addr, AT_IPv4, 4, &transportLayerAddress_ipv4);
+ /* Set RTP dissector for the UDP stream of this RAB */
+ rtp_add_address(actx->pinfo, PT_UDP, &ipv4_addr, binding_id, 0, "RANAP", actx->pinfo->num, FALSE, 0);
+
+
+
return offset;
}
@@ -10803,7 +10890,7 @@ static const per_sequence_t RAB_AssignmentResponse_sequence[] = {
static int
dissect_ranap_RAB_AssignmentResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 561 "./asn1/ranap/ranap.cnf"
+#line 601 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RAB-AssignmentResponse ");
@@ -10834,9 +10921,27 @@ static const per_sequence_t RAB_SetupOrModifiedItem_sequence[] = {
static int
dissect_ranap_RAB_SetupOrModifiedItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 429 "./asn1/ranap/ranap.cnf"
+ address ipv4_addr;
+ guint32 transportLayerAddress_ipv4;
+ guint16 binding_id;
+
+ private_data_set_transportLayerAddress_ipv4(actx, 0);
+ private_data_set_binding_id_port(actx, 0);
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_ranap_RAB_SetupOrModifiedItem, RAB_SetupOrModifiedItem_sequence);
+ transportLayerAddress_ipv4 = private_data_get_transportLayerAddress_ipv4(actx);
+ binding_id = private_data_get_binding_id_port(actx);
+ if (actx->pinfo->fd->flags.visited || transportLayerAddress_ipv4 == 0 || binding_id == 0){
+ return offset;
+ }
+ set_address(&ipv4_addr, AT_IPv4, 4, &transportLayerAddress_ipv4);
+ /* Set RTP dissector for the UDP stream of this RAB */
+ rtp_add_address(actx->pinfo, PT_UDP, &ipv4_addr, binding_id, 0, "RANAP", actx->pinfo->num, FALSE, 0);
+
+
+
return offset;
}
@@ -10934,7 +11039,7 @@ static const per_sequence_t PrivateMessage_sequence[] = {
static int
dissect_ranap_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 565 "./asn1/ranap/ranap.cnf"
+#line 605 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"PrivateMessage ");
@@ -10953,7 +11058,7 @@ static const per_sequence_t RANAP_RelocationInformation_sequence[] = {
static int
dissect_ranap_RANAP_RelocationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 577 "./asn1/ranap/ranap.cnf"
+#line 617 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RANAP-RelocationInformation ");
@@ -11026,7 +11131,7 @@ static const per_sequence_t RANAP_EnhancedRelocationInformationRequest_sequence[
static int
dissect_ranap_RANAP_EnhancedRelocationInformationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 721 "./asn1/ranap/ranap.cnf"
+#line 761 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RANAP-EnhancedRelocationInformationRequest ");
@@ -11094,7 +11199,7 @@ static const per_sequence_t RANAP_EnhancedRelocationInformationResponse_sequence
static int
dissect_ranap_RANAP_EnhancedRelocationInformationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 725 "./asn1/ranap/ranap.cnf"
+#line 765 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RANAP-EnhancedRelocationInformationResponse ");
@@ -11182,7 +11287,7 @@ static const per_sequence_t RAB_ModifyRequest_sequence[] = {
static int
dissect_ranap_RAB_ModifyRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 581 "./asn1/ranap/ranap.cnf"
+#line 621 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RAB-ModifyRequest ");
@@ -11226,7 +11331,7 @@ static const per_sequence_t LocationRelatedDataRequest_sequence[] = {
static int
dissect_ranap_LocationRelatedDataRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 585 "./asn1/ranap/ranap.cnf"
+#line 625 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"LocationRelatedDataRequest ");
@@ -11245,7 +11350,7 @@ static const per_sequence_t LocationRelatedDataResponse_sequence[] = {
static int
dissect_ranap_LocationRelatedDataResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 589 "./asn1/ranap/ranap.cnf"
+#line 629 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"LocationRelatedDataResponse ");
@@ -11264,7 +11369,7 @@ static const per_sequence_t LocationRelatedDataFailure_sequence[] = {
static int
dissect_ranap_LocationRelatedDataFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 593 "./asn1/ranap/ranap.cnf"
+#line 633 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"LocationRelatedDataFailure ");
@@ -11283,7 +11388,7 @@ static const per_sequence_t InformationTransferIndication_sequence[] = {
static int
dissect_ranap_InformationTransferIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 597 "./asn1/ranap/ranap.cnf"
+#line 637 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"InformationTransferIndication ");
@@ -11302,7 +11407,7 @@ static const per_sequence_t InformationTransferConfirmation_sequence[] = {
static int
dissect_ranap_InformationTransferConfirmation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 601 "./asn1/ranap/ranap.cnf"
+#line 641 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"InformationTransferConfirmation ");
@@ -11321,7 +11426,7 @@ static const per_sequence_t InformationTransferFailure_sequence[] = {
static int
dissect_ranap_InformationTransferFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 605 "./asn1/ranap/ranap.cnf"
+#line 645 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"InformationTransferFailure ");
@@ -11340,7 +11445,7 @@ static const per_sequence_t UESpecificInformationIndication_sequence[] = {
static int
dissect_ranap_UESpecificInformationIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 609 "./asn1/ranap/ranap.cnf"
+#line 649 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"UESpecificInformationIndication ");
@@ -11359,7 +11464,7 @@ static const per_sequence_t DirectInformationTransfer_sequence[] = {
static int
dissect_ranap_DirectInformationTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 613 "./asn1/ranap/ranap.cnf"
+#line 653 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"DirectInformationTransfer ");
@@ -11378,7 +11483,7 @@ static const per_sequence_t UplinkInformationExchangeRequest_sequence[] = {
static int
dissect_ranap_UplinkInformationExchangeRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 617 "./asn1/ranap/ranap.cnf"
+#line 657 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"UplinkInformationExchangeRequest ");
@@ -11397,7 +11502,7 @@ static const per_sequence_t UplinkInformationExchangeResponse_sequence[] = {
static int
dissect_ranap_UplinkInformationExchangeResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 621 "./asn1/ranap/ranap.cnf"
+#line 661 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"UplinkInformationExchangeResponse ");
@@ -11416,7 +11521,7 @@ static const per_sequence_t UplinkInformationExchangeFailure_sequence[] = {
static int
dissect_ranap_UplinkInformationExchangeFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 625 "./asn1/ranap/ranap.cnf"
+#line 665 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"UplinkInformationExchangeFailure ");
@@ -11435,7 +11540,7 @@ static const per_sequence_t MBMSSessionStart_sequence[] = {
static int
dissect_ranap_MBMSSessionStart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 629 "./asn1/ranap/ranap.cnf"
+#line 669 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSSessionStart ");
@@ -11471,7 +11576,7 @@ static const per_sequence_t MBMSSessionStartResponse_sequence[] = {
static int
dissect_ranap_MBMSSessionStartResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 633 "./asn1/ranap/ranap.cnf"
+#line 673 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSSessionStartResponse ");
@@ -11490,7 +11595,7 @@ static const per_sequence_t MBMSSessionStartFailure_sequence[] = {
static int
dissect_ranap_MBMSSessionStartFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 637 "./asn1/ranap/ranap.cnf"
+#line 677 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSSessionStartFailure ");
@@ -11509,7 +11614,7 @@ static const per_sequence_t MBMSSessionUpdate_sequence[] = {
static int
dissect_ranap_MBMSSessionUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 641 "./asn1/ranap/ranap.cnf"
+#line 681 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSSessionUpdate ");
@@ -11528,7 +11633,7 @@ static const per_sequence_t MBMSSessionUpdateResponse_sequence[] = {
static int
dissect_ranap_MBMSSessionUpdateResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 645 "./asn1/ranap/ranap.cnf"
+#line 685 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSSessionUpdateResponse ");
@@ -11547,7 +11652,7 @@ static const per_sequence_t MBMSSessionUpdateFailure_sequence[] = {
static int
dissect_ranap_MBMSSessionUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 649 "./asn1/ranap/ranap.cnf"
+#line 689 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSSessionUpdateFailure ");
@@ -11566,7 +11671,7 @@ static const per_sequence_t MBMSSessionStop_sequence[] = {
static int
dissect_ranap_MBMSSessionStop(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 653 "./asn1/ranap/ranap.cnf"
+#line 693 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSSessionStop ");
@@ -11585,7 +11690,7 @@ static const per_sequence_t MBMSSessionStopResponse_sequence[] = {
static int
dissect_ranap_MBMSSessionStopResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 657 "./asn1/ranap/ranap.cnf"
+#line 697 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSSessionStopResponse ");
@@ -11604,7 +11709,7 @@ static const per_sequence_t MBMSUELinkingRequest_sequence[] = {
static int
dissect_ranap_MBMSUELinkingRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 661 "./asn1/ranap/ranap.cnf"
+#line 701 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSUELinkingRequest ");
@@ -11652,7 +11757,7 @@ static const per_sequence_t MBMSUELinkingResponse_sequence[] = {
static int
dissect_ranap_MBMSUELinkingResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 665 "./asn1/ranap/ranap.cnf"
+#line 705 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSUELinkingResponse ");
@@ -11701,7 +11806,7 @@ static const per_sequence_t MBMSRegistrationRequest_sequence[] = {
static int
dissect_ranap_MBMSRegistrationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 669 "./asn1/ranap/ranap.cnf"
+#line 709 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSRegistrationRequest ");
@@ -11720,7 +11825,7 @@ static const per_sequence_t MBMSRegistrationResponse_sequence[] = {
static int
dissect_ranap_MBMSRegistrationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 673 "./asn1/ranap/ranap.cnf"
+#line 713 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSRegistrationResponse ");
@@ -11739,7 +11844,7 @@ static const per_sequence_t MBMSRegistrationFailure_sequence[] = {
static int
dissect_ranap_MBMSRegistrationFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 677 "./asn1/ranap/ranap.cnf"
+#line 717 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSRegistrationFailure ");
@@ -11758,7 +11863,7 @@ static const per_sequence_t MBMSCNDe_RegistrationRequest_sequence[] = {
static int
dissect_ranap_MBMSCNDe_RegistrationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 681 "./asn1/ranap/ranap.cnf"
+#line 721 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSCNDe-RegistrationRequest ");
@@ -11777,7 +11882,7 @@ static const per_sequence_t MBMSCNDe_RegistrationResponse_sequence[] = {
static int
dissect_ranap_MBMSCNDe_RegistrationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 685 "./asn1/ranap/ranap.cnf"
+#line 725 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSCNDe-RegistrationResponse ");
@@ -11796,7 +11901,7 @@ static const per_sequence_t MBMSRABEstablishmentIndication_sequence[] = {
static int
dissect_ranap_MBMSRABEstablishmentIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 689 "./asn1/ranap/ranap.cnf"
+#line 729 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSRABEstablishmentIndication ");
@@ -11815,7 +11920,7 @@ static const per_sequence_t MBMSRABReleaseRequest_sequence[] = {
static int
dissect_ranap_MBMSRABReleaseRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 693 "./asn1/ranap/ranap.cnf"
+#line 733 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSRABReleaseRequest ");
@@ -11834,7 +11939,7 @@ static const per_sequence_t MBMSRABRelease_sequence[] = {
static int
dissect_ranap_MBMSRABRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 697 "./asn1/ranap/ranap.cnf"
+#line 737 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSRABRelease ");
@@ -11853,7 +11958,7 @@ static const per_sequence_t MBMSRABReleaseFailure_sequence[] = {
static int
dissect_ranap_MBMSRABReleaseFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 701 "./asn1/ranap/ranap.cnf"
+#line 741 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"MBMSRABReleaseFailure ");
@@ -11872,7 +11977,7 @@ static const per_sequence_t SRVCC_CSKeysRequest_sequence[] = {
static int
dissect_ranap_SRVCC_CSKeysRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 729 "./asn1/ranap/ranap.cnf"
+#line 769 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"SRVCC-CSKeysRequest ");
@@ -11891,7 +11996,7 @@ static const per_sequence_t SRVCC_CSKeysResponse_sequence[] = {
static int
dissect_ranap_SRVCC_CSKeysResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 733 "./asn1/ranap/ranap.cnf"
+#line 773 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"SRVCC-CSKeysResponse ");
@@ -11910,7 +12015,7 @@ static const per_sequence_t UeRadioCapabilityMatchRequest_sequence[] = {
static int
dissect_ranap_UeRadioCapabilityMatchRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 737 "./asn1/ranap/ranap.cnf"
+#line 777 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"UeRadioCapabilityMatchRequest ");
@@ -11929,7 +12034,7 @@ static const per_sequence_t UeRadioCapabilityMatchResponse_sequence[] = {
static int
dissect_ranap_UeRadioCapabilityMatchResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 741 "./asn1/ranap/ranap.cnf"
+#line 781 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"UeRadioCapabilityMatchResponse ");
@@ -11948,7 +12053,7 @@ static const per_sequence_t UeRegistrationQueryRequest_sequence[] = {
static int
dissect_ranap_UeRegistrationQueryRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 745 "./asn1/ranap/ranap.cnf"
+#line 785 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"UeRegistrationQueryRequest ");
@@ -11967,7 +12072,7 @@ static const per_sequence_t UeRegistrationQueryResponse_sequence[] = {
static int
dissect_ranap_UeRegistrationQueryResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 749 "./asn1/ranap/ranap.cnf"
+#line 789 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"UeRegistrationQueryResponse ");
@@ -11986,7 +12091,7 @@ static const per_sequence_t RerouteNASRequest_sequence[] = {
static int
dissect_ranap_RerouteNASRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 753 "./asn1/ranap/ranap.cnf"
+#line 793 "./asn1/ranap/ranap.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO,"RerouteNASRequest ");
@@ -14863,7 +14968,7 @@ static int dissect_RANAP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, prot
/*--- End of included file: packet-ranap-fn.c ---*/
-#line 147 "./asn1/ranap/packet-ranap-template.c"
+#line 210 "./asn1/ranap/packet-ranap-template.c"
static int
dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
@@ -14966,6 +15071,9 @@ dissect_ranap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
through function calls */
p_add_proto_data(pinfo->pool, pinfo, proto_ranap, pinfo->curr_layer_num, data);
+ /* Clearing any old 'private data' stored */
+ ranap_reset_private_data(pinfo);
+
dissect_RANAP_PDU_PDU(tvb, pinfo, ranap_tree, NULL);
if (sccp_msg_lcl) {
@@ -18240,7 +18348,7 @@ void proto_register_ranap(void) {
NULL, HFILL }},
/*--- End of included file: packet-ranap-hfarr.c ---*/
-#line 355 "./asn1/ranap/packet-ranap-template.c"
+#line 421 "./asn1/ranap/packet-ranap-template.c"
};
/* List of subtrees */
@@ -18604,7 +18712,7 @@ void proto_register_ranap(void) {
&ett_ranap_Outcome,
/*--- End of included file: packet-ranap-ettarr.c ---*/
-#line 363 "./asn1/ranap/packet-ranap-template.c"
+#line 429 "./asn1/ranap/packet-ranap-template.c"
};
@@ -19031,7 +19139,7 @@ proto_reg_handoff_ranap(void)
/*--- End of included file: packet-ranap-dis-tab.c ---*/
-#line 412 "./asn1/ranap/packet-ranap-template.c"
+#line 478 "./asn1/ranap/packet-ranap-template.c"
} else {
dissector_delete_uint("sccp.ssn", local_ranap_sccp_ssn, ranap_handle);
}