diff options
author | Anders Broman <anders.broman@ericsson.com> | 2006-01-20 19:34:53 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2006-01-20 19:34:53 +0000 |
commit | d5ee40fd86092995d631d065c31781896a6ec924 (patch) | |
tree | ef53fd0a937859f4a0057dc239e594a752df275b /asn1 | |
parent | f2bc8ad4a8ad938a9ddc2538910de3f25ba33648 (diff) |
Dissect:
- PDPcontext
- GSN-Address
- QoS
svn path=/trunk/; revision=17061
Diffstat (limited to 'asn1')
-rw-r--r-- | asn1/camel/camel.asn | 71 | ||||
-rw-r--r-- | asn1/camel/camel.cnf | 79 | ||||
-rw-r--r-- | asn1/camel/packet-camel-template.c | 32 |
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 = ¶meter_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 = ¶meter_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 = ¶meter_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" }; |