diff options
author | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-07-05 13:18:28 +0000 |
---|---|---|
committer | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-07-05 13:18:28 +0000 |
commit | f46560990cbe961ceb6ade484d70b5d2d7c30fc9 (patch) | |
tree | 1f15b2ffae19d6006b9a3f598245da9dbe4eba10 /asn1/camel | |
parent | 005b53876a9fcfe16262994df9a6265b7fa50305 (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/Makefile | 3 | ||||
-rw-r--r-- | asn1/camel/Makefile.nmake | 5 | ||||
-rw-r--r-- | asn1/camel/TCAPMessages.asn | 21 | ||||
-rw-r--r-- | asn1/camel/camel.cnf | 369 | ||||
-rw-r--r-- | asn1/camel/packet-camel-template.c | 423 | ||||
-rw-r--r-- | asn1/camel/packet-camel-template.h | 1 |
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 = ¶meter_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 = ¶meter_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 = ¶meter_tvb - -#.FN_BODY BearerCap - +#.FN_BODY BearerCapability/bearerCap VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb; %(DEFAULT_BODY)s @@ -295,28 +368,7 @@ tvbuff_t *parameter_tvb; #.END #---------------------------------------------------------------------------------------- -#.FN_PARS RedirectionInformation - - VAL_PTR = ¶meter_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 = ¶meter_tvb - -#.FN_BODY OriginalCalledPartyID +#.FN_BODY OriginalCalledPartyID VAL_PTR = ¶meter_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 = ¶meter_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 = ¶meter_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 = ¶meter_tvb - -#.FN_BODY PDPTypeOrganization +#.FN_BODY EndUserAddress/pDPTypeOrganization VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb; @@ -398,10 +409,7 @@ tvbuff_t *parameter_tvb; #.END #---------------------------------------------------------------------------------------- -#.FN_PARS PDPTypeNumber - VAL_PTR = ¶meter_tvb - -#.FN_BODY PDPTypeNumber +#.FN_BODY EndUserAddress/pDPTypeNumber VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb; proto_item *item; @@ -426,11 +434,8 @@ tvbuff_t *parameter_tvb; } #.END -#---------------------------------------------------------------------------------------- -#.FN_PARS PDPAddress - VAL_PTR = ¶meter_tvb -#.FN_BODY PDPAddress +#.FN_BODY EndUserAddress/pDPAddress VAL_PTR = ¶meter_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 = ¶meter_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 */ |