![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
The Transaction Capababilities Application Part (TCAP) Interface design is explained in the following sections:
Overview | - A brief overview of the Transaction Capabilities Application Part (TCAP) Interface. |
Model | - A model of the Transaction Capabilities Application Part (TCAP). |
Services | - Services provided by the Transaction Capabilities Application Part (TCAP) provider. |
Primitives | - Primitives described at the Transaction Capabilities Application Part (TCAP) Interface. |
Sequences | - Allowed sequences of primitives and interface state transitions |
Header File | - A header file which provides definitions for the Transaction Capabilities Application Part (TCAP) Interface. |
The SS7 Transaction Capabilities Application Part (TCAP) modules provide the SS7 Transaction (TR) Sub-Layer and Component (TC) Sub-Layer state machine behaviour such as specified in Q.771-774 and ANSI T1.114 and ETSI ????. This state machine behavior is common to all SS7 TCAP application parts (e.g. INAP, MAP) and depends upon the capabilities of the NPI interface to the Signalling Connection Control Part (SCCP) driver. The TCAP-User pushes a cloned instance of the TR and TC modules onto each SCCP stream which it opens. The module is either pushed explicitly by the SCCP-User or is configured on the driver's autopush list.
The resulting streams module arrangement is illustrated in the diagram.
The Transaction (TR) and Component (TC) Sub-layer modules extend the abilities
of Layer 3 OSI by providing transaction and component services. As such, the
TR and TC modules provide all of the NPI connection-less services in addition
to transaction services (TR) and component services (TC) in an NPI
connection-oriented fashion.
Model
The Transaction (TR) Sub-Layer, as described in ITU-T Recomendation Q.771) is responsible for providing correlation of messages into a transaction service over an OSI Level 3 (NSD) network provider. The SCCP (Signalling Connection Control Part) of ITU-T Recommendation Q.711 is such an NSD service provider.
The Component (TC) Sub-Layer, as described in ITU-T Recomendation Q.771) is responsible for providing correlation of components into a Remote Operation Service Execution (ROSE) service over the Transction (TR) Sub-Layer services.
Each layer and sub-layer in the SS7 Protocol Stack has two standards:
This specification is an implementation of the the first type of standard. It specifies the services and service primitive interface of the Transaction (TR) Sub-Layer and Component (TC) Sub-Layer of the Transaction Capablities Application Part (TCAP). The following figure depicts the abstract view of TR and TC interface definitions:
Figure 1. Abstract View of TR and TC Interfaces
The Transaction (TR) Sub-Layer is the boundary between the TR-Provider and the TR-User in the Q.771 reference model. The (TC) Sub-Layer is the boundary between the TC-Provider (TR-User) and the TC-User in the Q.771 reference model. The TR-User is the user of the Transaction (TR) Sub-Layer services, and the TR-Provider is the provider of these services. The TC-User is the user of the Component (TC) Sub-Layer services, and the TC-Provider is the provider of these services. The TC-Provider is a TR-User.
Each interface consists of a set of primitives that provide access to the TR or TC services, plus the rules for using those primitives (state transition rules). A TR or TC interface service primitive might request a particular service or indicate a pending event.
The service primitives that make up these interfaces are defined as STREAMS
messages that are transferred between the user and provider fo the service.
TR and TC interfaces are kernel-level interfaces, and are targetted for
STREAMS protocol modules that either use or provide Transaction or Component
Sub-Layer services. In addition, user programs or libraries that wish to
access a STREAMS-based Transaction or Component provider directly may do so
using the putmsg(2)
and getmsg(2)
system calls.
Referring to the abstract view of the TR and TC interfaces (Figure 1), the
TR-Provider is configured as a STREAMS module pushed over a SCCP stream. The
TR-User opens an SCCP or other N-Provider stream using the
open(2)
system call and pushes (or has autopushed) the TR
and TC modules using the ioctl(2)
system call. After the
stream is created and the module(s) pushed, the TR or TC user and provider
communicate via the messages presented later in this specification.
The TR and TC interfaces are intended to free TR and TC users from specific knowledge of the characteristics of the TR or TC provider and the underlying N-Provider. Specifically, the definition of TR and TC hopes to acheive the goal of allowing a TR or TC user to be implemented independent of a specific network service provider. Any TR or TC provider that conforms to the TR and TC interface specifications may be substituted beneath the TR or TC user to provide the transaction or component services. Support of a new TR or TC provider should not require any changes to the implementation of the TR or TC user.
The features of the TR and TC interfaces are defined in terms of the services provided by the TR and TC provider, and the individual primitives that may flow between TR and TC user and provider.
The services supported by the TC and TR interface are based on four distinct classes of transaction service. In addition, the both the TR and TC interfaces support services for local management.
The main features of class 1 transaction service are:
There are three phases to each transaction: Transaction Initiation; User Data and Component Transfer; and Transaction Termination.
The main features of class 2 transaction service are:
There are three phases to each transaction: Transaction Initiation; User Data and Component Transfer; and Transaction Termination.
The main features of class 3 transaction service are:
There are three phases to each transaction: Transaction Initiation; User Data and Component Transfer; and Transaction Termination.
The main features of class 4 transaction service are:
Class 4 transaction services has no separate phases. Each set of user data and components is transmitted from source to destination independently, appropriate addressing information is included with each transaction. As the transaction are transmitted independently from source to destination, there are, in general, no guarantees of proper sequence and completeness of the data stream.
The TR and TC interface sepcifications also define a set of local management functions that apply to all four transaction service classes. These local management services have local significance only.
Tables 1 and 2 summarize the TR and TC service primitives by their state and service.
Phase | Service | Primitives |
---|---|---|
Local Management |
Information Reporting |
TR_INFO_REQ ,
TR_INFO_ACK ,
TR_ERROR_ACK
|
Bind |
TR_BIND_REQ ,
TR_BIND_ACK ,
TR_UNBIND_REQ ,
TR_OK_ACK ,
TR_ERROR_ACK
|
|
Options Management |
TR_OPTMGMT_REQ ,
TR_OPTMGMT_ACK ,
TR_ERROR_ACK
|
|
Transaction Initiation |
Transaction Initiation |
TR_BEGIN_REQ ,
TR_BEGIN_IND ,
TR_BEGIN_RES ,
TR_BEGIN_CON ,
TR_TOKEN_REQ ,
TR_TOKEN_ACK ,
TR_OK_ACK ,
TR_ERROR_ACK
|
Transaction Dialog |
Data Transfer |
TR_CONT_REQ ,
TR_CONT_IND
|
Reset |
TR_NOTICE_IND
|
|
Transaction Termination |
Normal Termination |
TR_END_REQ ,
TR_END_IND ,
TR_OK_ACK ,
TR_ERROR_ACK
|
Abnormal Termination |
TR_ABORT_REQ ,
TR_ABORT_IND ,
TR_OK_ACK ,
TR_ERROR_ACK
|
Phase | Service | Primitives |
---|---|---|
Local Management |
Information Reporting |
TR_INFO_REQ ,
TR_INFO_ACK ,
TR_ERROR_ACK
|
Bind |
TR_BIND_REQ ,
TR_BIND_ACK ,
TR_UNBIND_REQ ,
TR_OK_ACK ,
TR_ERROR_ACK
|
|
Options Management |
TR_OPTMGMT_REQ ,
TR_OPTMGMT_ACK ,
TR_ERROR_ACK
|
|
Transaction Dialog |
Data Transfer |
TR_UNI_REQ ,
TR_UNI_IND ,
TR_NOTICE_IND
|
This section describes the services of the TR and TC primitives. Time-sequence diagrams that illustrate the sequence of primitives are included. (Conventions for the time-sequence diagrams are defined in CCITT X.210.) The format of the primitives will be defined later in this document.
The services defined in this section are outside the scope of the international standards. These services apply to all classes of transaction service. They are invoked for the initialization/de-initialization of a stream connected to a TR or TC provider. They are also used to manage options supported by the TR and TC provider and to report information on the supported parameter values.
This service provides information on the options provided by the TR and TC provider.
TR_INFO_REQ
, TC_INFO_REQ
: These primitives
request that the TR or TC provider return the values of all the supported
protocol parameters. This request may be invoked during any phase.
TR_INFO_ACK
, TC_INFO_ACK
: These primitives are
in response to the TR_INFO_REQ
or TC_INFO_REQ
primitives and returns the values of the supported protocol parameters to the
TR or TC user.
The sequence of primitives for TR and TC information management is shown in Figure 2.
Figure 2. Sequence of Primitives: TR/TC Information Reporting
Service
This service allows an underlying network address to be associated with a stream. It allows the TR/TC user to negotiate the number of dialog initiations that can remain unconfirmed for the TR/TC user (a dialog initiation is considered unconfirmed while it is awaiting a corresponding transaction repsonse or end, or abort, request from the TR/TC user). This service also defines a mechanism that allows a stream to be reserved to handle incoming dialog initiations only. The stream is referred to as the listener stream.
TR_BIND_REQ
, TC_BIND_REQ
: These primitives
request that the TR/TC user be bound to a particular underlying network
address, and negotiate the number of allowable outstanding dialog initiations
for that address.
TR_BIND_ACK
, TC_BIND_ACK
: These primitives are
in response to the TR_BIND_REQ
and TC_BIND_REQ
primitives and indicate to the user that the specified TR/TC user has been
bound to an underlying network address.
/***************************************************************************** @(#) $Id: tc.h,v 0.7.8.1 2001/12/11 13:16:06 brian Exp $ ----------------------------------------------------------------------------- Copyright (C) 1997-2001 OpenSS7 Corporation. All Rights Reserved. PUBLIC LICENSE This license is provided without fee, provided that the above copy- right notice and this public license must be retained on all copies, extracts, compilations and derivative works. Use or distribution of this work in a manner that restricts its use except as provided here will render this license void. The author(s) hereby waive any and all other restrictions in respect of their copyright in this software and its associated documentation. The authors(s) of this software place in the public domain any novel methods or processes which are embodied in this software. The author(s) undertook to write it for the sake of the advancement of the Arts and Sciences, but it is provided as is, and the author(s) will not take any responsibility in it. ----------------------------------------------------------------------------- U.S. GOVERNMENT RESTRICTED RIGHTS. If you are licensing this Software on behalf of the U.S. Government ("Government"), the following provisions apply to you. If the Software is supplied by the Department of Defense ("DoD"), it is classified as "Commercial Computer Software" under paragraph 252.227-7014 of the DoD Supplement to the Federal Acquisition Regulations ("DFARS") (or any successor regulations) and the Government is acquiring only the license rights granted herein (the license rights customarily provided to non-Government users). If the Software is supplied to any unit or agency of the Government other than DoD, it is classified as "Restricted Computer Software" and the Government's rights in the Software are defined in paragraph 52.227-19 of the Federal Acquisition Regulations ("FAR") (or any success regulations) or, in the cases of NASA, in paragraph 18.52.227-86 of the NASA Supplement to the FAR (or any successor regulations). ----------------------------------------------------------------------------- Last Modified $Date: 2001/12/11 13:16:06 $ by $Author: brian $ *****************************************************************************/ #ifndef __SS7_TC_H__ #define __SS7_TC_H__ #ident "@(#) $Name: $($Revision: 0.7.8.1 $) Copyright (c) 1997-2001 OpenSS7 Corporation." /* * Primitive definitions for TC-Users and TC-Providers. */ #define TC_INFO_REQ 0 /* Information request */ #define TC_BIND_REQ 1 /* Bind to network address */ #define TC_UNBIND_REQ 2 /* Unbind from network address */ #define TC_SUBS_BIND_REQ 3 /* Subsequent bind to network address */ #define TC_SUBS_UNBIND_REQ 4 /* Subsequent unbind from network address */ #define TC_OPTMGMT_REQ 5 /* Options management */ #define TC_UNI_REQ 6 /* Unidirectional request */ #define TC_BEGIN_REQ 7 /* Begin transaction request */ #define TC_BEGIN_RES 8 /* Begin transaction response */ #define TC_CONT_REQ 9 /* Continue transaction request */ #define TC_END_REQ 10 /* End transaction request */ #define TC_ABORT_REQ 11 /* User abort request */ #define TC_INFO_ACK 12 /* Information acknowledgement */ #define TC_BIND_ACK 13 /* Bound to network address */ #define TC_SUBS_BIND_ACK 14 /* Bound to network address */ #define TC_OK_ACK 15 /* Success acknowledgement */ #define TC_ERROR_ACK 16 /* Error acknowledgement */ #define TC_OPTMGMT_ACK 17 /* Optionas management acknowledgement */ #define TC_UNI_IND 18 /* Unidirectional indication */ #define TC_BEGIN_IND 19 /* Begin transaction indication */ #define TC_BEGIN_CON 20 /* Begin transaction confirmation-Continue */ #define TC_CONT_IND 21 /* Continue transaction indication */ #define TC_END_IND 22 /* End transaction indication */ #define TC_ABORT_IND 23 /* TC-User abort indication */ #define TC_NOTICE_IND 24 /* Network Service Provider notice */ /* * Additional primitives for component handling. */ #define TC_INVOKE_REQ 26 /* Invocation of an operation */ #define TC_RESULT_REQ 27 /* Result of a successful operation */ #define TC_ERROR_REQ 28 /* Error reply to an invoked operation */ #define TC_CANCEL_REQ 29 /* Termination of an operation invocation */ #define TC_REJECT_REQ 30 /* Rejection of a component */ #define TC_INVOKE_IND 32 /* Invocation of an operation */ #define TC_RESULT_IND 33 /* Result of a successful operation */ #define TC_ERROR_IND 34 /* Error reply to an invoked operation */ #define TC_CANCEL_IND 35 /* Termination of an operation invocation */ #define TC_REJECT_IND 36 /* Rejection of a component */ #define TC_QOS_SEL1 0x0701 typedef struct { ulong type; /* Always TC_QOS_SEL1 */ ulong flags; /* Return option */ ulong seq_ctrl; /* Sequence Control */ ulong priority; /* Message priority */ } TC_qos_sel1_t; /* * TRPI interface states */ #define TRS_UNBND 0 /* TR user not bound to network address */ #define TRS_WACK_BREQ 1 /* Awaiting acknowledgement of N_BIND_REQ */ #define TRS_WACK_UREQ 2 /* Pending acknowledgement for N_UNBIND_REQ */ #define TRS_IDLE 3 /* Idle, no connection */ #define TRS_WACK_OPTREQ 4 /* Pending acknowledgement of N_OPTMGMT_REQ */ #define TRS_WACK_RRES 5 /* Pending acknowledgement of N_RESET_RES */ #define TRS_WCON_CREQ 6 /* Pending confirmation of N_CONN_REQ */ #define TRS_WRES_CIND 7 /* Pending response of N_CONN_REQ */ #define TRS_WACK_CRES 8 /* Pending acknowledgement of N_CONN_RES */ #define TRS_DATA_XFER 9 /* Connection-mode data transfer */ #define TRS_WCON_RREQ 10 /* Pending confirmation of N_RESET_REQ */ #define TRS_WRES_RIND 11 /* Pending response of N_RESET_IND */ #define TRS_WACK_DREQ6 12 /* Waiting ack of N_DISCON_REQ */ #define TRS_WACK_DREQ7 13 /* Waiting ack of N_DISCON_REQ */ #define TRS_WACK_DREQ9 14 /* Waiting ack of N_DISCON_REQ */ #define TRS_WACK_DREQ10 15 /* Waiting ack of N_DISCON_REQ */ #define TRS_WACK_DREQ11 16 /* Waiting ack of N_DISCON_REQ */ #define TRS_NOSTATES 17 /* * TC_ERROR_ACK error return code values */ #define TCBADADDR 1 /* Incorrect address format/illegal address information */ #define TCBADOPT 2 /* Options in incorrect format or contain illegal information */ #define TCACCESS 3 /* User did not have proper permissions */ #define TCNOADDR 5 /* TC Provider could not allocate address */ #define TCOUTSTATE 6 /* Primitive was issues in wrong sequence */ #define TCBADSEQ 7 /* Sequence number in primitive was incorrect/illegal */ #define TCSYSERR 8 /* UNIX system error occurred */ #define TCBADDATA 10 /* User data spec. outside range supported by TC provider */ #define TCBADFLAG 16 /* Flags specified in primitive were */ /* illegal/incorrect */ #define TCNOTSUPPORT 18 /* Primitive type not supported by the TC provider */ #define TCBOUND 19 /* Illegal second attempt to bind listener or */ /* default listener */ #define TCBADQOSPARAM 20 /* QOS values specified are outside the range */ /* supported by the TC provider */ #define TCBADQOSTYPE 21 /* QOS structure type specified is not supported */ /* by the TC provider */ #define TCBADTOKEN 22 /* Token used is not associated with an open stream */ #define TCNOPROTOID 23 /* Protocol id could not be allocated */ /* * TC_INFO_REQ */ typedef struct TC_info_req { ulong PRIM_type; } TC_info_req_t; /* * TC_INFO_ACK */ typedef struct TC_info_ack { ulong PRIM_type; ulong TSDU_size; ulong ETSDU_size; ulong CDATA_size; ulong DDATA_size; ulong ADDR_size; ulong ADDR_length; ulong ADDR_offset; ulong QOS_length; ulong QOS_offset; ulong QOS_range_length; ulong QOS_range_offset; ulong OPTIONS_flags; ulong TIDU_size; ulong SERV_type; ulong CURRENT_state; ulong PROVIDER_type; ulong TODU_size; ulong PROTOID_length; ulong PROTOID_offset; ulong TRPI_version; } TC_info_ack_t; /* * TC_BIND_REQ */ typedef struct TC_bind_req { ulong PRIM_type; } TC_bind_req_t; /* * TC_BIND_ACK */ typedef struct TC_bind_ack { ulong PRIM_type; ulong ADDR_length; ulong ADDR_offset; ulong XACT_number; ulong TOKEN_value; ulong PROTOID_length; ulong PROTOID_offset; } TC_bind_ack_t; /* * TC_SUBS_BIND_REQ */ typedef struct TC_subs_bind_req { ulong PRIM_type; } TC_subs_bind_req_t; /* * TC_SUBS_BIND_ACK */ typedef struct TC_subs_bind_ack { ulong PRIM_type; } TC_subs_bind_ack_t; /* * TC_OK_ACK */ typedef struct TC_ok_ack { ulong PRIM_type; ulong CORRECT_prim; } TC_ok_ack_t; /* * TC_ERROR_ACK */ typedef struct TC_error_ack { ulong PRIM_type; ulong ERROR_prim; ulong TRPI_error; ulong UNIX_error; } TC_error_ack_t; /* * TC_OPTMGMT_REQ */ typedef struct TC_optmgmt_req { ulong PRIM_type; } TC_optmgmt_req_t; /* * TC_OPTMGMT_ACK */ typedef struct TC_optmgmt_ack { ulong PRIM_type; ulong OPT_length; ulong OPT_offset; ulong MGMT_flags; } TC_optmgmt_ack_t; /* * TC_UNI_REQ, Send unidirctional message. One M_PROTO block followed by * one or more M_DATA blocks containing User Information. Components to be * delivered in the unstructured dialog must have been previously provided * with the same Dialog Id and using the component handling request * primitives. An Application Context is required if there is User * Information in attached M_DATA blocks. * * Note: Source Address may be implicitly associatedw tih the access point * at which the primitive is being issued. * * Note: Dialog identifier has only local significance and is used between * the local TC-User and TC-Provider to refer to a dialog. */ typedef struct TC_uni_req { ulong PRIM_type; /* Always TC_UNI_REQ */ ulong SRC_length; /* Source address length */ ulong SRC_offset; /* Source address offset */ ulong DEST_length; /* Destination address length */ ulong DEST_offset; /* Destination address offset */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong CONTEXT_length; /* Application context name length */ ulong CONTEXT_offset; /* Application context name offset */ ulong DIALOG_id; /* Dialog Identifier */ } TC_uni_req_t; /* * TC_UNI_RES, Received unidirectional message. One M_PROTO block * followed by one or more M_DATA blocks containing User Information. * Components to be delivered from the unstructured dialog will be indicated * using the component handling indication primitives. An Application * Context will be present where there is User Information in attached M_DATA * blocks. * * Note: When QOS is provided by SCCP, QOS must be passed up to the * TC-User. * * Note: When Application Context is provided in the corresponding message, * it must be passed up in the indication. */ typedef struct TC_uni_ind { ulong PRIM_type; /* Always TC_UNI_IND */ ulong SRC_length; /* Source address length */ ulong SRC_offset; /* Source address offset */ ulong DEST_length; /* Destination address length */ ulong DEST_offset; /* Destination address offset */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong CONTEXT_length; /* Application context name length */ ulong CONTEXT_offset; /* Application context name offset */ ulong DIALOG_id; /* Dialog Identifier */ ulong COMP_flags; /* Components preset flag */ } TC_uni_ind_t; /* * TC_BEGIN_REQ. Requests the opening of a dialog. One M_PROTO block * followed by one or more M_DATA blocks containing User Information. * Components to be delivered in the structured dialog must have been * previously provided wtih the same Dialog Id and using the component * handling request primitives. An Application Context is required if there * is User Information in attached M_DATA blocks. * * Also T_QUERY_REQ for ANSI. */ typedef struct TC_begin_req { ulong PRIM_type; /* Always TC_BEGIN_REQ */ ulong SRC_length; /* Source address length */ ulong SRC_offset; /* Source address offset */ ulong DEST_length; /* Destination address length */ ulong DEST_offset; /* Destination address offset */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong CONTEXT_length; /* Application context name length */ ulong CONTEXT_offset; /* Application context name offset */ ulong DIALOG_id; /* Dialog Identifier */ ulong COMP_flags; /* For use with ANSI QWP/QWOP */ } TC_begin_req_t; typedef struct TC_begin_req TC_query_req; /* * TC_BEGIN_IND. Indicates the opening of a dialog. One M_PROTO block * followed by one or more M_DATA blocks containing User Information. * Components to be delivered in the structured dialog will be subsequently * indicated with the same Dialog Id and using the component handling * indication primitives. An Application Context is present if there is User * Information in attached M_DATA blocks. * * Also T_QUERY_IND for ANSI. */ typedef struct TC_begin_ind { ulong PRIM_type; /* Always TC_BEGIN_REQ */ ulong SRC_length; /* Source address length */ ulong SRC_offset; /* Source address offset */ ulong DEST_length; /* Destination address length */ ulong DEST_offset; /* Destination address offset */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong CONTEXT_length; /* Application context name length */ ulong CONTEXT_offset; /* Application context name offset */ ulong DIALOG_id; /* Dialog Identifier */ ulong COMP_flags; /* For use with ANSI QWP/QWOP */ } TC_begin_ind_t; typedef struct TC_begin_ind TC_query_ind; /* * TC_END_REQ. * * Also TC_RESP_REQ for ANSI. */ typedef struct TC_end_req { ulong PRIM_type; /* Always TC_END_REQ */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong DIALOG_id; /* Dialog Identifier */ ulong CONTEXT_length; /* Application context name length */ ulong CONTEXT_offset; /* Application context name offset */ ulong TERM_scenario; /* Reason for termination */ } TC_end_req_t; typedef struct TC_end_req TC_resp_req_t; /* * TC_END_IND. * * Also TC_RESP_IND for ANSI. */ typedef struct TC_end_ind { ulong PRIM_type; /* Always TC_END_IND */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong DIALOG_id; /* Dialog Identifier */ ulong CONTEXT_length; /* Application context name length */ ulong CONTEXT_offset; /* Application context name offset */ ulong COMP_flags; /* Components present flag */ } TC_end_ind_t; typedef struct TC_end_ind TC_resp_ind_t; /* * TC_CONT_REQ. The first TC_CONT_REQ after a TC_BEGIN_IND requests * that the dialog be confirmed and may contain the Source address and * Application Context parameters. Once these have been provided on the * first TC_CONT_REQ, they are in place for the remainder of the dialog. * Subsequent TC_CONT_REQ primitives do not contain the SRC and CONTEXT * parameters. * * Also TC_CONV_REQ for ANSI. */ typedef struct TC_begin_res { ulong PRIM_type; /* Always TC_CONT_REQ */ ulong SRC_length; /* Source address length */ ulong SRC_offset; /* Source address offset */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong CONTEXT_length; /* Application context name length */ ulong CONTEXT_offset; /* Application context name offset */ ulong DIALOG_id; /* Dialog Identifier */ ulong COMP_flags; /* For use with ANSI CWP/CWOP */ } TC_begin_res_t; typedef struct TC_cont_req { ulong PRIM_type; /* Always TC_CONT_REQ */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong DIALOG_id; /* Dialog Identifier */ ulong COMP_flags; /* For use with ANSI CWP/CWOP */ } TC_cont_req_t; typedef struct TC_cont_req TC_conv_req_t; /* * TC_CONT_IND. The first TC_CONT_IND after a TC_BEGIN_REQ indicates * that the dialog is confirmed but may contain the Source address and * Application Context parameters. Once these have been provided on the * first TC_CONT_IND, they are in place for the remainder of the dialog. * Subsequent TC_CONT_IND primitives will not contain the SRC and CONTEXT * parameters. * * Also TC_CONV_IND for ASNI. */ typedef struct TC_begin_con { ulong PRIM_type; /* Always TC_CONT_IND */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong CONTEXT_length; /* Application context name length */ ulong CONTEXT_offset; /* Application context name offset */ ulong DIALOG_id; /* Dialog Identifier */ ulong COMP_flags; /* For use with ANSI CWP/CWOP */ } TC_begin_con_t; typedef struct TC_cont_ind { ulong PRIM_type; /* Always TC_CONT_IND */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong DIALOG_id; /* Dialog Identifier */ ulong COMP_flags; /* For use with ANSI CWP/CWOP */ } TC_cont_ind_t; typedef struct TC_cont_ind TC_conv_ind_t; /* * TC_ABORT_REQ. * * Note: Application context is only present if the abort reason indicates * "application context not supported". */ typedef struct TC_abort_req { ulong PRIM_type; /* Always TC_ABORT_REQ */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong CONTEXT_length; /* Application context name length */ ulong CONTEXT_offset; /* Application context name offset */ ulong DIALOG_id; /* Dialog Identifier */ ulong ABORT_reason; /* Abort reason */ } TC_abort_req_t; /* * TC_ABORT_IND. * * Note: Application context is only present if the abort reason indicates * "application context not supported". */ typedef struct TC_abort_ind { ulong PRIM_type; /* Always TC_ABORT_IND */ ulong QOS_length; /* QOS associated with the primitive */ ulong QOS_offset; /* QOS associated wtih the primitive */ ulong CONTEXT_length; /* Application context name length */ ulong CONTEXT_offset; /* Application context name offset */ ulong DIALOG_id; /* Dialog Identifier */ ulong ABORT_reason; /* Abort reason */ ulong ORIGINATOR; /* Either User or Provider originated */ } TC_abort_ind_t; /* * TC_NOTICE_IND. */ typedef struct TC_notice_ind { ulong PRIM_type; /* Always TC_NOTICE_IND */ ulong DIALOG_id; /* Dialog Identifier */ ulong REPORT_cause; /* Report cause */ } TC_notice_ind_t; /* * Component handling primitives. */ /* * TC_INVOKE_REQ. This primitive is one M_PROTO message block followed by * zero or more M_DATA blocks containing the parameters of the operation. */ typedef struct TC_invoke_req { ulong PRIM_type; /* Always TC_INVOKE_REQ */ ulong DIALOG_id; /* Dialog identifier */ ulong PROTOCOL_class; /* Application protocol class */ ulong INVOKE_id; /* Invoke Identifier */ ulong LINKED_id; /* Linked Invoke Identifier */ ulong OPERATION; /* Requested operation to invoke */ ulong MORE_flag; /* Not last */ ulong TIMEOUT; /* Timeout */ } TC_invoke_req_t; /* * TC_INVOKE_IND. This primitive is one M_PROTO message block followed by * zero or more M_DATA blocks containing the parameters of the operation. * * Note: Dialog Id is ignored for Class 4 (TC_UNI_IND) operations. */ typedef struct TC_invoke_ind { ulong PRIM_type; /* Always TC_INVOKE_IND */ ulong DIALOG_id; /* Dialog identifier */ ulong OP_class; /* Application operation class */ ulong INVOKE_id; /* Invoke Identifier */ ulong LINKED_id; /* Linked Invoke Identifier */ ulong OPERATION; /* Requested operation to invoke */ ulong MORE_flag; /* Not last */ } TC_invoke_ind_t; /* * TC_RESULT_REQ. This primitive consists of one M_PROTO message block * followed by zero or more M_DATA blocks containing the parameters of the * operation. */ typedef struct TC_result_req { ulong PRIM_type; /* Always TC_RESULT_REQ */ ulong DIALOG_id; /* Dialog Identifier */ ulong INVOKE_id; /* Invoke Identifier */ ulong OPERATION; /* Requested operation result */ ulong MORE_flag; /* Not last */ } TC_result_req_t; /* * TC_RESULT_IND. This primitive consists of one M_PROTO message block * followed by zero or more M_DATA blocks containing the parameters of the * operation. * * This primitive is only valid (expected) for operation class 1 and 3. */ typedef struct TC_result_ind { ulong PRIM_type; /* Always TC_RESULT_IND */ ulong DIALOG_id; /* Dialog Identifier */ ulong INVOKE_id; /* Invoke Identifier */ ulong OPERATION; /* Requested operation result */ ulong MORE_flag; /* Not last */ } TC_result_ind_t; /* * TC_ERROR_REQ. This primitive consists of one M_PROTO message block * followed by zero or more M_DATA blocks containing the parameters of the * error. */ typedef struct TC_error_req { ulong PRIM_type; /* Always TC_ERROR_REQ */ ulong DIALOG_id; /* Dialog Identifier */ ulong INVOKE_id; /* Invoke Identifier */ ulong ERROR_code; /* Error code */ ulong MORE_flag; /* Not last */ } TC_error_req_t; /* * TC_ERROR_IND. This primitive consists of one M_PROTO message block * followed by zero or more M_DATA blocks containing the parameters of the * error. */ typedef struct TC_error_ind { ulong PRIM_type; /* Always TC_ERROR_IND */ ulong DIALOG_id; /* Dialog Identifier */ ulong INVOKE_id; /* Invoke Identifier */ ulong ERROR_code; /* Error code */ } TC_error_ind_t; /* * TC_REJECT_REQ. This primitive consists of one M_PROTO message block. */ typedef struct TC_reject_req { ulong PRIM_type; /* Always TC_REJECT_REQ */ ulong DIALOG_id; /* Dialog Identifier */ ulong INVOKE_id; /* Invoke identifier */ ulong PROBLEM_code; /* Problem code */ } TC_reject_req_t; /* * TC_REJECT_IND. This primitive consists of one M_PROTO message block. */ typedef struct TC_reject_ind { ulong PRIM_type; /* Always TC_REJECT_IND */ ulong DIALOG_id; /* Dialog Identifier */ ulong INVOKE_id; /* Invoke identifier */ ulong ORIGINATOR; /* Either User, Local or Remote */ ulong PROBLEM_code; /* Problem code */ } TC_reject_ind_t; /* * TC_CANCEL_REQ. This primitive consists of one M_PROTO message block. */ typedef struct TC_cancel_req { ulong PRIM_type; /* Always TC_CANCEL_REQ */ ulong DIALOG_id; /* Dialog Identifier */ ulong INVOKE_id; /* Invoke identifier */ } TC_cancel_req_t; /* * TC_CANCEL_IND. This primitive consists of one M_PROTO message block. */ typedef struct TC_cancel_ind { ulong PRIM_type; /* Always TC_CANCEL_REQ */ ulong DIALOG_id; /* Dialog Identifier */ ulong INVOKE_id; /* Invoke identifier */ } TC_cancel_ind_t; #endif __SS7_TC_H__
/***************************************************************************** @(#) $Id: tr.h,v 0.7.8.1 2001/12/11 13:16:06 brian Exp $ ----------------------------------------------------------------------------- Copyright (C) 1997-2001 OpenSS7 Corporation. All Rights Reserved. PUBLIC LICENSE This license is provided without fee, provided that the above copy- right notice and this public license must be retained on all copies, extracts, compilations and derivative works. Use or distribution of this work in a manner that restricts its use except as provided here will render this license void. The author(s) hereby waive any and all other restrictions in respect of their copyright in this software and its associated documentation. The authors(s) of this software place in the public domain any novel methods or processes which are embodied in this software. The author(s) undertook to write it for the sake of the advancement of the Arts and Sciences, but it is provided as is, and the author(s) will not take any responsibility in it. ----------------------------------------------------------------------------- U.S. GOVERNMENT RESTRICTED RIGHTS. If you are licensing this Software on behalf of the U.S. Government ("Government"), the following provisions apply to you. If the Software is supplied by the Department of Defense ("DoD"), it is classified as "Commercial Computer Software" under paragraph 252.227-7014 of the DoD Supplement to the Federal Acquisition Regulations ("DFARS") (or any successor regulations) and the Government is acquiring only the license rights granted herein (the license rights customarily provided to non-Government users). If the Software is supplied to any unit or agency of the Government other than DoD, it is classified as "Restricted Computer Software" and the Government's rights in the Software are defined in paragraph 52.227-19 of the Federal Acquisition Regulations ("FAR") (or any success regulations) or, in the cases of NASA, in paragraph 18.52.227-86 of the NASA Supplement to the FAR (or any successor regulations). ----------------------------------------------------------------------------- Last Modified $Date: 2001/12/11 13:16:06 $ by $Author: brian $ *****************************************************************************/ #ifndef __SS7_TR_H__ #define __SS7_TR_H__ #ident "@(#) $Name: $($Revision: 0.7.8.1 $) Copyright (c) 1997-2001 OpenSS7 Corporation." #define TR_INFO_REQ 0 /* Information request */ #define TR_BIND_REQ 1 /* Bind to network address */ #define TR_UNBIND_REQ 2 /* Unbind from network address */ #define TR_OPTMGMT_REQ 5 /* Options management request */ #define TR_UNI_REQ 6 /* Unidirectional request */ #define TR_BEGIN_REQ 7 /* Begin transaction request */ #define TR_BEGIN_RES 8 /* Begin transaction response-Continue request */ #define TR_CONT_REQ 9 /* Continue transaction request */ #define TR_END_REQ 10 /* End transaction request */ #define TR_ABORT_REQ 11 /* Abort transaction request */ #define TR_INFO_ACK 12 /* Information acknowledgement */ #define TR_BIND_ACK 13 /* Bound to network address */ #define TR_OK_ACK 15 /* Success acknowledgement */ #define TR_ERROR_ACK 16 /* Error acknowledgement */ #define TR_OPTMGMT_ACK 17 /* Options management acknowledgement */ #define TR_UNI_IND 18 /* Unidirectional indication */ #define TR_BEGIN_IND 19 /* Begin transaction indication */ #define TR_BEGIN_CON 20 /* Begin transaction confirmation-Continue ind */ #define TR_CONT_IND 21 /* Continue transaction indication */ #define TR_END_IND 22 /* End transaction indication */ #define TR_ABORT_IND 23 /* Abort transaction indication */ #define TR_NOTICE_IND 24 /* Error indication */ #define TR_QOS_SEL1 0x0501 typedef struct { ulong type; /* Always TR_QOS_SEL1 */ ulong flags; /* Return option */ ulong seq_ctrl; /* Sequence Control */ ulong priority; /* Message priority */ } TR_qos_sel1_t; #define TR_PROVIDER 0x0001 #define TR_USER 0x0002 /* * TR_INFO_REQ. This primitive consists of one M_PCPROTO message block. */ typedef struct TR_info_req { ulong PRIM_type; /* Always TR_INFO_REQ */ } TR_info_req_t; /* * TR_INFO_ACK. This primitive consists of one M_PCPROTO message block. */ typedef struct TR_info_ack { ulong PRIM_type; /* Always TR_INFO_ACK */ ulong TSDU_size; /* maximum TSDU size */ ulong ETSDU_size; /* maximum ETSDU size */ ulong CDATA_size; /* connect data size */ ulong DDATA_size; /* discon data size */ ulong ADDR_size; /* address size */ ulong ADDR_length; /* address length */ ulong ADDR_offset; /* address offset */ ulong QOS_length; /* QOS values length */ ulong QOS_offset; /* QOS values offset */ ulong QOS_range_length; /* length of QOS values' range */ ulong QOS_range_offset; /* offset of QOS values' range */ ulong OPTIONS_flags; /* bit masking for options supported */ ulong TIDU_size; /* transaction i/f data unit size */ long SERV_type; /* service type */ ulong CURRENT_state; /* current state */ ulong PROVIDER_type; /* type of TR provider */ ulong TODU_size; /* optimal TSDU size */ ulong PROTOID_length; /* length of bound protocol ids */ ulong PROTOID_offset; /* offset of bound protocol ids */ ulong TRPI_version; /* version # of trpi that is supported */ } TR_info_ack_t; /* * TR_BIND_REQ. This primitive consists of one M_PROTO message block. */ typedef struct TR_bind_req { ulong PRIM_type; /* Always TR_BIND_REQ */ ulong ADDR_length; /* address length */ ulong ADDR_offset; /* address offset */ ulong XACT_number; /* maximum outstanding transaction reqs.*/ ulong BIND_flags; /* bind flags */ ulong PROTOID_length; /* length of bound protocol ids */ ulong PROTOID_offset; /* offset of bound protocol ids */ } TR_bind_req_t; /* * TR_BIND_ACK. This primitive consists of one M_PROTO message block. */ typedef struct TR_bind_ack { ulong PRIM_type; /* Always TR_BIND_ACK */ ulong ADDR_length; /* address length */ ulong ADDR_offset; /* address offset */ ulong XACT_number; /* open transactions */ ulong TOKEN_value; /* value of "token" assigned to stream */ ulong PROTOID_length; /* length of bound protocol ids */ ulong PROTOID_offset; /* offset of bound protocol ids */ } TR_bind_ack_t; /* * TR_UNBIND_REQ. This primtive consists of one M_PROTO message block. */ typedef struct TR_unbind_req { ulong PRIM_type; /* Always TR_UNBIND_REQ */ } TR_unbind_req_t; /* * TR_OPTMGMT_REQ. This primtive consists of one M_PROTO message block. */ typedef struct TR_optmgmt_req { ulong PRIM_type; /* Always T_OPTMGMT_REQ */ ulong OPT_length; /* options length */ ulong OPT_offset; /* options offset */ ulong MGMT_flags; /* options data flags */ } TR_optmgmt_req_t; /* * TR_OPTMGMT_ACK. This primitive consists of one M_PCPROTO message block. */ typedef struct TR_optmgmt_ack { ulong PRIM_type; /* Always T_OPTMGMT_ACK */ ulong OPT_length; /* options length */ ulong OPT_offset; /* options offset */ ulong MGMT_flags; /* options data flags */ } TR_optmgmt_ack_t; /* * TR_OK_ACK. This primitive consists of one M_PCPROTO message block. */ typedef struct TR_ok_ack { ulong PRIM_type; /* Always T_OK_ACK */ ulong CORRECT_prim; /* correct primitive */ } TR_ok_ack_t; /* * TR_ERROR_ACK. This primitive consists of one M_PCPROTO message block. */ typedef struct TR_error_ack { ulong PRIM_type; /* Always T_ERROR_ACK */ ulong ERROR_prim; /* primitive in error */ ulong TRPI_error; /* TRPI error code */ ulong UNIX_error; /* UNIX error code */ } TR_error_ack_t; /* * TR_UNI_REQ. This primitive consists of one M_PROTO message block followed * by one or more M_DATA blocks. */ typedef struct TR_uni_req { ulong PRIM_type; /* Always TR_UNI_REQ */ ulong DEST_length; /* Destination address length */ ulong DEST_offset; /* Destination address offset */ ulong ORIG_length; /* Originating address length */ ulong ORIG_offset; /* Originating address offset */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_uni_req_t; /* * TR_UNI_IND. This primitive consists of one M_PROTO message block followed * by one or more M_DATA blocks. */ typedef struct TR_uni_ind { ulong PRIM_type; /* Always TR_UNI_REQ */ ulong DEST_length; /* Destination address length */ ulong DEST_offset; /* Destination address offset */ ulong ORIG_length; /* Originating address length */ ulong ORIG_offset; /* Originating address offset */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_uni_ind_t; /* * TR_BEGIN_REQ. */ typedef struct TR_begin_req { ulong PRIM_type; /* Always TR_BEGIN_REQ */ ulong DEST_length; /* Destination address length */ ulong DEST_offset; /* Destination address offset */ ulong ORIG_length; /* Originating address length */ ulong ORIG_offset; /* Originating address offset */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_begin_req_t; /* * TR_BEGIN_IND. */ typedef struct TR_begin_ind { ulong PRIM_type; /* Always TR_BEGIN_IND */ ulong DEST_length; /* Destination address length */ ulong DEST_offset; /* Destination address offset */ ulong ORIG_length; /* Originating address length */ ulong ORIG_offset; /* Originating address offset */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_begin_ind_t; /* * TR_BEGIN_RES. * * This primitive represents the first TR-CONTINUE response to a TR-BEGIN * indication. */ typedef struct TR_begin_res { ulong PRIM_type; /* Always TR_BEGIN_RES */ ulong TRANS_id; /* Transaction id */ ulong ORIG_length; /* Originating address length */ ulong ORIG_offset; /* Originating address offset */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_begin_res_t; /* * TR_BEGIN_CON. * * This primitive represents the first TR-CONTINUE configuration of a * TR-BEGIN request. */ typedef struct TR_begin_con { ulong PRIM_type; /* Always TR_BEGIN_CON */ ulong TRANS_id; /* Transaction id */ ulong ORIG_length; /* Originating address length */ ulong ORIG_offset; /* Originating address offset */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_begin_con_t; /* * TR_CONT_REQ. */ typedef struct TR_cont_req { ulong PRIM_type; /* Always TR_CONT_REQ */ ulong TRANS_id; /* Transaction id */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_cont_req_t; /* * TR_CONT_IND. */ typedef struct TR_cont_ind { ulong PRIM_type; /* Always TR_CONT_IND */ ulong TRANS_id; /* Transaction id */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_cont_ind_t; /* * TR_END_REQ. */ typedef struct TR_end_req { ulong PRIM_type; /* Always TR_END_REQ */ ulong TRANS_id; /* Transaction id */ ulong TERM_scenario; /* Termination scenario */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_end_req_t; /* * TR_END_IND. */ typedef struct TR_end_ind { ulong PRIM_type; /* Always TR_END_IND */ ulong TRANS_id; /* Transaction id */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_end_ind_t; /* * TR_ABORT_REQ. */ typedef struct TR_abort_req { ulong PRIM_type; /* Always TR_ABORT_REQ */ ulong ABORT_cause; /* Cause of the abort */ ulong TRANS_id; /* Transaction id */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_abort_req_t; /* * TR_ABORT_IND. */ typedef struct TR_abort_ind { ulong PRIM_type; /* Always TR_ABORT_IND */ ulong ABORT_cause; /* Cause of the abort */ ulong ORIGINATOR; /* Originator P or U */ ulong TRANS_id; /* Transaction id */ ulong QOS_length; /* QOS structure length */ ulong QOS_offset; /* QOS structure offset */ } TR_abort_ind_t; /* * TR_NOTICE_IND. */ typedef struct TR_notice_ind { ulong PRIM_type; /* Always TR_NOTICE_IND */ ulong REPORT_cause; /* SCCP return cause */ ulong TRANS_id; /* Transaction id */ } TR_notice_ind_t; #endif __SS7_TR_H__
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |