aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2006-01-20 19:34:53 +0000
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2006-01-20 19:34:53 +0000
commit8e66e5c69418082be0675c4ab3dd8f4ae4eef449 (patch)
treeef53fd0a937859f4a0057dc239e594a752df275b
parent6614505c338ff075b67e0ee1a2329fe4cb175cec (diff)
Dissect:
- PDPcontext - GSN-Address - QoS git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@17061 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r--asn1/camel/camel.asn71
-rw-r--r--asn1/camel/camel.cnf79
-rw-r--r--asn1/camel/packet-camel-template.c32
3 files changed, 138 insertions, 44 deletions
diff --git a/asn1/camel/camel.asn b/asn1/camel/camel.asn
index 9d2514c792..001e1925d0 100644
--- a/asn1/camel/camel.asn
+++ b/asn1/camel/camel.asn
@@ -249,8 +249,9 @@ IMPORTS
CellGlobalIdOrServiceAreaIdFixedLength,
Ext-BasicServiceCode,
IMEI,
- IMSI
--- ISDN-AddressString
+ IMSI,
+-- ISDN-AddressString,
+ LAIFixedLength
FROM MAP-CommonDataTypes {itu-t(0) identified-organization(4) etsi(0) mobileDomain(0)
gsm-Network(1) modules(3) map-CommonDataTypes(18) version9(9)}
@@ -918,15 +919,9 @@ ElapsedTimeRollOver ::= CHOICE {
-- The receiver of this parameter shall ignore the most significant 4 bits of this octet.
EndUserAddress ::= SEQUENCE
{
- pDPTypeOrganization [0]
-
- OCTET STRING (SIZE (1)),
- pDPTypeNumber [1]
-
- OCTET STRING (SIZE (1)),
- pDPAddress [2]
-
- OCTET STRING (SIZE (1..63)) OPTIONAL
+ pDPTypeOrganization [0] OCTET STRING (SIZE (1)),
+ pDPTypeNumber [1] OCTET STRING (SIZE (1)),
+ pDPAddress [2] OCTET STRING (SIZE (1..63)) OPTIONAL
}
-- Indicates the EndUserAddress, refer to 3GPP TS 29.060 [12] for the encoding.
-- The pDPTypeOrganization shall use the least significant 4 bits of the octet encoded.
@@ -1251,7 +1246,7 @@ GPRSEventSpecificInformation ::= CHOICE
qualityOfService [4] QualityOfService OPTIONAL,
timeAndTimeZone [5] TimeAndTimezone OPTIONAL,
...,
- gGSNAddress [6] GSNAddress OPTIONAL
+ gGSNAddress [6] GSN-Address OPTIONAL
},
detachSpecificInformation [2] SEQUENCE
{
@@ -1285,7 +1280,7 @@ GPRSEventSpecificInformation ::= CHOICE
locationInformationGPRS [4] LocationInformationGPRS OPTIONAL,
timeAndTimeZone [5] TimeAndTimezone OPTIONAL,
...,
- gGSNAddress [6] GSNAddress OPTIONAL
+ gGSNAddress [6] GSN-Address OPTIONAL
}
}
@@ -2044,10 +2039,8 @@ CellIdFixedLength ::=
-- LAIFixedLength notes: not recursive, exported,
-- locally refd 1 times, import refd 0 times
-LAIFixedLength ::=
-
-
- OCTET STRING (SIZE (5))
+-- IMPORTED fom GSM MAP
+-- LAIFixedLength ::= OCTET STRING (SIZE (5))
-- Refers to Location Area Identification defined in TS GSM 03.03.
-- Octets ares encoded according to TS GSM 04.08.
-- The internal structure is defined as follows:
@@ -2128,11 +2121,8 @@ TCInvokeIdSet ::= INTEGER (-128..127)
ExtensionSetextensionId ::= OBJECT IDENTIFIER
-
-GSNAddress ::=
-
-
-OCTET STRING (SIZE (5..17))
+-- Import from GSM MAP
+-- GSN-Address ::= OCTET STRING (SIZE (5..17))
@@ -2141,18 +2131,22 @@ OCTET STRING (SIZE (5..17))
-- Equivalent to EndUserAddress
PDPType ::= SEQUENCE
{
- pDPTypeOrganization [0]
-
- OCTET STRING (SIZE (1)),
- pDPTypeNumber [1]
-
- OCTET STRING (SIZE (1)),
- pDPAddress [2]
-
- OCTET STRING (SIZE (1..63)) OPTIONAL
+ pDPTypeOrganization [0] PDPTypeOrganization,
+ pDPTypeNumber [1] PDPTypeNumber,
+ pDPAddress [2] PDPAddress OPTIONAL
}
+PDPTypeOrganization ::= OCTET STRING (SIZE (1))
+PDPTypeNumber ::= OCTET STRING (SIZE (1))
+
+PDPAddress ::= OCTET STRING (SIZE (1..63))
+
+-- Indicates the PDPType, refer to 3GPP TS 29.060 for the encoding.
+-- The pDPTypeOrganization shall use the least significant 4 bits of the octet encoded.
+-- The sender of this parameter shall set the most significant 4 bit of the octet to 0.
+-- The receiver of this parameter shall ignore the most significant 4 bits of this octet.
+-- TS 29.060 "The PDP Type Organisation and PDP Type Number are encoded as in the End User Address information element."
-- Code notes: not recursive, exported,
-- locally refd 63 times, import refd 0 times
@@ -2439,15 +2433,20 @@ PlayToneArg ::= SEQUENCE {
...
}
-CellGlobalIdOrServiceAreaIdOrLAI ::=
+CellGlobalIdOrServiceAreaIdOrLAI ::= OCTET STRING (SIZE (5..7))
-OCTET STRING (SIZE (5..7))
-- The 3GPP TS 29.078 standard, about cellGlobalIdOrServiceAreaIdOrLAI:
-- "CellGlobalIdOrServiceAreaIdOrLAI and LSAIdentity are coded in accordance with
-- 3GPP TS 29.002 [13].
-- sai-Present indicates that the cellGlobalIdOrServiceAreaIdOrLAI parameter contains
-- a Service Area Identity."
+-- GPP TS 29.078 version 6.4.0 Release 6 has it as:
+-- CellGlobalIdOrServiceAreaIdFixedLength type or the LAIFixedLength type (i.e. excluding tags
+-- and lengths) as defined in 3GPP TS 29.002 [13].
+-- sai-Present indicates that the cellGlobalIdOrServiceAreaIdOrLAI parameter contains
+-- a Service Area Identity.
+
-- 3GPP TS 29.002 [13] gives the folowing coding for CellGlobalIdOrServiceAreaIdOrLAI:
-- CellGlobalIdOrServiceAreaIdOrLAI ::= CHOICE {
-- cellGlobalIdOrServiceAreaIdFixedLength [0] CellGlobalIdOrServiceAreaIdFixedLength,
@@ -2461,9 +2460,7 @@ OCTET STRING (SIZE (5..7))
-- parameter is set as an OCTET STRING, as it was in previous implementations.
-GeodeticInformation ::=
-
-OCTET STRING (SIZE(10))
+GeodeticInformation ::= OCTET STRING (SIZE(10))
-- Local imports
SupportedCamelPhases ::= BIT STRING {
@@ -2878,7 +2875,7 @@ InitialDPGPRSArg ::=
locationInformationGPRS [12] LocationInformationGPRS OPTIONAL,
pDPInitiationType [13] PDPInitiationType OPTIONAL,
extensions [14] ExtensionsArray OPTIONAL,
- gGSNAddress [15] GSNAddress OPTIONAL,
+ gGSNAddress [15] GSN-Address OPTIONAL,
secondaryPDPContext [16] NULL OPTIONAL
}
diff --git a/asn1/camel/camel.cnf b/asn1/camel/camel.cnf
index e2ad964850..c180ef72e0 100644
--- a/asn1/camel/camel.cnf
+++ b/asn1/camel/camel.cnf
@@ -333,9 +333,82 @@ tvbuff_t *parameter_tvb;
subtree = proto_item_add_subtree(item, ett_camel_AccessPointName);
de_sm_apn(parameter_tvb, subtree, 0, tvb_length_remaining(parameter_tvb,0), NULL, 0);
-#.TYPE_ATTR
-CallingPartysCategory TYPE = FT_UINT16 DISPLAY = BASE_DEC STRINGS = VALS(isup_calling_partys_category_value)
-#.END
+#.FN_PARS PDPTypeOrganization
+ VAL_PTR = &parameter_tvb
+
+#.FN_BODY PDPTypeOrganization
+
+ tvbuff_t *parameter_tvb;
+
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+ PDPTypeOrganization = (tvb_get_guint8(parameter_tvb,0) &0x0f);
+
+#.FN_PARS PDPTypeNumber
+ VAL_PTR = &parameter_tvb
+
+#.FN_BODY PDPTypeNumber
+ tvbuff_t *parameter_tvb;
+ proto_item *item;
+ proto_tree *subtree;
+
+%(DEFAULT_BODY)s
+ if (!parameter_tvb)
+ return offset;
+ PDPTypeNumber = tvb_get_guint8(parameter_tvb,0);
+ item = get_ber_last_created_item();
+ subtree = proto_item_add_subtree(item, ett_camel_pdptypenumber);
+ switch (PDPTypeOrganization){
+ case 0: /* ETSI */
+ proto_tree_add_item(tree, hf_camel_PDPTypeNumber_etsi, parameter_tvb, 0, 1, FALSE);
+ break;
+ case 1: /* IETF */
+ proto_tree_add_item(tree, hf_camel_PDPTypeNumber_ietf, parameter_tvb, 0, 1, FALSE);
+ break;
+ default:
+ break;
+ }
+
+#.FN_PARS PDPAddress
+ VAL_PTR = &parameter_tvb
+
+#.FN_BODY PDPAddress
+
+ 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_camel_pdptypenumber);
+ switch (PDPTypeOrganization){
+ case 0: /* ETSI */
+ break;
+ case 1: /* IETF */
+ switch(PDPTypeNumber){
+ case 0x21: /* IPv4 */
+ proto_tree_add_item(tree, hf_camel_PDPAddress_IPv4, parameter_tvb, 0, tvb_length(parameter_tvb), FALSE);
+ break;
+ case 0x57: /* IPv6 */
+ proto_tree_add_item(tree, hf_camel_PDPAddress_IPv6, parameter_tvb, 0, tvb_length(parameter_tvb), FALSE);
+ break;
+ default:
+ break;
+ }
+ default:
+ break;
+
+ }
+
+#.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)
+#.END
diff --git a/asn1/camel/packet-camel-template.c b/asn1/camel/packet-camel-template.c
index 7f7a165a10..dd93a623bd 100644
--- a/asn1/camel/packet-camel-template.c
+++ b/asn1/camel/packet-camel-template.c
@@ -4,7 +4,7 @@
* Copyright 2005, Olivier Jacques <olivier.jacques@hp.com>
* Copyright 2005, Javier AcuÇña <javier.acuna@sixbell.com>
* Updated to ETSI TS 129 078 V6.4.0 (2004-3GPP TS 29.078 version 6.4.0 Release 6 1 12)
- * Copyright 2005, Anders Broman <anders.broman@ericsson.com>
+ * Copyright 2005-2006, Anders Broman <anders.broman@ericsson.com>
* Built from the gsm-map dissector Copyright 2004, Anders Broman <anders.broman@ericsson.com>
*
* $Id$
@@ -81,6 +81,10 @@ static int hf_camel_addr_nature_of_number = -1;
static int hf_camel_addr_numberingPlanInd = -1;
static int hf_camel_addr_digits = -1;
static int hf_camel_cause_indicator = -1;
+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;
#include "packet-camel-hf.c"
static guint global_tcap_itu_ssn = 0;
@@ -97,6 +101,7 @@ static gint ett_camel_isdn_address_string = -1;
static gint ett_camel_MSRadioAccessCapability = -1;
static gint ett_camel_MSNetworkCapability = -1;
static gint ett_camel_AccessPointName = -1;
+static gint ett_camel_pdptypenumber = -1;
#include "packet-camel-ett.c"
@@ -110,6 +115,9 @@ dissector_handle_t camel_handle;
/* Global variables */
static int application_context_version;
+static guint8 PDPTypeOrganization;
+static guint8 PDPTypeNumber;
+
static int dissect_invokeCmd(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset);
@@ -695,9 +703,24 @@ void proto_register_camel(void) {
"Address digits", HFILL }},
{ &hf_digit,
{ "Digit Value", "camel.digit_value",
- FT_UINT8, BASE_DEC,
- VALS(digit_value),
- 0, "", HFILL }},
+ FT_UINT8, BASE_DEC, VALS(digit_value), 0, "Digit Value", HFILL }},
+ { &hf_camel_PDPTypeNumber_etsi,
+ { "ETSI defined PDP Type Value", "camel.PDPTypeNumber_etsi",
+ FT_UINT8, BASE_HEX, VALS(gsm_map_etsi_defined_pdp_vals), 0,
+ "ETSI defined PDP Type Value", HFILL }},
+ { &hf_camel_PDPTypeNumber_ietf,
+ { "IETF defined PDP Type Value", "camel.PDPTypeNumber_ietf",
+ FT_UINT8, BASE_HEX, VALS(gsm_map_ietf_defined_pdp_vals), 0,
+ "IETF defined PDP Type Value", HFILL }},
+ { &hf_camel_PDPAddress_IPv4,
+ { "PDPAddress IPv4", "camel.PDPAddress_IPv4",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "IPAddress IPv4", HFILL }},
+ { &hf_camel_PDPAddress_IPv6,
+ { "PDPAddress IPv6", "camel.PDPAddress_IPv6",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "IPAddress IPv6", HFILL }},
+
#ifdef REMOVED
#endif
#include "packet-camel-hfarr.c"
@@ -717,6 +740,7 @@ void proto_register_camel(void) {
&ett_camel_MSRadioAccessCapability,
&ett_camel_MSNetworkCapability,
&ett_camel_AccessPointName,
+ &ett_camel_pdptypenumber,
#include "packet-camel-ettarr.c"
};