aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/camel
diff options
context:
space:
mode:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2007-07-05 13:18:28 +0000
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2007-07-05 13:18:28 +0000
commitf46560990cbe961ceb6ade484d70b5d2d7c30fc9 (patch)
tree1f15b2ffae19d6006b9a3f598245da9dbe4eba10 /asn1/camel
parent005b53876a9fcfe16262994df9a6265b7fa50305 (diff)
New Camel dissector built with -X and -T option and origninal ASN1 files.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@22245 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'asn1/camel')
-rw-r--r--asn1/camel/Makefile3
-rw-r--r--asn1/camel/Makefile.nmake5
-rw-r--r--asn1/camel/TCAPMessages.asn21
-rw-r--r--asn1/camel/camel.cnf369
-rw-r--r--asn1/camel/packet-camel-template.c423
-rw-r--r--asn1/camel/packet-camel-template.h1
6 files changed, 262 insertions, 560 deletions
diff --git a/asn1/camel/Makefile b/asn1/camel/Makefile
index 99a4f89ecd..ac6074b3d4 100644
--- a/asn1/camel/Makefile
+++ b/asn1/camel/Makefile
@@ -2,7 +2,8 @@
PROTOCOL_NAME=camel
DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h
-ASN_FILE_LIST=camel.asn
+ROS_ASN= ../ros/Remote-Operations-Information-Objects.asn ../ros/Remote-Operations-Generic-ROS-PDUs.asn
+ASN_FILE_LIST=TCAPMessages.asn CAP-object-identifiers.asn CAP-classes.asn CAP-datatypes.asn CAP-errorcodes.asn CAP-errortypes.asn CAP-operationcodes.asn CAP-GPRS-ReferenceNumber.asn CAP-gsmSCF-gsmSRF-ops-args.asn CAP-gsmSSF-gsmSCF-ops-args.asn CAP-gprsSSF-gsmSCF-ops-args.asn CAP-SMS-ops-args.asn CAP-U-ABORT-Data.asn $(ROS_ASN)
all: generate_dissector
diff --git a/asn1/camel/Makefile.nmake b/asn1/camel/Makefile.nmake
index a788c5cf1e..62930de049 100644
--- a/asn1/camel/Makefile.nmake
+++ b/asn1/camel/Makefile.nmake
@@ -8,7 +8,8 @@ UNIX2DOS=$(PERL) ../../tools/unix2dos.pl
PROTOCOL_NAME=camel
DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h
-ASN_FILE_LIST=camel.asn
+ROS_ASN= ../ros/Remote-Operations-Information-Objects.asn ../ros/Remote-Operations-Generic-ROS-PDUs.asn
+ASN_FILE_LIST=TCAPMessages.asn CAP-object-identifiers.asn CAP-classes.asn CAP-datatypes.asn CAP-errorcodes.asn CAP-errortypes.asn CAP-operationcodes.asn CAP-GPRS-ReferenceNumber.asn CAP-gsmSCF-gsmSRF-ops-args.asn CAP-gsmSSF-gsmSCF-ops-args.asn CAP-gprsSSF-gsmSCF-ops-args.asn CAP-SMS-ops-args.asn CAP-U-ABORT-Data.asn $(ROS_ASN)
all: generate_dissector
@@ -16,7 +17,7 @@ generate_dissector: $(DISSECTOR_FILES)
$(DISSECTOR_FILES): ../../tools/asn2wrs.py $(ASN_FILE_LIST) packet-$(PROTOCOL_NAME)-template.c packet-$(PROTOCOL_NAME)-template.h camel.cnf
!IFDEF PYTHON
- $(PYTHON) "../../tools/asn2wrs.py" -b -X -e -p $(PROTOCOL_NAME) -c camel.cnf -s packet-$(PROTOCOL_NAME)-template $(ASN_FILE_LIST)
+ $(PYTHON) "../../tools/asn2wrs.py" -b -X -T -L -e -k -p $(PROTOCOL_NAME) -c camel.cnf -s packet-$(PROTOCOL_NAME)-template $(ASN_FILE_LIST)
!ELSE
@echo Error: You need Python to use asn2wrs.py
@exit 1
diff --git a/asn1/camel/TCAPMessages.asn b/asn1/camel/TCAPMessages.asn
new file mode 100644
index 0000000000..1e0b5561c1
--- /dev/null
+++ b/asn1/camel/TCAPMessages.asn
@@ -0,0 +1,21 @@
+-- Generated by Asnp, the pretty-printer of France Telecom R&D (http://asn1.elibel.tm.fr/asnp/)
+TCAPMessages {itu-t recommendation q 773 modules(2) messages(1) version3(3)}
+DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+-- This is a dummy asn1 file to be replacet when everthing is in place...
+-- EXPORTS everything
+-- Transaction Portion fields.
+IMPORTS
+ ROS{}, InvokeId
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)}
+ OPERATION
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)};
+
+
+TCInvokeIdSet ::= InvokeId(WITH COMPONENTS {
+ present (-128..127)
+ })
+
+END -- TCAPMessages
diff --git a/asn1/camel/camel.cnf b/asn1/camel/camel.cnf
index 0d783ab878..49d54d31b3 100644
--- a/asn1/camel/camel.cnf
+++ b/asn1/camel/camel.cnf
@@ -1,56 +1,201 @@
# camel.cnf
# camel conformation file
-
# $Id$
-#.MODULE_IMPORT
-MAP-CommonDataTypes gsm_map
-MAP-MS-DataTypes gsm_map
-MAP-CH-DataTypes gsm_map
-
#.INCLUDE ../gsmmap/gsm_map-exp.cnf
+#.INCLUDE ../inap/inap-exp.cnf
+#.MODULE
+CS1-DataTypes inap
+CS2-datatypes inap
#.PDU
+#.OMIT_ASSIGNMENT Remote-Operations-Information-Objects
+Bind
+Unbind
+#.END
+
+#.REGISTER
+CAP-GPRS-ReferenceNumber B "0.4.0.0.1.1.5.2" "id-CAP-GPRS-ReferenceNumber"
#.NO_EMIT
#.TYPE_RENAME
+ReturnResult/result/result ResultArgument
#.FIELD_RENAME
-#----------------------------------------------------------------------------------------
-#.PDU
-Component
-#----------------------------------------------------------------------------------------
-#.FN_BODY InvokeParameter
+Invoke/linkedId/present linkedIdPresent
+Reject/problem/invoke invokeProblem
+Reject/problem/returnError returnErrorProblem
+ReturnResult/result/result resultArgument
+Reject/problem/returnResult problemReturnResult
+
+PAR-cancelFailed/problem par-cancelFailedProblem
+CAMEL-FCIBillingChargingCharacteristics/fCIBCCCAMELsequence1 fci-fCIBCCCAMELsequence1
+CAMEL-FCIGPRSBillingChargingCharacteristics/fCIBCCCAMELsequence1 fciGPRS-fCIBCCCAMELsequence1
+CAMEL-FCISMSBillingChargingCharacteristics/fCIBCCCAMELsequence1 fciSMS-fCIBCCCAMELsequence1
+EventSpecificInformationBCSM/oMidCallSpecificInfo/midCallEvents omidCallEvents
+EventSpecificInformationBCSM/tMidCallSpecificInfo/midCallEvents tmidCallEvents
+AudibleIndicator/tone audibleIndicatorTone
+GapIndicators/duration gapIndicatorsDuration
+InbandInfo/duration inbandInfoDuration
+Tone/duration toneDuration
+Burst/toneDuration burstToneDuration
+
+EventSpecificInformationSMS/o-smsFailureSpecificInfo/failureCause smsfailureCause
+EventSpecificInformationBCSM/routeSelectFailureSpecificInfo/failureCause routeSelectfailureCause
+EventSpecificInformationSMS/t-smsFailureSpecificInfo/failureCause t-smsfailureCause
+
+CAMEL-FCIBillingChargingCharacteristics/fCIBCCCAMELsequence1/partyToCharge fCIBCCCAMELsequence1partyToCharge
+CAMEL-CallResult/timeDurationChargingResult/partyToCharge timeDurationChargingResultpartyToCharge
+
+AOCSubsequent/tariffSwitchInterval aocSubsequent-tariffSwitchInterval
+CAMEL-AChBillingChargingCharacteristics/timeDurationCharging/tariffSwitchInterval timeDurationCharging-tariffSwitchInterval
+ApplyChargingGPRSArg/tariffSwitchInterval applyChargingGPRS-tariffSwitchInterval
+TimeIfTariffSwitch/tariffSwitchInterval timeIfTariffSwitch-tariffSwitchInterval
+
+
+#.TABLE_HDR
+/* CAMEL OPERATIONS */
+const value_string camel_opr_code_strings[] = {
+#.TABLE_BODY OPERATION
+ { %(&operationCode)s, "%(_ident)s" },
+#.TABLE_FTR
+ { 0, NULL }
+};
+#.END
+
+#.TABLE_HDR
+/* CAMEL ERRORS */
+const value_string camel_err_code_string_vals[] = {
+#.TABLE_BODY ERROR
+ { %(&errorCode)s, "%(_ident)s" },
+#.TABLE_FTR
+ { 0, NULL }
+};
+#.END
+
+#.TABLE_HDR
+static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) {
+ proto_item *cause;
+
+ switch(opcode){
+#.TABLE_BODY OPERATION.&ArgumentType
+ case %(&operationCode)s: /* %(_ident)s */
+ offset= %(_argument_fn)s(FALSE, tvb, offset, actx, tree, -1);
+ break;
+#.TABLE_FTR
+ cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
+ proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode);
+ /* todo call the asn.1 dissector */
+ }
+ return offset;
+}
+#.END
+#.TABLE_HDR
+static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,asn1_ctx_t *actx) {
+ proto_item *cause;
+
+ switch(opcode){
+#.TABLE_BODY OPERATION.&ResultType
+ case %(&operationCode)s: /* %(_ident)s */
+ offset= %(_result_fn)s(FALSE, tvb, offset, actx, tree, -1);
+ break;
+#.TABLE_FTR
+ default:
+ cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
+ proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown returnResultData %d",opcode);
+ }
+ return offset;
+}
+#.END
+#.TABLE_HDR
+static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset,asn1_ctx_t *actx) {
+ proto_item *cause;
+
+ switch(errorCode) {
+#.TABLE_BODY ERROR.&ParameterType
+ case %(&errorCode)s: /* %(_ident)s */
+ %(_parameter_fn)s(FALSE, tvb, offset, actx, tree, -1);
+ break;
+#.TABLE_FTR
+ default:
+ cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnErrorData blob");
+ proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown returnErrorData %d",errorCode);
+ }
+ return offset;
+}
+#.END
+# ROS stuff here XXX change when TCAP is redone.
+
+#.FN_BODY Code/local VAL_PTR = &opcode
+
+ if (is_ExtensionField){
+ hf_index = hf_camel_extension_code_local;
+ }else if (camel_opcode_type == CAMEL_OPCODE_RETURN_ERROR){
+ hf_index = hf_camel_error_code_local;
+ }
+ %(DEFAULT_BODY)s
+ if (is_ExtensionField == FALSE){
+ if (camel_opcode_type == CAMEL_OPCODE_RETURN_ERROR){
+ errorCode = opcode;
+ if (check_col(actx->pinfo->cinfo, COL_INFO)){
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO,
+ val_to_str(errorCode, camel_err_code_string_vals, "Unknown CAMEL error (%%u)"));
+ col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
+ col_set_fence(actx->pinfo->cinfo, COL_INFO);
+ }
+ }else{
+ if (check_col(actx->pinfo->cinfo, COL_INFO)){
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO,
+ val_to_str(opcode, camel_opr_code_strings, "Unknown CAMEL (%%u)"));
+ col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
+ col_set_fence(actx->pinfo->cinfo, COL_INFO);
+ }
+ }
+ gp_camelsrt_info->opcode=opcode;
+ }
+#.FN_HDR Invoke
+ camel_opcode_type=CAMEL_OPCODE_INVOKE;
+
+#.FN_HDR ReturnResult
+ camel_opcode_type=CAMEL_OPCODE_RETURN_RESULT;
+
+#.FN_HDR ReturnError
+ camel_opcode_type=CAMEL_OPCODE_RETURN_ERROR;
+
+#.FN_HDR Reject
+ camel_opcode_type=CAMEL_OPCODE_REJECT;
+
+
+#.FN_BODY Invoke/argument
offset = dissect_invokeData(tree, tvb, offset, actx);
-#----------------------------------------------------------------------------------------
-#.FN_BODY ReturnResultParameter
+#.FN_BODY ReturnResult/result/result
offset = dissect_returnResultData(tree, tvb, offset, actx);
-#----------------------------------------------------------------------------------------
-#.FN_BODY ReturnErrorParameter
+#.FN_BODY ReturnError/parameter
offset = dissect_returnErrorData(tree, tvb, offset, actx);
-#----------------------------------------------------------------------------------------
-#.FN_PARS CAMELOperationLocalvalue
+# END ROS
- VAL_PTR = &opcode
+#.FN_HDR ExtensionField
+ camel_obj_id = NULL;
+ is_ExtensionField =TRUE;
-#.FN_BODY CAMELOperationLocalvalue
+#.FN_PARS Code/global FN_VARIANT = _str VAL_PTR = &camel_obj_id
-%(DEFAULT_BODY)s
- if (check_col(actx->pinfo->cinfo, COL_INFO)){
- col_append_fstr(actx->pinfo->cinfo, COL_INFO,
- val_to_str(opcode, camel_opr_code_strings, "Unknown CAMEL (%%u)"));
- col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
- col_set_fence(actx->pinfo->cinfo, COL_INFO);
+#.FN_BODY ExtensionField/value
+ /*XXX handle local form here */
+ if(camel_obj_id){
+ offset=call_ber_oid_callback(camel_obj_id, tvb, offset, actx->pinfo, tree);
}
- gp_camelsrt_info->opcode=opcode;
+ is_ExtensionField = FALSE;
-#----------------------------------------------------------------------------------------
#.FN_PARS CAMELLocalErrorcode
VAL_PTR = &errorCode
@@ -85,71 +230,8 @@ Component
offset += len;
#.END
-
-#----------------------------------------------------------------------------------------
-#.FN_PARS ISDN-AddressString
- VAL_PTR = &parameter_tvb
-
-#.FN_BODY ISDN-AddressString
-
- tvbuff_t *parameter_tvb;
- char *digit_str;
- 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_isdn_address_string);
-
- proto_tree_add_item(subtree, hf_camel_addr_extension, parameter_tvb, 0,1,FALSE);
-
- proto_tree_add_item(subtree, hf_camel_addr_natureOfAddressIndicator, parameter_tvb, 0,1,FALSE);
- proto_tree_add_item(subtree, hf_camel_addr_numberingPlanInd, parameter_tvb, 0,1,FALSE);
- digit_str = unpack_digits(parameter_tvb, 1);
-
- proto_tree_add_string(subtree, hf_camel_addr_digits, parameter_tvb, 1, -1, digit_str);
-#.END
-
-#----------------------------------------------------------------------------------------
-#.FN_PARS CallresultoctetPDU
- VAL_PTR = &parameter_tvb
-
-#.FN_BODY CallresultoctetPDU
-tvbuff_t *parameter_tvb;
-
-%(DEFAULT_BODY)s
- if (!parameter_tvb)
- return offset;
- dissect_camel_CAMEL_CallResult(implicit_tag, parameter_tvb, 0, actx, tree, -1);
-
-#.END
-
-#----------------------------------------------------------------------------------------
-#.FN_PARS Cause
- VAL_PTR = &camel_tvb
-
-#.FN_BODY Cause
-
- tvbuff_t *camel_tvb;
- guint8 Cause_value;
-
-%(DEFAULT_BODY)s
-
- if (camel_tvb)
- dissect_q931_cause_ie(camel_tvb, 0, tvb_length_remaining(camel_tvb,0), tree, hf_camel_cause_indicator, &Cause_value);
-
-
- return offset;
-#.END
-
#----------------------------------------------------------------------------------------
-#.FN_PARS Q850Cause
- VAL_PTR = &camel_tvb
-
-#.FN_BODY Q850Cause
+#.FN_BODY Cause VAL_PTR = &camel_tvb
tvbuff_t *camel_tvb;
guint8 Cause_value;
@@ -162,12 +244,8 @@ tvbuff_t *parameter_tvb;
return offset;
#.END
-
#----------------------------------------------------------------------------------------
-#.FN_PARS RPCause
- VAL_PTR = &camel_tvb
-
-#.FN_BODY RPCause
+#.FN_BODY RPCause VAL_PTR = &camel_tvb
tvbuff_t *camel_tvb;
guint8 Cause_value;
@@ -278,12 +356,7 @@ tvbuff_t *parameter_tvb;
#.END
#----------------------------------------------------------------------------------------
-#.FN_PARS BearerCap
-
- VAL_PTR = &parameter_tvb
-
-#.FN_BODY BearerCap
-
+#.FN_BODY BearerCapability/bearerCap VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
@@ -295,28 +368,7 @@ tvbuff_t *parameter_tvb;
#.END
#----------------------------------------------------------------------------------------
-#.FN_PARS RedirectionInformation
-
- VAL_PTR = &parameter_tvb
-
-#.FN_BODY RedirectionInformation
-
- tvbuff_t *parameter_tvb;
-
-%(DEFAULT_BODY)s
-
- if (!parameter_tvb)
- return offset;
-
- dissect_isup_redirection_information_parameter(parameter_tvb, tree, NULL);
-#.END
-
-#----------------------------------------------------------------------------------------
-#.FN_PARS OriginalCalledPartyID
-
- VAL_PTR = &parameter_tvb
-
-#.FN_BODY OriginalCalledPartyID
+#.FN_BODY OriginalCalledPartyID VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
@@ -343,50 +395,9 @@ tvbuff_t *parameter_tvb;
dissect_isup_redirecting_number_parameter(parameter_tvb, tree, NULL);
#.END
-#----------------------------------------------------------------------------------------
-#.FN_PARS MSNetworkCapability
- VAL_PTR = &parameter_tvb
-
-#.FN_BODY MSNetworkCapability
-
- 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_MSNetworkCapability);
- de_gmm_ms_net_cap(parameter_tvb, subtree, 0, tvb_length_remaining(parameter_tvb,0), NULL, 0);
-#.END
-
-#----------------------------------------------------------------------------------------
-#.FN_PARS MSRadioAccessCapability
- VAL_PTR = &parameter_tvb
-
-#.FN_BODY MSRadioAccessCapability
-
- 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_MSRadioAccessCapability);
- de_gmm_ms_radio_acc_cap(parameter_tvb, subtree, 0, tvb_length_remaining(parameter_tvb,0), NULL, 0);
-#.END
-
#----------------------------------------------------------------------------------------
-#.FN_PARS PDPTypeOrganization
- VAL_PTR = &parameter_tvb
-
-#.FN_BODY PDPTypeOrganization
+#.FN_BODY EndUserAddress/pDPTypeOrganization VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
@@ -398,10 +409,7 @@ tvbuff_t *parameter_tvb;
#.END
#----------------------------------------------------------------------------------------
-#.FN_PARS PDPTypeNumber
- VAL_PTR = &parameter_tvb
-
-#.FN_BODY PDPTypeNumber
+#.FN_BODY EndUserAddress/pDPTypeNumber VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
proto_item *item;
@@ -426,11 +434,8 @@ tvbuff_t *parameter_tvb;
}
#.END
-#----------------------------------------------------------------------------------------
-#.FN_PARS PDPAddress
- VAL_PTR = &parameter_tvb
-#.FN_BODY PDPAddress
+#.FN_BODY EndUserAddress/pDPAddress VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
proto_item *item;
@@ -463,7 +468,7 @@ tvbuff_t *parameter_tvb;
#.END
#----------------------------------------------------------------------------------------
-#.FN_BODY CellGlobalIdOrServiceAreaIdOrLAI
+#.FN_BODY LocationInformationGPRS/cellGlobalIdOrServiceAreaIdOrLAI
proto_item *item;
proto_tree *subtree;
int start_offset;
@@ -482,10 +487,22 @@ tvbuff_t *parameter_tvb;
#.END
#----------------------------------------------------------------------------------------
+#.FN_BODY AChBillingChargingCharacteristics VAL_PTR = &parameter_tvb
+ 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_CAMEL_AChBillingChargingCharacteristics);
+ dissect_camel_CAMEL_AChBillingChargingCharacteristics(FALSE, parameter_tvb, 0, actx, subtree, -1);
+
#.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)
DateAndTime TYPE = FT_STRING DISPLAY = NONE
AccessPointName TYPE = FT_STRING DISPLAY = NONE
+Code/local TYPE = FT_INT32 DISPLAY = BASE_DEC STRINGS = VALS(camel_opr_code_strings)
#.END
diff --git a/asn1/camel/packet-camel-template.c b/asn1/camel/packet-camel-template.c
index 8bc71cb842..88bf088187 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-2006, Anders Broman <anders.broman@ericsson.com>
+ * Copyright 2005-2007, Anders Broman <anders.broman@ericsson.com>
* Updated to 3GPP TS 29.078 version 7.3.0 Release 7 (2006-06)
* Built from the gsm-map dissector Copyright 2004, Anders Broman <anders.broman@ericsson.com>
*
@@ -55,7 +55,7 @@
#include "packet-e164.h"
#include "packet-isup.h"
#include "packet-gsm_map.h"
-#include "packet-gsm_a.h"
+#include "packet-inap.h"
#include "packet-tcap.h"
#include "epan/camel-persistentdata.h"
#include "epan/tcap-persistentdata.h"
@@ -74,10 +74,8 @@ static guint32 errorCode=0;
static int hf_digit = -1;
-static int hf_camel_addr_extension = -1;
-static int hf_camel_addr_natureOfAddressIndicator = -1;
-static int hf_camel_addr_numberingPlanInd = -1;
-static int hf_camel_addr_digits = -1;
+static int hf_camel_extension_code_local = -1;
+static int hf_camel_error_code_local = -1;
static int hf_camel_cause_indicator = -1;
static int hf_camel_PDPTypeNumber_etsi = -1;
static int hf_camel_PDPTypeNumber_ietf = -1;
@@ -100,6 +98,9 @@ int hf_camelsrt_DeltaTime65=-1;
int hf_camelsrt_DeltaTime22=-1;
int hf_camelsrt_DeltaTime35=-1;
int hf_camelsrt_DeltaTime80=-1;
+int hf_camel_CAMEL_AChBillingChargingCharacteristics = -1;
+
+#include "packet-camel-hf.c"
static struct camelsrt_info_t * gp_camelsrt_info;
@@ -107,9 +108,7 @@ static struct camelsrt_info_t * gp_camelsrt_info;
static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset,asn1_ctx_t *actx);
static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,asn1_ctx_t *actx);
static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset,asn1_ctx_t *actx);
-
-
-#include "packet-camel-hf.c"
+static int dissect_camel_CAMEL_AChBillingChargingCharacteristics(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
gboolean gcamel_HandleSRT=FALSE;
extern gboolean gcamel_PersistentSRT;
@@ -118,9 +117,6 @@ extern gboolean gcamel_DisplaySRT;
/* Initialize the subtree pointers */
static gint ett_camel = -1;
static gint ett_camelisup_parameter = -1;
-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;
static gint ett_camel_stat = -1;
@@ -139,10 +135,22 @@ static dissector_handle_t camel_handle;
static int application_context_version;
static guint8 PDPTypeOrganization;
static guint8 PDPTypeNumber;
-
-static char camel_number_to_char(int );
-static guint8 dissect_RP_cause_ie(tvbuff_t *tvb, guint32 offset, guint len,
- proto_tree *tree, int hf_cause_value, guint8 *cause_value);
+const char *camel_obj_id = NULL;
+gboolean is_ExtensionField =FALSE;
+
+static int camel_opcode_type;
+#define CAMEL_OPCODE_INVOKE 1
+#define CAMEL_OPCODE_RETURN_RESULT 2
+#define CAMEL_OPCODE_RETURN_ERROR 3
+#define CAMEL_OPCODE_REJECT 4
+
+static const value_string camel_Component_vals[] = {
+ { 1, "invoke" },
+ { 2, "returnResultLast" },
+ { 3, "returnError" },
+ { 4, "reject" },
+ { 0, NULL }
+};
static const true_false_string camel_extension_value = {
"No Extension",
@@ -231,89 +239,8 @@ static const value_string camel_RP_Cause_values[] = {
{ 22,"Memory capacity exceeded" },
{ 0, NULL }
};
+#include "packet-camel-val.h"
-#include "packet-camel-fn.c"
-
-const value_string camel_opr_code_strings[] = {
-
- {0, "InitialDP"},
- {16, "AssistRequestInstructions"},
- {17, "EstablishTemporaryConnection"},
- {18, "DisconnectForwardConnection"},
- {19, "ConnectToResource"},
- {20, "Connect"},
- {22, "ReleaseCall"},
- {23, "RequestReportBCSMEvent"},
- {24, "EventReportBCSM"},
- {27, "CollectInformation"},
- {31, "Continue"},
- {32, "InitiateCallAttempt"},
- {33, "ResetTimer"},
- {34, "FurnishChargingInformation"},
- {35, "ApplyCharging"},
- {36, "ApplyChargingReport"},
- {41, "CallGap"},
- {44, "CallInformationReport"},
- {45, "CallInformationRequest"},
- {46, "SendChargingInformation"},
- {47, "PlayAnnouncement"},
- {48, "PromptAndCollectUserInformation"},
- {49, "SpecializedResourceReport"},
- {53, "Cancel"},
- {55, "ActivityTest"},
- {56, "ContinueWithArgument"},
- {60, "InitialDPSMS"},
- {61, "FurnishChargingInformationSMS"},
- {62, "ConnectSMS"},
- {63, "RequestReportSMSEvent"},
- {64, "EventReportSMS"},
- {65, "ContinueSMS"},
- {66, "ReleaseSMS"},
- {67, "ResetTimerSMS"},
- {70, "ActivityTestGPRS"},
- {71, "ApplyChargingGPRS"},
- {72, "ApplyChargingReportGPRS"},
- {73, "CancelGPRS"},
- {74, "ConnectGPRS"},
- {75, "ContinueGPRS"},
- {76, "EntityReleasedGPRS"},
- {77, "FurnishChargingInformationGPRS"},
- {78, "InitialDPGPRS"},
- {79, "ReleaseGPRS"},
- {80, "EventReportGPRS"},
- {81, "RequestReportGPRSEvent"},
- {82, "ResetTimerGPRS"},
- {83, "SendChargingInformationGPRS"},
- {86, "DFCWithArgument"},
- {88, "ContinueWithArgument"},
- {90, "DisconnectLeg"},
- {93, "MoveLeg"},
- {95, "SplitLeg"},
- {96, "EntityReleased"},
- {97, "PlayTone"},
- {0, NULL}
-};
-
-static const value_string camel_err_code_string_vals[] = {
- { 0, "Canceled"},
- { 1, "CancelFailed"},
- { 3, "ETCFailed"},
- { 4, "ImproperCallerResponse"},
- { 6, "MissingCustomerRecord"},
- { 7, "MissingParameter"},
- { 8, "ParameterOutOfRange"},
- { 10, "RequestedInfoError"},
- { 11, "SystemFailure"},
- { 12, "TaskRefused"},
- { 13, "UnavailableResource"},
- { 14, "UnexpectedComponentSequence"},
- { 15, "UnexpectedDataValue"},
- { 16, "UnexpectedParameter"},
- { 17, "UnknownLegID"},
- { 50, "UnknownPDPID"},
- { 51, "UnknownCSID"},
- { 0, NULL}
-};
static char camel_number_to_char(int number)
{
@@ -358,274 +285,15 @@ dissect_RP_cause_ie(tvbuff_t *tvb, guint32 offset, _U_ guint len,
return(curr_offset - offset);
}
+#include "packet-camel-fn.c"
-static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) {
- proto_item *cause;
- gint8 bug_class;
- gboolean bug_pc, bug_ind_field;
- gint32 bug_tag;
- guint32 bug_len1;
-
- switch(opcode){
- case 0: /*InitialDP*/
- offset=dissect_camel_InitialDPArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 16: /*AssistRequestInstructions*/
- offset=dissect_camel_AssistRequestInstructionsArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 17: /*EstablishTemporaryConnection*/
- offset=dissect_camel_EstablishTemporaryConnectionArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 18: /*DisconnectForwardConnections*/
- proto_tree_add_text(tree, tvb, offset, -1, "Disconnect Forward Connection");
- break;
- case 19: /*ConnectToResource*/
- offset=dissect_camel_ConnectToResourceArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 20: /*Connect*/
- offset=dissect_camel_ConnectArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 22: /*releaseCall*/
- offset=dissect_camel_ReleaseCallArg(FALSE, tvb, offset, actx, tree, hf_camel_cause);
- break;
- case 23: /*RequestReportBCSMEvent*/
- offset=dissect_camel_RequestReportBCSMEventArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 24: /*EventReportBCSM*/
- offset=dissect_camel_EventReportBCSMArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 27: /*CollectInformation*/
- offset=dissect_camel_CollectInformationArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 31: /*Continue*/
- /* Continue: no arguments - do nothing */
- break;
- case 32: /*initiateCallAttempt*/
- offset=dissect_camel_InitiateCallAttemptArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 33: /*ResetTimer*/
- offset=dissect_camel_ResetTimerArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 34: /*FurnishChargingInformation*/
- /* offset=dissect_camel_FurnishChargingInformationArg(TRUE, tvb, offset, tree, -1); */
- offset = get_ber_identifier(tvb, offset, &bug_class, &bug_pc, &bug_tag);
- offset = get_ber_length(tree, tvb, offset, &bug_len1, &bug_ind_field);
- offset=dissect_camel_CAMEL_FCIBillingChargingCharacteristics(TRUE, tvb, offset, actx, tree, -1);
- break;
- case 35: /*ApplyCharging*/
- offset=dissect_camel_ApplyChargingArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 36: /*ApplyChargingReport*/
- /* offset=dissect_camel_ApplyChargingReportArg(TRUE, tvb, offset, tree, -1); */
- offset = get_ber_identifier(tvb, offset, &bug_class, &bug_pc, &bug_tag);
- offset = get_ber_length(tree, tvb, offset, &bug_len1, &bug_ind_field);
- offset=dissect_camel_CAMEL_CallResult(TRUE, tvb, offset, actx, tree, -1);
- break;
- case 41: /*CallGap*/
- offset=dissect_camel_CallGapArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 44: /*CallInformationReport*/
- offset=dissect_camel_CallInformationReportArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 45: /*CallInformationRequest*/
- offset=dissect_camel_CallInformationRequestArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 46: /*SendChargingInformation*/
- offset=dissect_camel_SendChargingInformationArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 47: /*PlayAnnouncement*/
- offset=dissect_camel_PlayAnnouncementArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 48: /*PromptAndCollectUserInformation*/
- offset=dissect_camel_PromptAndCollectUserInformationArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 49: /*SpecializedResourceReport*/
- offset=dissect_camel_SpecializedResourceReportArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 53: /*Cancel*/
- offset=dissect_camel_CancelArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 56: /*ContinueWithArgument*/
- offset=dissect_camel_ContinueWithArgumentArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 60: /*InitialDPSMS*/
- offset=dissect_camel_InitialDPSMSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 61: /*FurnishChargingInformationSMS*/
- /* offset=dissect_camel_FurnishChargingInformationSMSArg(FALSE, tvb, offset, tree, -1); */
- offset = get_ber_identifier(tvb, offset, &bug_class, &bug_pc, &bug_tag);
- offset = get_ber_length(tree, tvb, offset, &bug_len1, &bug_ind_field);
- offset=dissect_camel_CAMEL_FCISMSBillingChargingCharacteristics(TRUE, tvb, offset, actx, tree, -1);
- break;
- case 62: /*ConnectSMS*/
- offset=dissect_camel_ConnectSMSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 63: /*RequestReportSMSEvent*/
- offset=dissect_camel_RequestReportSMSEventArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 64: /*EventReportSMS*/
- offset=dissect_camel_EventReportSMSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 65: /*ContinueSMS*/
- /* ContinueSMS: no arguments - do nothing */
- break;
- case 66: /*ReleaseSMS*/
- offset=dissect_camel_ReleaseSMSArg(FALSE, tvb, offset, actx, tree, hf_camel_RP_Cause);
- break;
- case 67: /*ResetTimerSMS*/
- offset=dissect_camel_ResetTimerSMSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 71: /*ApplyChargingGPRS*/
- offset=dissect_camel_ApplyChargingGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 72: /*ApplyChargingReportGPRS*/
- offset=dissect_camel_ApplyChargingReportGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 73: /*CancelGPRS*/
- offset=dissect_camel_CancelGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 74: /*ConnectGPRS*/
- offset=dissect_camel_ConnectGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 75: /*ContinueGPRS*/
- offset=dissect_camel_ContinueGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 76: /*EntityReleasedGPRS*/
- offset=dissect_camel_EntityReleasedGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 77: /*FurnishChargingInformationGPRS*/
- /* offset=dissect_camel_FurnishChargingInformationGPRSArg(FALSE, tvb, offset, tree, -1); */
- offset = get_ber_identifier(tvb, offset, &bug_class, &bug_pc, &bug_tag);
- offset = get_ber_length(tree, tvb, offset, &bug_len1, &bug_ind_field);
- offset=dissect_camel_CAMEL_FCIGPRSBillingChargingCharacteristics(TRUE, tvb, offset, actx, tree, -1);
- break;
- case 78: /*InitialDPGPRS*/
- offset=dissect_camel_InitialDPGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 79: /*ReleaseGPRS*/
- offset=dissect_camel_ReleaseGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 80: /*EventReportGPRS*/
- offset=dissect_camel_EventReportGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 81: /*RequestReportGPRSEvent*/
- offset=dissect_camel_RequestReportGPRSEventArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 82: /*ResetTimerGPRS*/
- offset=dissect_camel_ResetTimerGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 83: /*SendChargingInformationGPRS*/
- offset=dissect_camel_SendChargingInformationGPRSArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 86: /*DFCWithArgument*/
- offset= dissect_camel_DisconnectForwardConnectionWithArgumentArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 88: /*ContinueWithArgument*/
- /* XXX Same as opcode 56 ??? */
- offset= dissect_camel_ContinueWithArgumentArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 90: /*DisconnectLeg*/
- offset= dissect_camel_DisconnectLegArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 93: /*MoveLeg*/
- offset= dissect_camel_MoveLegArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 95: /*SplitLeg*/
- offset= dissect_camel_SplitLegArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 96: /*EntityReleased*/
- offset= dissect_camel_EntityReleasedArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 97: /*PlayTone*/
- offset= dissect_camel_PlayToneArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- default:
- cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
- proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode);
- /* todo call the asn.1 dissector */
- }
- return offset;
-}
-
+#include "packet-camel-table.c"
-static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,asn1_ctx_t *actx) {
- proto_item *cause;
-
- switch(opcode){
- case 32: /*initiateCallAttempt*/
- offset=dissect_camel_InitiateCallAttemptRes(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 48: /*PromptAndCollectUserInformation*/
- offset=dissect_camel_ReceivedInformationArg(FALSE, tvb, offset, actx, tree, -1);
- break;
- case 55: /*ActivityTest*/
- /* ActivityTest: no arguments - do nothing */
- break;
- case 70: /*ActivityTestGPRS*/
- /* ActivityTestGPRS: no arguments - do nothing */
- break;
- default:
- cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
- proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown returnResultData %d",opcode);
- }
- return offset;
-}
-static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset,asn1_ctx_t *actx) {
- proto_item *cause;
-
- switch(errorCode) {
- case 1: /*CancelFailed*/
- offset=dissect_camel_CancelFailedPARAM(TRUE, tvb, offset, actx, tree, -1);
- break;
- case 10: /*RequestedInfoError*/
- offset=dissect_camel_RequestedInfoErrorPARAM(TRUE, tvb, offset, actx, tree, -1);
- break;
- case 11: /*SystemFailure*/
- offset=dissect_camel_SystemFailurePARAM(TRUE, tvb, offset, actx, tree, -1);
- break;
- case 12: /*TaskRefused*/
- offset=dissect_camel_TaskRefusedPARAM(TRUE, tvb, offset, actx, tree, -1);
- break;
- default:
- cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnErrorData blob");
- proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown returnErrorData %d",errorCode);
- }
- return offset;
-}
static guint8 camel_pdu_type = 0;
static guint8 camel_pdu_size = 0;
-static void dissect_camelext_CAPGPRSReferenceNumber(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) {
- proto_item *item=NULL;
- proto_tree *tree=NULL;
- proto_item *camel_item=NULL;
- proto_tree *camel_tree=NULL;
- asn1_ctx_t asn1_ctx;
-
- asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
-
-
- if (check_col(pinfo->cinfo, COL_PROTOCOL)) {
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "Camel");
- }
-
- /* create display subtree for the protocol */
- if(parent_tree){
- camel_item = proto_tree_add_item(parent_tree, proto_camel, tvb, 0, -1, FALSE);
- camel_tree = proto_item_add_subtree(camel_item, ett_camel);
- }
- /* create display subtree for the protocol */
- if(camel_tree){
- item = proto_tree_add_text(camel_tree, tvb, 0, -1, "GPRS Reference Number");
- tree = proto_item_add_subtree(item, ett_camel_CAPGPRSReferenceNumber);
- }
- dissect_camel_CAPGPRSReferenceNumber(FALSE, tvb, 0, &asn1_ctx, tree, -1);
-}
static int
dissect_camel_camelPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_,proto_tree *tree, int hf_index) {
@@ -660,7 +328,8 @@ dissect_camel_camelPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " ");
}
- offset = dissect_camel_Component(FALSE, tvb, 0, actx, tree, hf_index);
+ is_ExtensionField =FALSE;
+ offset = dissect_camel_ROS(TRUE, tvb, offset, actx, tree, hf_index);
return offset;
}
@@ -729,8 +398,7 @@ void proto_reg_handoff_camel(void) {
register_ber_oid_dissector_handle("0.4.0.0.1.0.52.1",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-gsmSRF-to-gsmscf(52) version2(1)" );
register_ber_oid_dissector_handle("0.4.0.0.1.21.3.50",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) cAP3OE(21) ac(3) id-ac-CAP-gprsSSF-gsmSCF-AC(50)" );
register_ber_oid_dissector_handle("0.4.0.0.1.21.3.61",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) cAP3OE(21) ac(3) id-ac-cap3-sms-AC(61)" );
-
- register_ber_oid_dissector("0.4.0.0.1.1.5.2", dissect_camelext_CAPGPRSReferenceNumber, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) abstractSyntax(1) cap-GPRS-ReferenceNumber(5) version3(2)");
+#include "packet-camel-dis-tab.c"
} else {
range_foreach(ssn_range, range_delete_callback);
}
@@ -746,26 +414,18 @@ void proto_register_camel(void) {
module_t *camel_module;
/* List of fields */
static hf_register_info hf[] = {
+ { &hf_camel_extension_code_local,
+ { "local", "camel.extension_code_local",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "Extension local code", HFILL }},
+ { &hf_camel_error_code_local,
+ { "local", "camel.error_code_local",
+ FT_INT32, BASE_DEC, VALS(camel_err_code_string_vals), 0,
+ "ERROR code", HFILL }},
{ &hf_camel_cause_indicator, /* Currently not enabled */
{ "Cause indicator", "camel.cause_indicator",
FT_UINT8, BASE_DEC, VALS(q850_cause_code_vals), 0x7f,
"", HFILL }},
- { &hf_camel_addr_extension,
- { "Extension", "camel.addr_extension",
- FT_BOOLEAN, 8, TFS(&camel_extension_value), 0x80,
- "Extension", HFILL }},
- { &hf_camel_addr_natureOfAddressIndicator,
- { "Nature of address", "camel.addr_nature_of_addr",
- FT_UINT8, BASE_HEX, VALS(camel_nature_of_addr_indicator_values), 0x70,
- "Nature of address", HFILL }},
- { &hf_camel_addr_numberingPlanInd,
- { "Numbering plan indicator", "camel.addr_numbering_plan",
- FT_UINT8, BASE_HEX, VALS(camel_number_plan_values), 0x0f,
- "Numbering plan indicator", HFILL }},
- { &hf_camel_addr_digits,
- { "Address digits", "camel.address_digits",
- FT_STRING, BASE_NONE, NULL, 0,
- "Address digits", HFILL }},
{ &hf_digit,
{ "Digit Value", "camel.digit_value",
FT_UINT8, BASE_DEC, VALS(digit_value), 0, "Digit Value", HFILL }},
@@ -873,6 +533,10 @@ void proto_register_camel(void) {
FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
"DeltaTime between EventReportGPRS and ContinueGPRS", HFILL }
},
+ { &hf_camel_CAMEL_AChBillingChargingCharacteristics,
+ { "CAMEL-AChBillingChargingCharacteristics", "camel.CAMEL_AChBillingChargingCharacteristics",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "CAMEL-AChBillingChargingCharacteristics", HFILL }},
#ifdef REMOVED
#endif
@@ -883,9 +547,6 @@ void proto_register_camel(void) {
static gint *ett[] = {
&ett_camel,
&ett_camelisup_parameter,
- &ett_camel_isdn_address_string,
- &ett_camel_MSRadioAccessCapability,
- &ett_camel_MSNetworkCapability,
&ett_camel_AccessPointName,
&ett_camel_pdptypenumber,
&ett_camel_stat,
diff --git a/asn1/camel/packet-camel-template.h b/asn1/camel/packet-camel-template.h
index ccc0e9fadc..3d158079ba 100644
--- a/asn1/camel/packet-camel-template.h
+++ b/asn1/camel/packet-camel-template.h
@@ -42,6 +42,7 @@ void proto_register_camel(void);
WS_VAR_IMPORT const value_string camel_opr_code_strings[];
+const value_string camel_err_code_string_vals[];
/* #include "packet-camel-exp.h"*/
#endif /* PACKET_camel_H */