diff options
-rw-r--r-- | asn1/camel/camel.cnf | 18 | ||||
-rw-r--r-- | asn1/camel/packet-camel-template.c | 5 | ||||
-rw-r--r-- | asn1/gsmmap/GSMMAP.asn | 2 | ||||
-rw-r--r-- | asn1/gsmmap/gsmmap.cnf | 30 | ||||
-rw-r--r-- | asn1/gsmmap/packet-gsm_map-template.c | 5 | ||||
-rw-r--r-- | asn1/ranap/packet-ranap-template.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-camel.c | 34 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_a.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_map.c | 42 |
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 = ¶meter_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, ¶meter_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); + ¶meter_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 */ |