aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2006-01-17 21:52:30 +0000
committerAnders Broman <anders.broman@ericsson.com>2006-01-17 21:52:30 +0000
commit4ecd261cfbe8977834e7e9b72c53513024770308 (patch)
treea5cb7daeb614d8eef2a53bc6a89c7a8085a27cf6 /asn1
parentdbf15d9e0b9c334914099e942eb3b9bb8dafb4c6 (diff)
Change some OPCODE decodes from respons to Invoke (bug fix), let gsm_a decode som IE:s.
svn path=/trunk/; revision=17050
Diffstat (limited to 'asn1')
-rw-r--r--asn1/camel/camel.cnf62
-rw-r--r--asn1/camel/packet-camel-template.c33
2 files changed, 82 insertions, 13 deletions
diff --git a/asn1/camel/camel.cnf b/asn1/camel/camel.cnf
index b85f243fe9..e2ad964850 100644
--- a/asn1/camel/camel.cnf
+++ b/asn1/camel/camel.cnf
@@ -60,19 +60,23 @@ MAP-CH-DataTypes gsm_map
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(tree, hf_camel_addr_extension, parameter_tvb, 0,1,FALSE);
+ proto_tree_add_item(subtree, hf_camel_addr_extension, parameter_tvb, 0,1,FALSE);
- proto_tree_add_item(tree, hf_camel_addr_natureOfAddressIndicator, parameter_tvb, 0,1,FALSE);
- proto_tree_add_item(tree, hf_camel_addr_numberingPlanInd, 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(tree, hf_camel_addr_digits, parameter_tvb, 1, -1, digit_str);
+ proto_tree_add_string(subtree, hf_camel_addr_digits, parameter_tvb, 1, -1, digit_str);
#.END
#----------------------------------------------------------------------------------------
@@ -278,6 +282,56 @@ tvbuff_t *parameter_tvb;
return offset;
dissect_isup_redirecting_number_parameter(parameter_tvb, tree, NULL);
+#.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);
+
+#.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);
+
+#.FN_PARS AccessPointName
+ VAL_PTR = &parameter_tvb
+
+#.FN_BODY AccessPointName
+
+ 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_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)
diff --git a/asn1/camel/packet-camel-template.c b/asn1/camel/packet-camel-template.c
index d3b0e61df8..7f7a165a10 100644
--- a/asn1/camel/packet-camel-template.c
+++ b/asn1/camel/packet-camel-template.c
@@ -51,6 +51,7 @@
#include "packet-e164.h"
#include "packet-isup.h"
#include "packet-gsm_map.h"
+#include "packet-gsm_a.h"
#include "packet-tcap.h"
#define PNAME "Camel"
@@ -92,6 +93,11 @@ static gint ett_camel_ReturnResult_result = -1;
static gint ett_camel_camelPDU = -1;
static gint ett_camelisup_parameter = -1;
static gint ett_camel_addr = -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;
+
#include "packet-camel-ett.c"
@@ -352,6 +358,9 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
case 71: /*ApplyChargingGPRS*/
offset=dissect_camel_ApplyChargingGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
+ case 72: /*ApplyChargingReportGPRS*/
+ offset=dissect_camel_ApplyChargingReportGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
+ break;
case 73: /*CancelGPRS*/
offset=dissect_camel_CancelGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
@@ -361,6 +370,9 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
case 75: /*ContinueGPRS*/
offset=dissect_camel_ContinueGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
+ case 76: /*EntityReleasedGPRS*/
+ offset=dissect_camel_EntityReleasedGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
+ break;
case 77: /*FurnishChargingInformationGPRS*/
offset=dissect_camel_FurnishChargingInformationGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
@@ -370,6 +382,9 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
case 79: /*ReleaseGPRS*/
offset=dissect_camel_ReleaseGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
+ case 80: /*EventReportGPRS*/
+ offset=dissect_camel_EventReportGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
+ break;
case 81: /*RequestReportGPRSEvent*/
offset=dissect_camel_RequestReportGPRSEventArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
@@ -423,15 +438,6 @@ static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff
case 70: /*ActivityTestGPRS*/
/* ActivityTestGPRS: no arguments - do nothing */
break;
- case 72: /*ApplyChargingReportGPRS*/
- offset=dissect_camel_ApplyChargingReportGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
- break;
- case 76: /*EntityReleasedGPRS*/
- offset=dissect_camel_EntityReleasedGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
- break;
- case 80: /*EventReportGPRS*/
- offset=dissect_camel_EventReportGPRSArg(FALSE, tvb, offset, pinfo, tree, -1);
- break;
default:
proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
}
@@ -707,6 +713,10 @@ void proto_register_camel(void) {
&ett_camel_camelPDU,
&ett_camelisup_parameter,
&ett_camel_addr,
+ &ett_camel_isdn_address_string,
+ &ett_camel_MSRadioAccessCapability,
+ &ett_camel_MSNetworkCapability,
+ &ett_camel_AccessPointName,
#include "packet-camel-ettarr.c"
};
@@ -719,6 +729,11 @@ void proto_register_camel(void) {
register_ber_oid_dissector_handle("0.4.0.0.1.0.50.1",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-gsmssf-to-gsmscf(50) version2(1)" );
register_ber_oid_dissector_handle("0.4.0.0.1.0.51.1",camel_handle, proto_camel, "itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network|umts-Network(1) applicationContext(0) cap-assist-handoff-gsmssf-to-gsmscf(51) version2(1)" );
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_name("0.4.0.0.1.1.5.2","iitu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) abstractSyntax(1) cap-GPRS-ReferenceNumber(5) version3(2)");
+
+
/* Register our configuration options, particularly our ssn:s */
/* Set default SSNs */