You are here: SwitchKit TCAP Interface User’s Guide > D Appendix - SKTAL Dialog and Component Structure Definitions > SKTAL_DLG and SKTAL_CPT Structure Definitions
SKTAL_DLG and SKTAL_CPT Structure Definitions
/*
* Quality of service indicator octet definitions:
* (To select more than one option OR together options)
*/
#define QOSI_RET_OPT (0x01) /* Return Option */
#define QOSI_SEQ_CTRL (0x02) /* Sequence Control */
#define QOSI_SLS_KEY (0x04) /* SLS key present */
#define QOSI_PRIORITY (0x08) /* Message priority octet present */
#define QOSI_NETWK_IND (0x10) /* Use provided network indicator */
#define QOSI_PROT_VER (0x20) /* Force inclusion of the TCAP ver */
/*
* TCAP_PN_TERMINATION Values:
*/
#define TCAP_END_BASIC (0) /* Basic end */
#define TCAP_END_PREARRANGED (1) /* Pre-arranged end */
/*
* TCAP_PN_CPT_PRESENT Values:
*/
#define TCAP_NO_CPT (0) /* No component(s) present */
#define TCAP_CPT_PRESENT (1) /* Component(s) present */
/*
* TCAP_PN_LAST_CPT Values:
*/
#define TCAP_MORE_CPTS (0) /* More component(s) to follow */
#define TCAP_LAST_CPT (1) /* This is the last component */
#define TCPEND_BASIC TCAP_END_BASIC
#define TCPEND_PREARRANGED TCAP_END_PREARRANGED
#define TCP_NO_CPT TCAP_NO_CPT
#define TCP_CPT_PRESENT TCAP_CPT_PRESENT
#define TCP_MORE_CPTS TCAP_MORE_CPTS
#define TCP_LAST_CPT TCAP_LAST_CPT
/* Size values for Manual TCAP Parser */
#define MAX_TCAP_CPT_SIZE (304)
#define MAX_NO_OF_TCAP_CPTS (4)
#define MAX_TCAP_DLG_SIZE (336)
#define MAX_TCAP_TRANS_SIZE \
(MAX_TCAP_DLG_SIZE + (MAX_TCAP_CPT_SIZE * MAX_NO_OF_TCAP_CPTS))
/********************************************************************
* *
* Structure definitions for Component Primitives *
* *
********************************************************************/
/*
* Definitions for buffer sizes in the 'C' structured
* representation of TCAP protocol primitives.
*
* Each value must allow space for the tag, length and associated data to be stored.
* The user may need to change the values given in
* order to support larger parameters or to reduce
* the size of the structures if it is known that
* certain parameters lengths will never be exceeded.
*/
#define IV_SIZE (4) /* space for 'invoke_id' parameter */
#define OP_SIZE (32) /* space for 'operation' parameter */
#define PR_SIZE (256) /* space for 'parameter' parameter */
#define ER_SIZE (32) /* space for 'error' parameter */
#define PB_SIZE (16) /* space for 'problem' parameter */
#define AC_SIZE (64)/* space for 'ac_name' parameter */
#define UI_SIZE (256) /* space for 'user_info' parameter */
#define AB_SIZE (256) /* space for 'abt_info' parameter */
/*
* Substructures for Components
*/
typedef struct cpt_inv_id
{
SKTAL_USHORT len;
SKTAL_OCTET data [IV_SIZE];
}
CPT_INV_ID;
typedef struct cpt_op
{
SKTAL_USHORT len;
SKTAL_OCTET data [OP_SIZE];
}
CPT_OP;
typedef struct cpt_param
{
SKTAL_USHORT len;
SKTAL_OCTET data [PR_SIZE];
}
CPT_PARAM;
typedef struct cpt_error_code
{
SKTAL_USHORT len;
SKTAL_OCTET data [ER_SIZE];
}
CPT_ERROR_CODE;
typedef struct cpt_problem
{
SKTAL_USHORT len;
SKTAL_OCTET data [PB_SIZE];
}
CPT_PROBLEM;
/*
* Invoke primitive. REQ and IND
* Invoke not last primitive. REQ and IND
*/
typedef struct cpt_invoke
{
CPT_INV_ID invoke_id;
CPT_OP operation;
CPT_PARAM param;
#if defined(CCITT)
SKTAL_USHORT opClass; /* 1, 2, 3 or 4 */
#dendif
SKTAL_USHORT timeout; /* 0 .. 409 */
CPT_INV_ID linked_id;
#define correlation_id linked_id /* FOR ANSI */
}
CPT_INVOKE;
/*
* Return result last primitive. REQ and IND
* Return result not last primitive. REQ and IND
*/
typedef struct cpt_result
{
CPT_INV_ID invoke_id;
#if defined(CCITT)
CPT_OP operation;
#endif
CPT_PARAM param;
}
CPT_RESULT;
/*
* User error primitive. REQ and IND
*/
typedef struct cpt_error
{
CPT_INV_ID invoke_id;
CPT_ERROR_CODE error;
CPT_PARAM param;
}
CPT_ERROR;
/*
* User reject primitive. REQ and IND
* Local reject primitive. IND only.
* Remote reject primitive. IND only.
*/
typedef struct cpt_reject
{
CPT_INV_ID invoke_id;
CPT_PROBLEM problem;
#if defined(ANSI)
CPT_PARAM param;
#endif
}
CPT_REJECT;
/*
* User cancel primitive. REQ only.
* Local cancel primitive. IND only.
*/
typedef struct cpt_cancel
{
CPT_INV_ID invoke_id;
}
CPT_CANCEL;
/*
* Timer Reset primitive (ITU White Book 97 only). REQ only.
*/
#if defined(CCITT)
typedef struct cpt_timerReset
{
CPT_INV_ID invoke_id;
}
CPT_TIMER_RESET;
#endif
/*
* Union of all of the above
*/
typedef struct tcap_cpt
{
SKTAL_USHORT last_component; /* either 0 or non-zero */
SKTAL_USHORT ptype; /* prim type (TCPPT_xxx values) */
Union
{
CPT_INVOKE invoke;
CPT_RESULT result;
CPT_ERROR error;
CPT_REJECT reject;
CPT_CANCEL cancel;
#if defined(CCITT)
CPT_TIMER_RESET timerReset;
#endif
}
u;
}
TCAP_CPT;
/********************************************************************
* *
* Structure definitions for Dialogue Primitives *
* *
********************************************************************/
/*
* Dialog substructures
*/
typedef struct dlg_qos
{
SKTAL_OCTET indicator;
SKTAL_OCTET sls_key;
SKTAL_OCTET priority;
SKTAL_OCTET networkInd;
}
DLG_QOS;
typedef struct ac_name
{
SKTAL_USHORT len;
SKTAL_OCTET data [AC_SIZE];
}
DLG_AC_NAME;
typedef struct usr_inf
{
SKTAL_USHORT len;
SKTAL_OCTET data [UI_SIZE];
}
DLG_USR_INF;
typedef struct abt_inf
{
SKTAL_USHORT len;
SKTAL_OCTET data[AB_SIZE];
}
DLG_ABT_INF;
/*
* ITU and ANSI UNI. REQ and IND.
*/
typedef struct dlg_uni
{
SKTAL_USHORT cpt_present; /* 0 or 1 */
DLG_QOS qos;
DLG_AC_NAME ac_name;
DLG_USR_INF user_info;
SCCP_ADDR orig_addr;
SCCP_ADDR dest_addr;
MTP3_POINT_CODE opc; /* for use when address doesn't include */
MTP3_POINT_CODE dpc; /* for use when address doesn't include */
}
DLG_UNI;
/*
* ITU BEGIN, ANSI QUERY W/PERM and WO/PERM. REQ and IND.
*/
typedef struct dlg_begin
{
SKTAL_USHORT cpt_present; /* 0 or 1 */
DLG_QOS qos;
DLG_AC_NAME ac_name;
DLG_USR_INF user_info;
SCCP_ADDR orig_addr;
SCCP_ADDR dest_addr;
MTP3_POINT_CODE opc; /* for use when address doesn't include */
MTP3_POINT_CODE dpc; /* for use when address doesn't include */
}
DLG_BEGIN;
/*
* ITU CONTINUE, ANSI CONV W/PERM and WO/PERM. REQ and IND.
*/
typedef struct dlg_continue
{
SKTAL_USHORT cpt_present; /* 0 or 1 */
DLG_QOS qos; /* Indication only. Ignore for request */
DLG_AC_NAME ac_name;
DLG_USR_INF user_info;
SCCP_ADDR orig_addr;
MTP3_POINT_CODE opc; /* for use when address doesn't include */
}
DLG_CONTINUE;
/*
* ITU END, ANSI RESP. REQ and IND.
*/
typedef struct dlg_end
{
SKTAL_USHORT cpt_present; /* 0 or 1 */
DLG_QOS qos; /* Indication only. Ignore for request */
DLG_AC_NAME ac_name;
DLG_USR_INF user_info;
SKTAL_OCTET termination; /* 0 or 1 */
}
DLG_END;
/*
* ITU U-ABORT. REQ only.
* ITU P-ABORT. IND only.
* ANSI ABORT, IND only.
*/
typedef struct dlg_abort
{
SKTAL_USHORT abort_reason;
DLG_QOS qos; /* Indication only. Ignore for request */
DLG_AC_NAME ac_name; /* P-ABORT does not include this */
DLG_USR_INF user_info; /* P-ABORT does not include this */
DLG_ABT_INF abort_info; /* ANSI only */
}
DLG_ABORT;
/*
* ITU NOTICE and ANSI NOTICE. IND only (based on QOS return option).
*/
typedef struct dlg_notice
{
SKTAL_OCTET report_cause;
SKTAL_OCTET user_data_len; /* Presence depends on manufacturer */
SCCP_ADDR orig_addr; /* Presence depends on manufacturer */
SCCP_ADDR dest_addr; /* Presence depends on manufacturer */
SCCP_DATA user_data; /* Presence depends on manufacturer */
}
DLG_NOTICE;
/*
* Union of above types
*/
typedef struct tcap_dlg
{
SKTAL_USHORT ptype; /* primitive type (TCPPT_xxx values) */
Union
{
DLG_UNI uni;
DLG_BEGIN begin;
DLG_CONTINUE cont;
DLG_END end;
DLG_ABORT abort;
DLG_NOTICE notice;
}
u;
}
SKTAL_DLG;