aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/rrc/packet-rrc-template.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2009-11-05 21:54:06 +0000
committerAnders Broman <anders.broman@ericsson.com>2009-11-05 21:54:06 +0000
commit54aa776069b8e66d222ef3a9721249e97d02b287 (patch)
tree52abded55d5e57d0d26a73773e1785c32b95fe29 /asn1/rrc/packet-rrc-template.c
parent110a5be310239218a3015999a0ec979ece02d1bc (diff)
From Tobias Witek:
w protocols: UMTS RLC (ETSI TS 125 322), UMTS MAC (ETSI TS 125 321) https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3495 svn path=/trunk/; revision=30838
Diffstat (limited to 'asn1/rrc/packet-rrc-template.c')
-rw-r--r--asn1/rrc/packet-rrc-template.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/asn1/rrc/packet-rrc-template.c b/asn1/rrc/packet-rrc-template.c
index c29075b97c..e59231bebf 100644
--- a/asn1/rrc/packet-rrc-template.c
+++ b/asn1/rrc/packet-rrc-template.c
@@ -54,13 +54,17 @@
static dissector_handle_t gsm_a_dtap_handle;
static dissector_handle_t rrc_ue_radio_access_cap_info_handle=NULL;
+static dissector_handle_t rrc_pcch_handle=NULL;
+static dissector_handle_t rrc_ul_ccch_handle=NULL;
+static dissector_handle_t rrc_dl_ccch_handle=NULL;
+static dissector_handle_t rrc_ul_dcch_handle=NULL;
static dissector_handle_t rrc_dl_dcch_handle=NULL;
/* Include constants */
#include "packet-rrc-val.h"
/* Initialize the protocol and registered fields */
-static int proto_rrc = -1;
+int proto_rrc = -1;
static int hf_test;
#include "packet-rrc-hf.c"
@@ -74,6 +78,8 @@ static proto_tree *top_tree;
#include "packet-rrc-fn.c"
+#include "packet-rrc.h"
+
/*
TODO: Remove the dummy function when these functions are taken into use
@@ -106,8 +112,10 @@ dissect_rrc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
*/
proto_item *rrc_item = NULL;
proto_tree *rrc_tree = NULL;
+ struct rrc_info *rrcinf;
top_tree = tree;
+ rrcinf = p_get_proto_data(pinfo->fd, proto_rrc);
/* make entry in the Protocol column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RRC");
@@ -116,6 +124,27 @@ dissect_rrc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
rrc_item = proto_tree_add_item(tree, proto_rrc, tvb, 0, -1, FALSE);
rrc_tree = proto_item_add_subtree(rrc_item, ett_rrc);
+ if (rrcinf) {
+ switch (rrcinf->msgtype[pinfo->fd->subnum]) {
+ case RRC_MESSAGE_TYPE_PCCH:
+ call_dissector(rrc_pcch_handle, tvb, pinfo, rrc_tree);
+ break;
+ case RRC_MESSAGE_TYPE_UL_CCCH:
+ call_dissector(rrc_ul_ccch_handle, tvb, pinfo, rrc_tree);
+ break;
+ case RRC_MESSAGE_TYPE_DL_CCCH:
+ call_dissector(rrc_dl_ccch_handle, tvb, pinfo, rrc_tree);
+ break;
+ case RRC_MESSAGE_TYPE_UL_DCCH:
+ call_dissector(rrc_ul_dcch_handle, tvb, pinfo, rrc_tree);
+ break;
+ case RRC_MESSAGE_TYPE_DL_DCCH:
+ call_dissector(rrc_dl_dcch_handle, tvb, pinfo, rrc_tree);
+ break;
+ default:
+ ;
+ }
+ }
}
/*--- proto_register_rrc -------------------------------------------*/
void proto_register_rrc(void) {
@@ -157,6 +186,11 @@ proto_reg_handoff_rrc(void)
{
gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
+ rrc_pcch_handle = find_dissector("rrc.pcch");
+ rrc_ul_ccch_handle = find_dissector("rrc.ul.ccch");
+ rrc_dl_ccch_handle = find_dissector("rrc.dl.ccch");
+ rrc_ul_dcch_handle = find_dissector("rrc.ul.dcch");
+ rrc_dl_dcch_handle = find_dissector("rrc.dl.dcch");
rrc_ue_radio_access_cap_info_handle = find_dissector("rrc.ue_radio_access_cap_info");
rrc_dl_dcch_handle = find_dissector("rrc.dl.dcch");
}