aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2008-10-09 17:51:51 +0000
committerAnders Broman <anders.broman@ericsson.com>2008-10-09 17:51:51 +0000
commitfdb832cf1b92327335e69db096287fca9802e081 (patch)
treee848cb2477a308d9fb3037f0fa5376bab57122b0 /asn1
parent01fb5d4039cdc7d6affae3919a7280d8b1233651 (diff)
Dissect Bearer cap in Signal info.
svn path=/trunk/; revision=26396
Diffstat (limited to 'asn1')
-rw-r--r--asn1/gsmmap/gsmmap.cnf36
-rw-r--r--asn1/gsmmap/packet-gsmmap-template.c2
2 files changed, 33 insertions, 5 deletions
diff --git a/asn1/gsmmap/gsmmap.cnf b/asn1/gsmmap/gsmmap.cnf
index 4ea2f5fe12..26a935c63f 100644
--- a/asn1/gsmmap/gsmmap.cnf
+++ b/asn1/gsmmap/gsmmap.cnf
@@ -626,25 +626,51 @@ actx->pinfo->p2p_dir = P2P_DIR_RECV;
#.FN_PARS ProtocolId VAL_PTR = &ProtocolId
#.FN_BODY ExternalSignalInfo
+/*
+-- Information about the internal structure is given in
+-- clause 7.6.9.
+7.6.9.4 External Signal Information
+This parameter contains concatenated information elements (including tag and length) which are defined by a common
+protocol version, preceded by the associated protocol ID. It is used to transport information of the indicated protocol via
+MAP interfaces
+*/
guint8 octet;
guint8 length;
tvbuff_t *next_tvb;
proto_tree *subtree;
-
+
ProtocolId = 0xffffffff;
%(DEFAULT_BODY)s
if (!actx->value_ptr)
return offset;
subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_externalsignalinfo);
switch (ProtocolId){
- /* gsm-0408 */
case 1:
+ /* gsm-0408 */
+ /* As per comment abowe Individual IE:(s) will be found here in TLV format
+ * Unfortunatly a branch for each IE must be made to call the apropriate
+ * function
+ */
+ /* Get tag */
+ octet = tvb_get_guint8(actx->value_ptr,0);
+ /* get length */
+ length = tvb_get_guint8(actx->value_ptr,1);
+ /* Branch on tag */
+ switch(octet){
+ case 4:
+ de_bearer_cap(actx->value_ptr, subtree, 2, length, NULL, 0);
+ break;
+ default:
+ proto_tree_add_text(subtree, actx->value_ptr, 0, length, "If you want this decdoded send the packet to Wireshark dev");
+ break;
+ }/* switch(octet) */
break;
- /* gsm-0806 */
case 2:
+ /* gsm-0806 */
+ proto_tree_add_text(subtree, actx->value_ptr, 0, -1, "If you want this decdoded send the packet to Wireshark dev");
break;
- /* gsm-BSSMAP TODO Is it correct to stripp off two first octets here?*/
case 3:
+ /* gsm-BSSMAP TODO Is it correct to stripp off two first octets here?*/
octet = tvb_get_guint8(actx->value_ptr,0);
length = tvb_get_guint8(actx->value_ptr,1);
if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
@@ -661,7 +687,7 @@ if (!actx->value_ptr)
break;
default:
break;
-}
+ }/*switch (ProtocolId)*/
#.FN_BODY GlobalCellId VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
diff --git a/asn1/gsmmap/packet-gsmmap-template.c b/asn1/gsmmap/packet-gsmmap-template.c
index f97ea587f0..2accd17563 100644
--- a/asn1/gsmmap/packet-gsmmap-template.c
+++ b/asn1/gsmmap/packet-gsmmap-template.c
@@ -187,6 +187,7 @@ static gint ett_gsm_map_GeographicalInformation = -1;
static dissector_table_t sms_dissector_table; /* SMS TPDU */
static dissector_handle_t data_handle;
static dissector_handle_t ranap_handle;
+static dissector_handle_t dtap_handle;
static dissector_handle_t map_handle;
/* Preferenc settings default */
@@ -2204,6 +2205,7 @@ void proto_reg_handoff_gsm_map(void) {
static int map_prefs_initialized = FALSE;
data_handle = find_dissector("data");
ranap_handle = find_dissector("ranap");
+ dtap_handle = find_dissector("gsm_a_dtap");
if (!map_prefs_initialized) {
map_prefs_initialized = TRUE;