summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asn1/camel/camel.cnf18
-rw-r--r--asn1/camel/packet-camel-template.c5
-rw-r--r--asn1/gsmmap/GSMMAP.asn2
-rw-r--r--asn1/gsmmap/gsmmap.cnf30
-rw-r--r--asn1/gsmmap/packet-gsm_map-template.c5
-rw-r--r--asn1/ranap/packet-ranap-template.c2
-rw-r--r--epan/dissectors/packet-camel.c34
-rw-r--r--epan/dissectors/packet-gsm_a.c2
-rw-r--r--epan/dissectors/packet-gsm_map.c42
9 files changed, 121 insertions, 19 deletions
diff --git a/asn1/camel/camel.cnf b/asn1/camel/camel.cnf
index c180ef72e0..741bd1db8d 100644
--- a/asn1/camel/camel.cnf
+++ b/asn1/camel/camel.cnf
@@ -408,6 +408,24 @@ tvbuff_t *parameter_tvb;
}
+#.FN_BODY CellGlobalIdOrServiceAreaIdOrLAI
+ proto_item *item;
+ proto_tree *subtree;
+ int start_offset;
+
+ start_offset = offset;
+%(DEFAULT_BODY)s
+
+ item = get_ber_last_created_item();
+ subtree = proto_item_add_subtree(item, ett_camel_pdptypenumber);
+
+ if (tvb_reported_length_remaining(tvb,start_offset) == 7){
+ dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(TRUE, tvb, start_offset, pinfo, subtree, hf_camel_cellGlobalIdOrServiceAreaIdFixedLength);
+ }else{
+ dissect_gsm_map_LAIFixedLength(TRUE, tvb, start_offset, pinfo, subtree, hf_camel_locationAreaId);
+ }
+
+
#.TYPE_ATTR
CallingPartysCategory TYPE = FT_UINT16 DISPLAY = BASE_DEC STRINGS = VALS(isup_calling_partys_category_value)
PDPTypeOrganization TYPE = FT_UINT8 DISPLAY = BASE_DEC BITMASK = 0x0f STRINGS = VALS(gsm_map_PDP_Type_Organisation_vals)
diff --git a/asn1/camel/packet-camel-template.c b/asn1/camel/packet-camel-template.c
index dd93a623bd..77d615209e 100644
--- a/asn1/camel/packet-camel-template.c
+++ b/asn1/camel/packet-camel-template.c
@@ -85,6 +85,7 @@ static int hf_camel_PDPTypeNumber_etsi = -1;
static int hf_camel_PDPTypeNumber_ietf = -1;
static int hf_camel_PDPAddress_IPv4 = -1;
static int hf_camel_PDPAddress_IPv6 = -1;
+static int hf_camel_cellGlobalIdOrServiceAreaIdFixedLength = -1;
#include "packet-camel-hf.c"
static guint global_tcap_itu_ssn = 0;
@@ -720,6 +721,10 @@ void proto_register_camel(void) {
{ "PDPAddress IPv6", "camel.PDPAddress_IPv6",
FT_IPv4, BASE_NONE, NULL, 0,
"IPAddress IPv6", HFILL }},
+ { &hf_camel_cellGlobalIdOrServiceAreaIdFixedLength,
+ { "CellGlobalIdOrServiceAreaIdFixedLength", "camel.CellGlobalIdOrServiceAreaIdFixedLength",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "LocationInformationGPRS/CellGlobalIdOrServiceAreaIdOrLAI", HFILL }},
#ifdef REMOVED
#endif
diff --git a/asn1/gsmmap/GSMMAP.asn b/asn1/gsmmap/GSMMAP.asn
index 4fe48608e2..09d93b02dc 100644
--- a/asn1/gsmmap/GSMMAP.asn
+++ b/asn1/gsmmap/GSMMAP.asn
@@ -2236,7 +2236,7 @@ CellGlobalIdOrServiceAreaIdOrLAI ::= CHOICE {
laiFixedLength [1] IMPLICIT LAIFixedLength}
CellGlobalIdOrServiceAreaIdFixedLength ::= OCTET STRING (SIZE (7))
--- Refers to Cell Global Identification or Service Are Identification
+-- Refers to Cell Global Identification or Service Area Identification
-- defined in 3GPP TS 23.003.
-- The internal structure is defined as follows:
-- octet 1 bits 4321 Mobile Country Code 1st digit
diff --git a/asn1/gsmmap/gsmmap.cnf b/asn1/gsmmap/gsmmap.cnf
index 3107144ef9..d14a480015 100644
--- a/asn1/gsmmap/gsmmap.cnf
+++ b/asn1/gsmmap/gsmmap.cnf
@@ -487,22 +487,46 @@ Component
tvbuff_t *parameter_tvb;
guint8 octet;
+ proto_item *item;
+ proto_tree *subtree;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
+ item = get_ber_last_created_item();
+ subtree = proto_item_add_subtree(item, ett_gsm_map_pdptypenumber);
+
octet = tvb_get_guint8(parameter_tvb,0);
switch(octet){
case 0x04: /* IPv4 */
- proto_tree_add_item(tree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
break;
case 0x50: /* IPv4 */
- proto_tree_add_item(tree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
break;
default:
break;
- }
+ }
+
+#.FN_PARS RAIdentity
+
+ VAL_PTR = &parameter_tvb
+
+#.FN_BODY RAIdentity
+
+ tvbuff_t *parameter_tvb;
+ proto_item *item;
+ proto_tree *subtree;
+
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+ item = get_ber_last_created_item();
+ subtree = proto_item_add_subtree(item, ett_gsm_map_RAIdentity);
+ de_gmm_rai(parameter_tvb, subtree, 0, 3, NULL,0);
+
#----------------------------------------------------------------------------------------
#.TYPE_ATTR
SS-Code TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ssCode_vals)
diff --git a/asn1/gsmmap/packet-gsm_map-template.c b/asn1/gsmmap/packet-gsm_map-template.c
index 85bdbcfc30..b344a9aea7 100644
--- a/asn1/gsmmap/packet-gsm_map-template.c
+++ b/asn1/gsmmap/packet-gsm_map-template.c
@@ -120,6 +120,8 @@ static gint ett_gsm_map_ReturnResult_result = -1;
static gint ett_gsm_map_ReturnError_result = -1;
static gint ett_gsm_map_GSMMAPPDU = -1;
static gint ett_gsm_map_ext_qos_subscribed = -1;
+static gint ett_gsm_map_pdptypenumber = -1;
+static gint ett_gsm_map_RAIdentity = -1;
#include "packet-gsm_map-ett.c"
@@ -1852,6 +1854,9 @@ void proto_register_gsm_map(void) {
&ett_gsm_map_ReturnError_result,
&ett_gsm_map_GSMMAPPDU,
&ett_gsm_map_ext_qos_subscribed,
+ &ett_gsm_map_pdptypenumber,
+ &ett_gsm_map_RAIdentity,
+
#include "packet-gsm_map-ettarr.c"
};
diff --git a/asn1/ranap/packet-ranap-template.c b/asn1/ranap/packet-ranap-template.c
index 209081d7c1..3228b1dfed 100644
--- a/asn1/ranap/packet-ranap-template.c
+++ b/asn1/ranap/packet-ranap-template.c
@@ -1,6 +1,6 @@
/* packet-ranap-template.c
* Routines for Radio Access Network Application Part Protocol dissection
- * Copyright 2005, Anders Broman <anders.broman@ericsson.com>
+ * Copyright 2005 - 2006, Anders Broman <anders.broman@ericsson.com>
* Based on the dissector by Martin Held <Martin.Held@icn.siemens.de>
*
* Ethereal - Network traffic analyzer
diff --git a/epan/dissectors/packet-camel.c b/epan/dissectors/packet-camel.c
index 5f3e46f8a1..4cbdae02a3 100644
--- a/epan/dissectors/packet-camel.c
+++ b/epan/dissectors/packet-camel.c
@@ -93,6 +93,7 @@ static int hf_camel_PDPTypeNumber_etsi = -1;
static int hf_camel_PDPTypeNumber_ietf = -1;
static int hf_camel_PDPAddress_IPv4 = -1;
static int hf_camel_PDPAddress_IPv6 = -1;
+static int hf_camel_cellGlobalIdOrServiceAreaIdFixedLength = -1;
/*--- Included file: packet-camel-hf.c ---*/
#line 1 "packet-camel-hf.c"
@@ -579,7 +580,7 @@ static int hf_camel_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP =
static int hf_camel_OfferedCamel4Functionalities_serviceChangeDP = -1;
/*--- End of included file: packet-camel-hf.c ---*/
-#line 89 "packet-camel-template.c"
+#line 90 "packet-camel-template.c"
static guint global_tcap_itu_ssn = 0;
/* Initialize the subtree pointers */
@@ -807,7 +808,7 @@ static gint ett_camel_ResetTimerGPRSArg = -1;
static gint ett_camel_CancelFailedPARAM = -1;
/*--- End of included file: packet-camel-ett.c ---*/
-#line 107 "packet-camel-template.c"
+#line 108 "packet-camel-template.c"
/* Preference settings default */
@@ -5454,9 +5455,28 @@ static int dissect_GPRSEventArray_item(packet_info *pinfo, proto_tree *tree, tvb
static int
dissect_camel_CellGlobalIdOrServiceAreaIdOrLAI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+#line 412 "camel.cnf"
+ proto_item *item;
+ proto_tree *subtree;
+ int start_offset;
+
+ start_offset = offset;
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
+
+ item = get_ber_last_created_item();
+ subtree = proto_item_add_subtree(item, ett_camel_pdptypenumber);
+
+ if (tvb_reported_length_remaining(tvb,start_offset) == 7){
+ dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(TRUE, tvb, start_offset, pinfo, subtree, hf_camel_cellGlobalIdOrServiceAreaIdFixedLength);
+ }else{
+ dissect_gsm_map_LAIFixedLength(TRUE, tvb, start_offset, pinfo, subtree, hf_camel_locationAreaId);
+ }
+
+
+
+
return offset;
}
static int dissect_cellGlobalIdOrServiceAreaIdOrLAI_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
@@ -7950,7 +7970,7 @@ dissect_camel_TaskRefusedPARAM(gboolean implicit_tag _U_, tvbuff_t *tvb, int off
/*--- End of included file: packet-camel-fn.c ---*/
-#line 185 "packet-camel-template.c"
+#line 186 "packet-camel-template.c"
const value_string camel_opr_code_strings[] = {
@@ -8489,6 +8509,10 @@ void proto_register_camel(void) {
{ "PDPAddress IPv6", "camel.PDPAddress_IPv6",
FT_IPv4, BASE_NONE, NULL, 0,
"IPAddress IPv6", HFILL }},
+ { &hf_camel_cellGlobalIdOrServiceAreaIdFixedLength,
+ { "CellGlobalIdOrServiceAreaIdFixedLength", "camel.CellGlobalIdOrServiceAreaIdFixedLength",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "LocationInformationGPRS/CellGlobalIdOrServiceAreaIdOrLAI", HFILL }},
#ifdef REMOVED
#endif
@@ -10417,7 +10441,7 @@ void proto_register_camel(void) {
"", HFILL }},
/*--- End of included file: packet-camel-hfarr.c ---*/
-#line 727 "packet-camel-template.c"
+#line 732 "packet-camel-template.c"
};
/* List of subtrees */
@@ -10645,7 +10669,7 @@ void proto_register_camel(void) {
&ett_camel_CancelFailedPARAM,
/*--- End of included file: packet-camel-ettarr.c ---*/
-#line 745 "packet-camel-template.c"
+#line 750 "packet-camel-template.c"
};
/* Register protocol */
diff --git a/epan/dissectors/packet-gsm_a.c b/epan/dissectors/packet-gsm_a.c
index fdf1f6ae72..c86a367e47 100644
--- a/epan/dissectors/packet-gsm_a.c
+++ b/epan/dissectors/packet-gsm_a.c
@@ -12,7 +12,7 @@
* Vienna (ftw.)Betriebs-GmbH within the Project Metawin.
*
* Added Dissection of Radio Resource Management Information Elements
- * Copyright 2005, Anders Broman [AT] ericsson.com
+ * Copyright 2005 - 2006, Anders Broman [AT] ericsson.com
*
* Title 3GPP Other
*
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c
index bd7472c7ab..9a667500f6 100644
--- a/epan/dissectors/packet-gsm_map.c
+++ b/epan/dissectors/packet-gsm_map.c
@@ -951,6 +951,8 @@ static gint ett_gsm_map_ReturnResult_result = -1;
static gint ett_gsm_map_ReturnError_result = -1;
static gint ett_gsm_map_GSMMAPPDU = -1;
static gint ett_gsm_map_ext_qos_subscribed = -1;
+static gint ett_gsm_map_pdptypenumber = -1;
+static gint ett_gsm_map_RAIdentity = -1;
/*--- Included file: packet-gsm_map-ett.c ---*/
@@ -1353,7 +1355,7 @@ static gint ett_gsm_map_SecureTransportErrorParam = -1;
static gint ett_gsm_map_ExtensionContainer = -1;
/*--- End of included file: packet-gsm_map-ett.c ---*/
-#line 125 "packet-gsm_map-template.c"
+#line 127 "packet-gsm_map-template.c"
static dissector_table_t sms_dissector_table; /* SMS TPDU */
static dissector_handle_t data_handle;
@@ -3071,6 +3073,8 @@ dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset
tvbuff_t *parameter_tvb;
guint8 octet;
+ proto_item *item;
+ proto_tree *subtree;
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
&parameter_tvb);
@@ -3078,17 +3082,21 @@ dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset
if (!parameter_tvb)
return offset;
+ item = get_ber_last_created_item();
+ subtree = proto_item_add_subtree(item, ett_gsm_map_pdptypenumber);
+
octet = tvb_get_guint8(parameter_tvb,0);
switch(octet){
case 0x04: /* IPv4 */
- proto_tree_add_item(tree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
break;
case 0x50: /* IPv4 */
- proto_tree_add_item(tree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
+ proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
break;
default:
break;
- }
+ }
+
return offset;
@@ -9181,8 +9189,23 @@ static int dissect_subscriberState(packet_info *pinfo, proto_tree *tree, tvbuff_
int
dissect_gsm_map_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+#line 517 "gsmmap.cnf"
+
+ tvbuff_t *parameter_tvb;
+ proto_item *item;
+ proto_tree *subtree;
+
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
- NULL);
+ &parameter_tvb);
+
+
+ if (!parameter_tvb)
+ return offset;
+ item = get_ber_last_created_item();
+ subtree = proto_item_add_subtree(item, ett_gsm_map_RAIdentity);
+ de_gmm_rai(parameter_tvb, subtree, 0, 3, NULL,0);
+
+
return offset;
}
@@ -14399,7 +14422,7 @@ static void dissect_Component_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree
/*--- End of included file: packet-gsm_map-fn.c ---*/
-#line 343 "packet-gsm_map-template.c"
+#line 345 "packet-gsm_map-template.c"
const value_string gsm_map_opr_code_strings[] = {
{ 2, "updateLocation" },
@@ -19171,7 +19194,7 @@ void proto_register_gsm_map(void) {
"", HFILL }},
/*--- End of included file: packet-gsm_map-hfarr.c ---*/
-#line 1842 "packet-gsm_map-template.c"
+#line 1844 "packet-gsm_map-template.c"
};
/* List of subtrees */
@@ -19185,6 +19208,9 @@ void proto_register_gsm_map(void) {
&ett_gsm_map_ReturnError_result,
&ett_gsm_map_GSMMAPPDU,
&ett_gsm_map_ext_qos_subscribed,
+ &ett_gsm_map_pdptypenumber,
+ &ett_gsm_map_RAIdentity,
+
/*--- Included file: packet-gsm_map-ettarr.c ---*/
#line 1 "packet-gsm_map-ettarr.c"
@@ -19586,7 +19612,7 @@ void proto_register_gsm_map(void) {
&ett_gsm_map_ExtensionContainer,
/*--- End of included file: packet-gsm_map-ettarr.c ---*/
-#line 1856 "packet-gsm_map-template.c"
+#line 1861 "packet-gsm_map-template.c"
};
/* Register protocol */