aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/camel
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2008-01-03 11:12:38 +0000
committerAnders Broman <anders.broman@ericsson.com>2008-01-03 11:12:38 +0000
commit99946861cae3660c2db88e601f59dbf339fd9711 (patch)
tree7d849891cc9b3229cdd089fe42cf536bd4be8d9d /asn1/camel
parent5c4f961f6e0aace5766260154823cb04f4eac0da (diff)
- MAP-MS-DataTypes.asn Add Id
- Camel fix bug "bug in CAMEL ApplyCharging message." http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1719 - get rid of ber_last_created_item() - add decoding of ServiceInteractionIndicatorsTwo items svn path=/trunk/; revision=23999
Diffstat (limited to 'asn1/camel')
-rw-r--r--asn1/camel/camel.cnf60
-rw-r--r--asn1/camel/packet-camel-template.c16
2 files changed, 40 insertions, 36 deletions
diff --git a/asn1/camel/camel.cnf b/asn1/camel/camel.cnf
index ed4b3c9a0e..c5d4510335 100644
--- a/asn1/camel/camel.cnf
+++ b/asn1/camel/camel.cnf
@@ -280,15 +280,13 @@ dissect_isup_called_party_number_parameter(parameter_tvb, tree, NULL);
tvbuff_t *parameter_tvb;
guint8 Cause_value;
-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_cause);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_cause);
dissect_q931_cause_ie(parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0), subtree, hf_camel_cause_indicator, &Cause_value);
#.END
@@ -298,15 +296,13 @@ proto_tree *subtree;
tvbuff_t *parameter_tvb;
guint8 Cause_value;
-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_RPcause);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_RPcause);
dissect_RP_cause_ie(parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0), subtree, hf_camel_RP_Cause, &Cause_value);
#.END
@@ -465,7 +461,6 @@ proto_tree *subtree;
#.FN_BODY EndUserAddress/pDPTypeNumber VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
- proto_item *item;
proto_tree *subtree;
%(DEFAULT_BODY)s
@@ -473,8 +468,7 @@ proto_tree *subtree;
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);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_pdptypenumber);
switch (PDPTypeOrganization){
case 0: /* ETSI */
proto_tree_add_item(tree, hf_camel_PDPTypeNumber_etsi, parameter_tvb, 0, 1, FALSE);
@@ -491,15 +485,13 @@ proto_tree *subtree;
#.FN_BODY EndUserAddress/pDPAddress 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_pdptypenumber);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_pdptypenumber);
switch (PDPTypeOrganization){
case 0: /* ETSI */
break;
@@ -522,15 +514,13 @@ proto_tree *subtree;
#----------------------------------------------------------------------------------------
#.FN_BODY LocationInformationGPRS/cellGlobalIdOrServiceAreaIdOrLAI
- proto_item *item;
proto_tree *subtree;
int start_offset;
start_offset = offset;
%(DEFAULT_BODY)s
- item = get_ber_last_created_item();
- subtree = proto_item_add_subtree(item, ett_camel_pdptypenumber);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_pdptypenumber);
if (tvb_reported_length_remaining(tvb,start_offset) == 7){
dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(TRUE, tvb, start_offset, actx, subtree, hf_camel_cellGlobalIdOrServiceAreaIdFixedLength);
@@ -542,91 +532,89 @@ proto_tree *subtree;
#----------------------------------------------------------------------------------------
#.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);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_CAMEL_AChBillingChargingCharacteristics);
dissect_camel_CAMEL_AChBillingChargingCharacteristics(FALSE, parameter_tvb, 0, actx, subtree, hf_camel_CAMEL_AChBillingChargingCharacteristics);
#.FN_BODY FCIBillingChargingCharacteristics 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_FCIBillingChargingCharacteristics);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_CAMEL_FCIBillingChargingCharacteristics);
dissect_camel_CAMEL_FCIBillingChargingCharacteristics(FALSE, parameter_tvb, 0, actx, subtree, hf_camel_CAMEL_FCIBillingChargingCharacteristics);
#.FN_BODY FCIGPRSBillingChargingCharacteristics 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_FCIGPRSBillingChargingCharacteristics);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_CAMEL_FCIGPRSBillingChargingCharacteristics);
dissect_camel_CAMEL_FCIGPRSBillingChargingCharacteristics(FALSE, parameter_tvb, 0, actx, subtree, hf_camel_CAMEL_FCIGPRSBillingChargingCharacteristics);
#.FN_BODY FCISMSBillingChargingCharacteristics 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_FCISMSBillingChargingCharacteristics);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_CAMEL_FCISMSBillingChargingCharacteristics);
dissect_camel_CAMEL_FCISMSBillingChargingCharacteristics(FALSE, parameter_tvb, 0, actx, subtree, hf_camel_CAMEL_FCISMSBillingChargingCharacteristics);
#.FN_BODY SCIBillingChargingCharacteristics 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_SCIBillingChargingCharacteristics);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_CAMEL_SCIBillingChargingCharacteristics);
dissect_camel_CAMEL_SCIBillingChargingCharacteristics(FALSE, parameter_tvb, 0, actx, subtree, hf_camel_CAMEL_SCIBillingChargingCharacteristics);
#.FN_BODY SCIGPRSBillingChargingCharacteristics 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_SCIGPRSBillingChargingCharacteristics);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_CAMEL_SCIGPRSBillingChargingCharacteristics);
dissect_camel_CAMEL_SCIGPRSBillingChargingCharacteristics(FALSE, parameter_tvb, 0, actx, subtree, hf_camel_CAMEL_SCIGPRSBillingChargingCharacteristics);
#.FN_BODY CallResult 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_CallResult);
+ subtree = proto_item_add_subtree(actx->created_item, ett_camel_CAMEL_CallResult);
dissect_camel_CAMEL_CallResult(FALSE, parameter_tvb, 0, actx, subtree, hf_camel_CAMEL_CallResult);
+# V3 and V4 incompatibillity bug #1719
+#.FN_BODY CAMEL-AChBillingChargingCharacteristics/timeDurationCharging/audibleIndicator
+ if (tvb_length_remaining(tvb,offset) < 2)
+ offset = dissect_camel_BOOLEAN(TRUE, tvb, offset, actx , tree, hf_camel_audibleIndicatorTone);
+ else
+%(DEFAULT_BODY)s
+
+#.END
+
#.TYPE_ATTR
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)
+ServiceInteractionIndicatorsTwo/holdTreatmentIndicator TYPE = FT_INT32 DISPLAY = BASE_DEC STRINGS = VALS(camel_holdTreatmentIndicator_values)
+ServiceInteractionIndicatorsTwo/cwTreatmentIndicator TYPE = FT_INT32 DISPLAY = BASE_DEC STRINGS = VALS(camel_cwTreatmentIndicator_values)
+ServiceInteractionIndicatorsTwo/ectTreatmentIndicator TYPE = FT_INT32 DISPLAY = BASE_DEC STRINGS = VALS(camel_ectTreatmentIndicator_values)
#.END
diff --git a/asn1/camel/packet-camel-template.c b/asn1/camel/packet-camel-template.c
index 7cf3303d27..9b37c7268d 100644
--- a/asn1/camel/packet-camel-template.c
+++ b/asn1/camel/packet-camel-template.c
@@ -251,6 +251,22 @@ static const value_string camel_RP_Cause_values[] = {
{ 0, NULL }
};
+static const value_string camel_holdTreatmentIndicator_values[] = {
+ { 0x01, "acceptHoldRequest" },
+ { 0x02, "rejectHoldRequest" },
+ { 0, NULL }
+};
+static const value_string camel_cwTreatmentIndicator_values[] = {
+ { 0x01, "acceptCw" },
+ { 0x02, "rejectCw" },
+ { 0, NULL }
+};
+static const value_string camel_ectTreatmentIndicator_values[] = {
+ { 0x01, "acceptEctRequest" },
+ { 0x02, "rejectEctRequest" },
+ { 0, NULL }
+};
+
#include "packet-camel-val.h"
#include "packet-camel-table.c"