aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/inap/inap.cnf
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/asn1/inap/inap.cnf')
-rw-r--r--epan/dissectors/asn1/inap/inap.cnf323
1 files changed, 323 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/inap/inap.cnf b/epan/dissectors/asn1/inap/inap.cnf
new file mode 100644
index 0000000000..49aaba5f5b
--- /dev/null
+++ b/epan/dissectors/asn1/inap/inap.cnf
@@ -0,0 +1,323 @@
+# inap.cnf
+# inap conformation file
+
+#.IMPORT ../dap/dap-exp.cnf
+#.IMPORT ../dsp/dsp-exp.cnf
+
+#.EXPORTS
+BothwayThroughConnectionInd
+CallingPartysCategory
+CriticalityType
+Duration
+HighLayerCompatibility
+Integer4
+Interval
+LegID
+MiscCallInfo
+RedirectionInformation
+ServiceKey
+
+#.NO_EMIT ONLY_VALS
+ROS
+
+#.OMIT_ASSIGNMENT
+# Removed as they are giving 'defined but not used' warnings currently.
+Priority
+RejectProblem
+#.END
+
+#.TYPE_RENAME
+ReturnResult/result/result ResultArgument
+
+#.FIELD_RENAME
+Invoke/linkedId/present linkedIdPresent
+Reject/problem/invoke invokeProblem
+Reject/problem/returnError returnErrorProblem
+ReturnResult/result/result resultArgument
+Reject/problem/returnResult problemReturnResult
+
+#.OMIT_ASSIGNMENT Remote-Operations-Information-Objects
+Bind
+Unbind
+#.END
+
+#.PDU
+ERROR.&ParameterType
+OPERATION.&ArgumentType
+OPERATION.&ResultType
+
+# This table creates the value_sting to name Inap operation codes and errors
+# in file packet-inap-table.c which is included in the template file
+#
+#.TABLE_HDR
+/* INAP OPERATIONS */
+const value_string inap_opr_code_strings[] = {
+#.TABLE_BODY OPERATION.&operationCode
+ { %(&operationCode)-40s, "%(_ident)s" },
+#.TABLE_FTR
+ { 0, NULL }
+};
+#.END
+
+#.TABLE_HDR
+/* INAP ERRORS */
+static const value_string inap_err_code_string_vals[] = {
+#.TABLE_BODY ERROR.&errorCode
+ { %(&errorCode)-40s, "%(_ident)s" },
+#.TABLE_FTR
+ { 0, NULL }
+};
+#.END
+
+# This table creates the switch() to branch on Camel operation codes and errors
+# in file packet-inap-table2.c which is included in the template file
+#
+#.TABLE2_HDR
+static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) {
+
+ switch(opcode){
+#.TABLE2_BODY OPERATION.&ArgumentType
+ case %(&operationCode)s: /* %(_ident)s */
+ offset= %(_argument_pdu)s(tvb, actx->pinfo , tree , NULL);
+ break;
+#.TABLE2_FTR
+ default:
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_inap_unknown_invokeData,
+ tvb, offset, -1, "Unknown invokeData %d", opcode);
+ /* todo call the asn.1 dissector */
+ break;
+ }
+ return offset;
+}
+#.END
+#.TABLE2_HDR
+static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,asn1_ctx_t *actx) {
+ switch(opcode){
+#.TABLE2_BODY OPERATION.&ResultType
+ case %(&operationCode)s: /* %(_ident)s */
+ offset= %(_result_pdu)s(tvb, actx->pinfo , tree , NULL);
+ break;
+#.TABLE2_FTR
+ default:
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_inap_unknown_returnResultData,
+ tvb, offset, -1, "Unknown returnResultData %d", opcode);
+ }
+ return offset;
+}
+#.END
+#.TABLE2_HDR
+static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset,asn1_ctx_t *actx) {
+ switch(errorCode) {
+#.TABLE2_BODY ERROR.&ParameterType
+ case %(&errorCode)s: /* %(_ident)s */
+ %(_parameter_pdu)s(tvb, actx->pinfo , tree , NULL);
+ break;
+#.TABLE2_FTR
+ default:
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_inap_unknown_returnErrorData,
+ tvb, offset, -1, "Unknown returnErrorData %d", opcode);
+ }
+ return offset;
+}
+#.END
+
+# Create a table of opcode and corresponding args and res
+#.TABLE11_HDR
+typedef struct _inap_op_t {
+ gint32 opcode;
+ dissector_t arg_pdu;
+ dissector_t res_pdu;
+} inap_op_t;
+
+static const inap_op_t inap_op_tab[] = {
+#.TABLE11_BODY OPERATION.&operationCode
+ /* %(_name)-31s */ { %(&operationCode)-40s, %(_argument_pdu)-45s, %(_result_pdu)s },
+#.TABLE11_FTR
+};
+#.END
+
+#.TABLE11_HDR
+typedef struct _inap_err_t {
+ gint32 errcode;
+ dissector_t err_pdu;
+} inap_err_t;
+
+static const inap_err_t inap_err_tab[] = {
+#.TABLE11_BODY ERROR.&errorCode
+ /* %(_name)-30s */ { %(&errorCode)4s, %(_parameter_pdu)s },
+#.TABLE11_FTR
+};
+#.END
+
+# ROS stuff here XXX change when TCAP is redone.
+
+#.FN_BODY Code/local VAL_PTR = &opcode
+ %(DEFAULT_BODY)s
+ if (inap_opcode_type == INAP_OPCODE_RETURN_ERROR){
+ errorCode = opcode;
+ col_append_str(actx->pinfo->cinfo, COL_INFO,
+ val_to_str(errorCode, inap_err_code_string_vals, "Unknown INAP error (%%u)"));
+ col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
+ col_set_fence(actx->pinfo->cinfo, COL_INFO);
+ }else{
+ col_append_str(actx->pinfo->cinfo, COL_INFO,
+ val_to_str(opcode, inap_opr_code_strings, "Unknown INAP (%%u)"));
+ col_append_str(actx->pinfo->cinfo, COL_INFO, " ");
+ col_set_fence(actx->pinfo->cinfo, COL_INFO);
+ }
+
+#.FN_HDR Invoke
+ inap_opcode_type=INAP_OPCODE_INVOKE;
+
+#.FN_HDR ReturnResult
+ inap_opcode_type=INAP_OPCODE_RETURN_RESULT;
+
+#.FN_HDR ReturnError
+ inap_opcode_type=INAP_OPCODE_RETURN_ERROR;
+
+#.FN_HDR Reject
+ inap_opcode_type=INAP_OPCODE_REJECT;
+
+#.FN_BODY Invoke/argument
+ offset = dissect_invokeData(tree, tvb, offset, actx);
+
+#.FN_BODY ReturnResult/result/result
+ offset = dissect_returnResultData(tree, tvb, offset, actx);
+
+#.FN_BODY ReturnError/parameter
+ offset = dissect_returnErrorData(tree, tvb, offset, actx);
+
+# END ROS
+
+
+#.FN_BODY TriggerData/triggerPar
+/* FIX ME */
+
+#.FN_BODY ScriptEventArg/uIScriptResult
+/* FIX ME */
+
+#.FN_BODY ScriptCloseArg/uIScriptSpecificInfo
+/* FIX ME */
+
+#.FN_BODY ScriptInformationArg/uIScriptSpecificInfo
+/* FIX ME */
+#.FN_BODY ScriptRunArg/uIScriptSpecificInfo
+/* FIX ME */
+
+#.FN_HDR ExtensionField
+ obj_id = NULL;
+
+#.FN_PARS Code/global FN_VARIANT = _str VAL_PTR = &obj_id
+
+#.FN_BODY ExtensionField/value
+ proto_tree *ext_tree;
+ ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_inap_extension_data, NULL, "Extension Data");
+ if (obj_id){
+ offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, ext_tree, NULL);
+ }else{
+ call_dissector(data_handle, tvb, actx->pinfo, ext_tree);
+ offset = tvb_reported_length_remaining(tvb,offset);
+ }
+
+
+
+#.FN_BODY CalledPartyNumber VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+
+dissect_isup_called_party_number_parameter(parameter_tvb, tree, NULL);
+
+#.FN_BODY CallingPartyNumber VAL_PTR = &parameter_tvb
+ tvbuff_t *parameter_tvb;
+
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+
+ dissect_isup_calling_party_number_parameter(parameter_tvb, tree, NULL);
+
+
+#.FN_BODY BearerCapability/bearerCap VAL_PTR = &parameter_tvb
+
+ tvbuff_t *parameter_tvb;
+
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+
+ dissect_q931_bearer_capability_ie(parameter_tvb, 0, tvb_reported_length_remaining(parameter_tvb,0), tree);
+
+#.FN_BODY RedirectionInformation VAL_PTR = &parameter_tvb
+
+ tvbuff_t *parameter_tvb;
+
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+
+ dissect_isup_redirection_information_parameter(parameter_tvb, tree, NULL);
+
+#.FN_BODY OriginalCalledPartyID VAL_PTR = &parameter_tvb
+
+ tvbuff_t *parameter_tvb;
+
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+ dissect_isup_original_called_number_parameter(parameter_tvb, actx->pinfo, tree, NULL);
+
+#.FN_BODY RedirectingPartyID VAL_PTR = &parameter_tvb
+
+ tvbuff_t *parameter_tvb;
+
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+ dissect_isup_redirecting_number_parameter(parameter_tvb, tree, NULL);
+
+#.FN_BODY HighLayerCompatibility VAL_PTR = &parameter_tvb
+/*
+ * -- Indicates the teleservice. For encoding, DSS1 (Q.931) is used.
+ */
+ tvbuff_t *parameter_tvb;
+ proto_tree *subtree;
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+
+ subtree = proto_item_add_subtree(actx->created_item, ett_inap_HighLayerCompatibility);
+ dissect_q931_high_layer_compat_ie(parameter_tvb, 0, tvb_reported_length_remaining(parameter_tvb,0), subtree);
+
+ #.FN_BODY Cause VAL_PTR = &parameter_tvb
+ /*
+ * -- Indicates the cause for interface related information. Refer to the Q.763 Cause parameter for encoding
+ * -- For the use of cause and location values refer to Q.850.
+ */
+tvbuff_t *parameter_tvb;
+guint8 Cause_value;
+proto_tree *subtree;
+
+%(DEFAULT_BODY)s
+
+ if (!parameter_tvb)
+ return offset;
+ subtree = proto_item_add_subtree(actx->created_item, ett_inap_cause);
+
+ dissect_q931_cause_ie(parameter_tvb, 0, tvb_reported_length_remaining(parameter_tvb,0), subtree, hf_inap_cause_indicator, &Cause_value, isup_parameter_type_value);
+
+#.TYPE_ATTR
+CallingPartysCategory TYPE = FT_UINT16 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS = &isup_calling_partys_category_value_ext
+
+#.END
+
+