Transaction Component Interface

Transaction Component Interface

Preface

Security Warning

Permission to use, copy and distribute this documentation without modification, for any purpose and without fee or royalty is hereby granted, provided that both the above copyright notice and this permission notice appears in all copies and that the name of OpenSS7 Corporation not be used in advertising or publicity pertaining to distribution of this documentation or its contents without specific, written prior permission. OpenSS7 Corporation makes no representation about the suitability of this documentation for any purpose. It is provided “as is” without express or implied warranty.

OpenSS7 Corporation disclaims all warranties with regard to this documentation including all implied warranties of merchantability, fitness for a particular purpose, non-infringement, or title; that the contents of the document are suitable for any purpose, or that the implementation of such contents will not infringe on any third party patents, copyrights, trademarks or other rights.. In no event shall OpenSS7 Corporation be liable for any direct, indirect, special or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with any use of this document or the performance or implementation of the contents thereof.

Abstract

This document is a Application Program Interface containing technical details concerning the implementation of the Transaction Component Interface (TCI) for OpenSS7. It contains recommendations on software architecture as well as platform and system applicability of the Transaction Component Interface (TCI).

Purpose

The purpose of this document is to provide technical documentation of the Transaction Component Interface (TCI). This document is intended to be included with the OpenSS7 STREAMS software package released by OpenSS7 Corporation. It is intended to assist software developers, maintainers and users of the Transaction Component Interface (TCI) with understanding the software architecture and technical interfaces which are made available in the software package.

Intent

It is the intent of this document that it act as the primary source of information concerning the Transaction Component Interface (TCI).

Audience

The audience for this document is software developers, maintainers and users and integrators of the Transaction Component Interface (TCI).

Revision History

Take care that you are working with a current version of this documentation: you will not be notified of updates. To ensure that you are working with a current version, check the OpenSS7 Project website for a current version.

A printed (or postscript) version of this document is an UNCONTROLLED version.

1 Introduction

This document specifies a STREAMS-based kernel-level instantiation of the ITU-T Transaction Capabilities Application Part (TCAP) Component (TC) Sub-Layer. The Transaction Component Interface (TCI) enables the user of a component sub-layer service to access and use any of a variety of conforming transaction providers without specific knowledge of the provider's protocol. The service interface is designed to support any transaction protocol but is intended for the ITU-T Recommendation Q.771 Transaction Capabilities Application Part (TCAP) Component (TC) Sub-Layer. This interface only specifies access to transaction component sub-layer services providers, and does not address issues concerning transaction or component sub-layer management, protocol performance, and performance analysis tools.

The specification assumes that the reader is familiar with the ISO reference model terminology, ISO/ITU-T transaction service definitions (ROSE, ACSE, TCAP), and STREAMS.

1.1 Related Documentation

1.1.1 Role

This document specifies an interface that supports the Transaction Component (TC) Sub-Layer services provided by the Transaction Capabilities Application Part (TCAP) as specified in ITU-T Recommendation Q.771. It may also be capable of supporting the transaction component capabilities of the Remote Operations Service Execution (ROSE) for Open Systems Interconnect for CCITT Applications as specified in ITU-T Recommendation X.219 and ISO ????. These specifications are targeted for use by developers and testers of protocol modules that require transaction component sub-layer service.1

1.2 Definitions, Acronyms, and Abbreviations

Originating TC User
A TC-User that initiates a transaction.

Destination TC User
A TC-User with whom an originating TC user wishes to establish a transaction dialogue.

ISO
International Organization for Standardization

TC User
Kernel level protocol or user level application that is accessing the services of the transaction component sub-layer.

TC Provider
Transaction sub-layer entity/entities that provide/s the services of the transaction component interface.

TCI
Transaction Component Interface

TIDU
Transaction Interface Data Unit

TSDU
Transaction Service Data Unit

OSI
Open Systems Interconnection

QOS
Quality of Service

STREAMS
A communication services development facility first available with UNIX System V Release 3

2 The Transaction Component Sub-Layer

The Transaction Component Sub-Layer provides the means to manage the dialogue of TC-Users into transaction components and dialogues. It is responsible for the routing and management of transaction component exchange within dialogues between TC-user entities.

2.1 Model of the TCI

The TCI defines the services provided by the transaction component sub-layer to the transaction component-user at the boundary between the Transaction Capabilities Application Part (TCAP) user and the Transaction Component (TC) Sub-Layer in the model presented in ITU-T Recommendation Q.771. The interface consists of a set of primitives defined as STREAMS messages that provide access to the component sub-layer services, and are transferred between the TC user entity and the TC provider. These primitives are of two types: ones that originate from the TC user, and others that originate from the TC provider, or respond to an event of the TC provider. The primitives that originate from the TC provider are either confirmations of a request or are indications to the TC user that the event has occurred. Figure 1 shows the model of the TCI.

Figure 1. Model of the TCI
tci_fig.png

The TCI allows the TC provider to be configured with any component sub-layer user (such as the Mobile Application Part whose upper layer interface is described in About This Manual), that also conforms to the TCI. A transaction component sub-layer user can also be a user program that conforms to the TCI and accesses the TC provider via putmsg(2) and getmsg(2) system calls.

STREAMS messages that are used to communicate transaction component service primitives between the transaction component user and the transaction component provider may have one of the following formats:

  1. A M_PROTO message block followed by zero or more M_DATA message blocks. The M_PROTO message block contains the type of service primitive and all relevant arguments associated with the primitive. The M_DATA blocks contain user data associated with the service primitive.
  2. One M_PCPROTO message block containing the type of service primitive and all the relevant arguments associated with the primitive.
  3. One or more M_DATA message blocks containing user data.

The following sections describe the service primitives which define all operation classes of service.

For all operation classes of service, two types of primitives exist: primitives that originate from the service user and primitives that originate from the service provider. The primitives that originate from the service user make requests to the service provider or response to an event of the service provider. The primitive that originate from the service provider are either confirmations of a request or are indications to the service user that an event has occurred. The primitive types along with the mapping of those primitives to the STREAMS message types and the service primitives of the ISO/IEC xxxxx and service definitions are listed in TCI Primitives. The format of these primitives and the rules governing the use of them are described in Management Primitives, Operation Class 1 through 3 Primitives, and Operation Class 4 Primitives.

2.2 TCI Services

The features of the TCI are defined in terms of the services provided by the TC provider, and the individual primitives that may flow between the TC user and the TC provider.

The services supported by the TCI are based on four distinct classes of transaction, operation classes 1, 2, 3 and 4. In addition, the TCI supports services for local management.

2.2.1 Operation Class 1

The main features of operation class 1 transactions are:

There are three phases to each transaction: Transaction Initiation, Transaction Data Transfer, and Transaction Termination.2 Transaction components arrive at their destination in the same order as they departed their source and the data is protected against duplication or loss of data units within some specified quality of service.

2.2.2 Operation Class 2

The main features of operation class 2 transactions are:

There are three phases to each transaction: Transaction Initiation, Transaction Data Transfer, and Transaction Termination.3 Transaction components arrive at their destination in the same order as they departed their source and the data is protected against duplication or loss of data units within some specified quality of service.

2.2.3 Operation Class 3

The main features of operation class 3 transactions are:

There are three phases to each transaction: Transaction Initiation, Transaction Data Transfer, and Transaction Termination.4 Transaction components arrive at their destination in the same order as they departed their source and the data is protected against duplication or loss of data units within some specified quality of service.

2.2.4 Operation Class 4

The main features of operation class 4 transactions are:

Operation class 4 has no structure to the transaction and has no separate phases. Each transaction component is transmitted from source to destination independently, appropriate addressing information is included with each component sequence. As the components are transmitted independently from source to destination, there are, in general, no guarantees of proper sequence and completeness of the data transmission.

2.2.5 Component Handling

TC-Invoke 1 2 3 4


TC-Result 1 3


TC-Error 1 2


TC-Cancel 1 2 3


TC-Reject 1 2 4


2.2.6 Local Management

The TCI specifications also define a set of local management functions that apply to all operation classes. These services have local significance only.

Table 1 and Table 2 summarize the TCI service primitives by their state and service.


Table 1. Service Primitives for Operation Classes 1, 2 and 3

STATE SERVICE PRIMITIVES


Local
Management
Information
Reporting
TC_INFO_REQ, TC_INFO_ACK,
TC_ERROR_ACK


Bind TC_BIND_REQ, TC_BIND_ACK,
TC_UNBIND_REQ, TC_OK_ACK,
TC_ERROR_ACK


Options
Management
TC_OPTMGMT_REQ, TC_OK_ACK,
TC_ERROR_ACK


Transaction
Initiation
Transaction
Begin
TC_BEGIN_REQ, TC_BEGIN_IND,
TC_BEGIN_RES, TC_BEGIN_CON,
TC_TOKEN_REQ, TC_TOKEN_ACK,
TC_OK_ACK, TC_ERROR_ACK


Transaction
Data Transfer
Transaction
Continue
TC_CONT_REQ, TC_CONT_IND


Transaction
Release
Transaction
End
TC_END_REQ, TC_END_IND


Transaction
Abort
TC_ABORT_REQ, TC_ABORT_IND



Table 2. Service Primitives for Operation Class 4

STATE SERVICE PRIMITIVES


Local
Management
Information
Reporting
TC_INFO_REQ, TC_INFO_ACK,
TC_ERROR_ACK


Bind TC_BIND_REQ, TC_BIND_ACK,
TC_UNBIND_REQ, TC_OK_ACK,
TC_ERROR_ACK


Options
Management
TC_OPTMGMT_REQ, TC_OK_ACK,
TC_ERROR_ACK


Transaction
Unitdata
Transaction
Unidirectional
TC_UNI_REQ, TC_UNI_IND


3 TCI Services Definition

This section describes the services of the TCI primitives. Time-sequence diagrams 5 that illustrate the sequence of primitives are used. The format of the primitives will be defined later in this document.

3.1 Local Management Services Definition

The services defined in this section are outside the scope of the international standards. These services apply to all operation classes. They are involved for the initialization/de-initialization of a stream connected to the TC provider. They are also used to manage options supported by the TC provider and to report information on the supported parameter values.

3.1.1 Transaction Information Reporting Service

This service provides information on the options supported by the TC provider.

The sequence of primitives for transaction information management is shown in Figure 2.

Figure 2. Sequence of Primitives
Transaction Information Reporting Service
tci_fig1.png

3.1.2 TC User Bind Service

This service allows an originating address to be associated with a stream. It allows the TC user to negotiate the number of transaction begin indications that can remain unacknowledged for that TC user (a transaction begin indication is considered unacknowledged while it is awaiting a corresponding transaction response or abort request from the TC user). This service also defines a mechanism that allows a stream (bound to the address of the TC user) to be reserved to handle incoming transactions only. This stream is referred to as the listener stream.

The sequence of primitives for the TC user bind service is shown in Figure 3.

Figure 3. Sequence of Primitives
TC User Bind Service
tci_fig2.png

3.1.3 TC User Unbind Service

This service allows the TC user to be unbound from a network address.

The sequence of primitives for the TC user unbind service is shown in Figure 4.

Figure 4. Sequence of Primitives
TC User Unbind & Receipt Acknowledgement Services
tci_fig3.png

3.1.4 Receipt Acknowledgement Service

An example showing the sequence of primitives for successful receive acknowledgement is depicted in Figure 4.

3.1.5 Options Mangement Service

This service allows the TC user to manage the QOS parameter values associated with the TC provider.

Figure 5 shows the sequence of primitives for transaction options management.

Figure 5. Sequence of Primitives
Options Management Service
tci_fig4.png

3.1.6 Error Acknowledgement Service

Figure 6 shows the sequence of primitives for the error management primitive.

Figure 6. Sequence of Primitives
Error Acknowledgement Service
tci_fig5.png

3.2 Operation Class 1, 2 and 3 Transaction Services Definition

This section describes the required transaction service primitives that define the operation class 1, 2 and 3, structured transaction interface.

The queue model for operation classes 1, 2 and 3 are discussed in more detail in ITU-T X.219 and ITU-T Q.771.

The queue model represents the operation of a transaction dialogue in the abstract by a pair of queues linking two transaction users. There is one queue for each direction of component flow. Each queue represents a flow control function in one direction of transfer. The ability of a user to add objects to a queue will be determined by the behaviour of the user removing objects from that queue, and the state of the queue. The pair of queues is considered to be available for each potential transaction dialogue. Objects that are entered or removed from the queue are either as a result of interactions at the two transaction addresses, or as the result of TC provider initiatives.

  1. If the object is of type defined to be able to advance ahead of the preceding object (however, no object is defined to be able to advance ahead of another object of the same type), or
  2. If the following object is defined to be destructive with respect to the preceding object on the queue. If necessary, the last object on the queue will be deleted to allow a destructive object to be entered - they will therefore always be added to the queue. For example, “abort” objects are defined to be destructive with respect to all other objects.

Table 3 shows the ordering relationships among the queue model objects.


Table 3. Ordering Relationships Between Queue Model Objects

Object X BEGIN CONT END ABORT


Object Y


BEGIN N/A - - DES


CONT N/A - - DES


END N/A N/A - -


AA Indicates that Object X is defined to be able to advance ahead of preceding Object Y


DES Indicates that Object X is defined to be destructive with respect to the preceding Object Y.


- Indicates that Object X is neither destructive with respect to Object Y, nor able to advance ahead of Object Y


N/A Indicates that Object X will not occur in a position succeeding Object Y in a valid state of a queue.


3.2.1 Transaction Initiation

A pair of queues is associated with a transaction dialogue between two transaction users when the TC provider receives a TC_BEGIN_REQ primitive at one of the TC users resulting in a begin object being entered into the queue. The queues will remain associated with the transaction until a TC_END_REQ or TC_ABORT_REQ primitive (resulting in an end or abort object) is either entered or removed from a queue. Similarly, in the queue from the destination TC user, objects can be entered into the queue only after the begin object associated with the TC_BEGIN_RES has been entered into the queue. Alternatively, the destination TC user can enter an end or abort object into the queue instead of the begin object to terminate the transaction.

The transaction establishment procedure will fail if the TC provider is unable to establish a transaction dialogue, or if the destination TC user is unable to accept the TC_BEGIN_IND (see Transaction Termination primitive definition in TC_END_IND).

3.2.1.1 User Primitives for Successful Transaction Establishment

The following user primitves support Operation Class 1, 2, or 3 Phase I (Transaction Establishment) services:

3.2.1.2 Provider Primitives for Successful Transaction Establishment

The following provider primitives support Operation Class 1, 2, or 3 Phase I (Transaction Establishment) services:

The sequence of primitives in a successful transaction initiation is defined by the time sequence diagrams as shown in Figure 7.

Figure 7. Sequence of Primitives:
Successful Transaction Initiation
tci_fig6.png

The sequence of primitives for the transaction initiation response token value determination is shown in Figure 8 (procedures for transaction initiation response token value determination are discussed in TC_BIND_REQ, and TC_BIND_ACK).

Figure 8. Sequence of Primitives:
Transaction Response Token Value Determination
tci_fig7.png

3.2.2 Transaction Component Transfer

Flow control on the transaction dialogue is done by management of the queue capacity, and by allowing objects of certain types to be inserted to the queues, as shown in Table 4.

3.2.2.1 Primitives for Component Transfer

The following primitives support Operation Class 1, 2, or 3 Phase II (Transaction Component Transfer) services:

Figure 9 shows the sequence of primitives for successful component transfer. The sequence of primitives may remain incomplete if a `TC_END_REQ', `TC_ABORT_REQ', or `TC_ABORT_IND' primitive occurs.

Figure 9. Sequence of Primitives:
Component Transfer
tci_fig8.png

3.2.3 Transaction Termination

The transaction dialogue procedure is initialized by insertion of an end or abort object (associated with a TC_END_REQ or TC_ABORT_REQ) into the queue. As shown in Table?, the termination procedure is destructive with respect to other objects in the queue, and eventually results in the emptying of queues and termination of the transaction dialogue.

The sequence of primitives depends on the origin of the termination action. The sequence may be:

  1. invoked by on TC user, with a request from that TC user leading to an indication to the other;
  2. invoked by both TC users, with a request from each of the TC users;
  3. invoked by the TC provider, with an indication to each of the TC users;
  4. invoked independently by one TC user and the TC provider, with a request from the originating TC user and an indication to the other.
3.2.3.1 Primitives for Transaction Termination

The following primitives support Operation Class 1, 2, or 3 Phase III (Transaction Termination) services:

The sequence of primitives are shown in the time sequence diagrams in the figures that follow:

Figure 10. Sequence of Primitives:
TC User Invoked Termination
tci_fig9.png

Figure 11. Sequence of Primitives:
Simultaneous TC User Invoked Termination
tci_fi10.png

Figure 12. Sequence of Primitives:
TC Provider Invoked Termination
tci_fi11.png

Figure 13. Sequence of Primitives:
Simultaneous TC User and TC Provider Invoked Termination
tci_fi12.png

A TC user may reject a transaction initiation attempt by issuing a `TC_ABORT_REQ'. The originator parameter in the `TC_ABORT_REQ' will indicate TC user invoked termination. The sequence of primitives is shown in Figure 14.

Figure 14. Sequence of Primitives:
TC User Rejection of a Transaction Initiation Attempt
tci_fi13.png

If the TC provider is unable to establish a transaction, it indicates this to the requester by an `TC_ABORT_IND'. The originator of the primitive indicates a TC provider invoked release. This is shown in Figure 15.

Figure 15. Sequence of Primitives:
TC Provider Rejection of a Transaction Initiation Attempt
tci_fi14.png

3.3 Operation Class 4 Transaction Services Definition

The operation class 4 service allows for the transfer of transaction components in one and both directions simultaneously without establishing a transaction dialogue. A set of primitives are defined that carry transaction components and control information between the TC user and the TC provider entities. The primitives are modelled as requests initiated by the TC user and indications initiated by the TC provider. Indications may be initiated by the TC provider independently from requests by the TC user. The operation class 4 transaction service consists of one phase.

3.3.1 Request and Response Primitives

Figure 16 shows the sequence of primitives for the operation class 4 mode of transfer.

Figure 16. Sequence of Primitives:
Operation Class 4 Component Transfer
tci_fi15.png

Figure 17 shows the sequence of primitives for the operation class 4 error management primitive.

Figure 17. Sequence of Primitives:
Operation Class 4 Error Indication Service
tci_fi16.png

3.4 Component Handling Services Definition

3.4.1 Component Invoke Service

3.4.2 Component Return Result Service

3.4.3 Component Error Service

3.4.4 Component Cancel Service

3.4.5 Component Reject Service

4 TCI Primitives

This section describes the format and parameters of the TCI primitives (Appendix A shows the mapping of TCI primitives to the primitives defined in ITU-T Q.771). In addition, it discusses the states in which the primitive is valid, the resulting state, and the acknowledgement that the primitive expects. (The state/event tables for these primitives are shown in Appendix B. The precedence tables for the TCI primitives are shown in Appendix C.) Rules for SS7 conformance are described in Addendum 1 to this document. The following tables provide a summary of the TC primitives and their parameters.


Table 4. Transaction Initiation Transaction Service Primitives

SERVICE PRIMITIVE PARAMETERS


TC Initiation TC_BEGIN_REQ ()
TC_BEGIN_IND ()
TC_BEGIN_RES ()
TC_BEGIN_CON ()



Table 5. Transaction Continuation Transaction Service Primitives

SERVICE PRIMITIVE PARAMETERS


TC Initiation TC_CONT_REQ ()
TC_CONT_IND ()



Table 6. Transaction Termination Transaction Service Primitives

SERVICE PRIMITIVE PARAMETERS


TC Initiation TC_END_REQ ()
TC_END_IND ()
TC_ABORT_REQ ()
TC_ABORT_IND ()


4.1 Management Primitives

These primitives apply to all operation classes.

4.1.1 Transaction Information

4.1.1.1 Transaction Information Request
TC_INFO_REQ

This primitive request the TC provider to return the values of all supported protocol parameters (see TC_INFO_ACK), and also the current state of the TC provider (as defined in State/Event Tables). This primitive does not affect the state of the TC provider and does not appear in the state tables.

Format

The format of the message is one `M_PCPROTO' message block and its structure is as follows:

     typedef struct TC_info_req {
             ulong PRIM_type;                /* Always TC_INFO_REQ */
     } TC_info_req_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_INFO_REQ'.
Valid States

This primitive is valid in any state where a local acknowledgement is not pending.

New State

The new state remains unchanged.

Rules

For the rules governing the requests made by this primitive, see the `TC_INFO_ACK' primitive described in TC_INFO_ACK.

Acknowledgements

This primitive requires the TC provider to generate one of the following acknowledgements upon receipt of the primitive:

4.1.1.2 Transaction Information Acknowledgement
TC_INFO_ACK

This primitive indicates to the TC user any relevant protocol-dependent parameters.6 It should be initiated in response to the TC_INFO_REQ primitive described above under TC_INFO_REQ.

Format

The format of the message is one `M_PCPROTO' message block and its structure is as follows:

     typedef struct TC_info_ack {
             long PRIM_type;                 /* always TC_INFO_ACK */
             long TSDU_size;                 /* maximum TSDU size */
             long ETSDU_size;                /* maximum ETSDU size */
             long CDATA_size;                /* connect data size */
             long DDATA_size;                /* disconnect data size */
             long ADDR_size;                 /* maximum address size */
             long OPT_size;                  /* maximum options size */
             long TIDU_size;                 /* transaction interface data size */
             long SERV_type;                 /* service type */
             long CURRENT_state;             /* current state */
             long PROVIDER_flag;             /* provider flags */
             long TCI_version;               /* TCI version */
     } TC_info_ack_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_INFO_ACK'.

TSDU_size
Specifies the maximum size (in octets) of Transaction Service User Data supported by the TR provider.

ETSDU_size
Specifies the maximum size (in octets) of Expedited Transaction Service User Data supported by the TR provider.

CDATA_size
Specifies the maximum number of octets of data that may be associated with a transaction initiation primitive.

DDATA_size
Specifies the maximum number of octets of data that may be associated with a transaction termination primitive.

ADDR_size
Specifies the maximum size (in decimal digits) of a network address.

ADDR_length, ADDR_offset
Specifies the length in bytes and offset from the beginning of the M_PCPROTO message block of the network address bound on the stream on which the TC_INFO_REQ was issued (a network address is bound to a stream via a TC_BIND_REQ).

QOS_length, QOS_offset

QOS_range_length, QOS_range_offset

OPTIONS_flags

TIDU_size

SERV_type

CURRENT_state

PROVIDER_type

NODU_size

PROTOID_length, PROTOID_offset

TCI_version

4.1.2 Transaction Protocol Address Management

4.1.2.1 Transaction Bind Request
TC_BIND_REQ

Format
     typedef struct TC_bind_req {
             ulong PRIM_type;
             ulong ADDR_length;              /* address length */
             ulong ADDR_offset;              /* address offset */
             ulong XACT_number;              /* maximum outstanding transaction reqs. */
             ulong BIND_flags;               /* bind flags */
     } TC_bind_req_t;
     
     typedef struct TC_subs_bind_req {
             ulong PRIM_type;
     } TC_subs_bind_req_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_BIND_REQ'.

ADDR_length

ADDR_offset

XACT_number

BIND_flags
Flags
Valid State
New State
Rules
Acknowledgement

4.1.2.2 Transaction Bind Acknowledgement
TC_BIND_ACK

Format
     typedef struct TC_bind_ack {
             ulong PRIM_type;
             ulong ADDR_length;
             ulong ADDR_offset;
             ulong XACT_number;
             ulong TOKEN_value;
     } TC_bind_ack_t;
     
     typedef struct TC_subs_bind_ack {
             ulong PRIM_type;
     } TC_subs_bind_ack_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_BIND_ACK'.

ADDR_length

ADDR_offset

XACT_number

TOKEN_value
Flags
Valid State
New State
Rules
Acknowledgement

4.1.2.3 Transaction Unbind Request
TC_UNBIND_REQ

Format
     typedef struct TC_unbind_req {
             ulong PRIM_type;                /* Always TC_UNBIND_REQ */
     } TC_unbind_req_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_UNBIND_REQ'.
Flags
Valid State
New State
Rules
Acknowledgement

4.1.2.4 Transaction Protocol Address Request
TC_ADDR_REQ

Format
     
Parameters

The primitive has the following arguments:

Flags
Valid State
New State
Rules
Acknowledgement

4.1.2.5 Transaction Protocol Address Acknowledgement
TC_ADDR_ACK

Format

The format of the message is one `M_PCPROTO' message block structured as follows:

     
Parameters

The primitive has the following arguments:

Flags
Valid State
New State
Rules
Acknowledgement

4.1.3 Transaction Options Management

4.1.3.1 Transaction Options Management Request
TC_OPTMGMT_REQ

Format
     typedef struct TC_optmgmt_req {
             ulong PRIM_type;
             ulong OPT_length;
             ulong OPT_offset;
             ulong MGMT_flags;
     } TC_optmgmt_req_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_OPTMGMT_REQ'.

OPT_length
Indicates the length of the protocol options associated with the primitive.

OPT_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

MGMT_flags
Flags
Valid State
New State
Rules
Acknowledgement

4.1.3.2 Transaction Options Management Acknowledgement
TC_OPTMGMT_ACK

Format

The format of the message is one `M_PCPROTO' message block structured as follows:

     typedef struct TC_optmgmt_ack {
             ulong PRIM_type;
             ulong OPT_length;
             ulong OPT_offset;
             ulong MGMT_flags;
     } TC_optmgmt_ack_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_OPTMGMT_ACK'.

OPT_length
Indicates the length of the protocol options associated with the primitive.

OPT_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

MGMT_flags
Flags
Valid State
New State
Rules
Acknowledgement

4.1.4 Transaction Error Management

4.1.4.1 Transaction Successful Receipt Acknowledgement
TC_OK_ACK

Format

The format of the message is one `M_PCPROTO' message block structured as follows:

     typedef struct TC_ok_ack {
             ulong PRIM_type;
             ulong CORRECT_prim;
     } TC_ok_ack_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_OK_ACK'.

CORRECT_prim
Flags
Valid State
New State
Rules
Acknowledgement

4.1.4.2 Transaction Error Acknowledgement
TC_ERROR_ACK

Format

The format of the message is one `M_PCPROTO' message block structured as follows:

     typedef struct TC_error_ack {
             ulong PRIM_type;
             ulong ERROR_prim;
             ulong TRPI_error;
             ulong UNIX_error;
             ulong DIALOG_id;
             ulong INVOKE_id;
     } TC_error_ack_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_ERROR_ACK'.

ERROR_prim

TRPI_error

UNIX_error

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

INVOKE_id
Flags
Valid State
New State
Rules
Acknowledgement

4.2 Operation Class 1, 2 and 3 Primitives

This section describes the operation class 1, 2, and 3 dialogue handling primitives. Primitives are grouped into phases:

  1. Transaction Establishment Phase

    See Transaction Establishment Phase.

  2. Transaction Data Transfer Phase

    See Transaction Data Transfer Phase.

  3. Transaction Termination Phase

    See Transaction Termination Phase.

4.2.1 Transaction Establishment Phase

The transaction begin service provides means to start a transaction dialogue between two TC-users. This may be accompanied by the transfer of components previously accumulated using the component handling primitives described in Component Handling Primitives.

4.2.1.1 Transaction Begin Request
TC_BEGIN_REQ

This primitive requests that the transaction component provider form a transaction dialogue to the specified destination protocol address, from the specified source protocol address, using the specified options. Any components that have been accumulated using the component handling primitives (see Component Handling Primitives), will accompany the primitive.

Format

The format of the message is one `M_PROTO' message block followed by zero or more `M_DATA' message blocks containing raw transaction user information. The `M_PROTO' message block is structured as follows:

     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 OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong COMP_flags;               /* For use with ANSI QWP/QWOP */
     } TC_begin_req_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_BEGIN_REQ'.

SRC_length
Specifies the length of the source protocol address associated with the primitive.

SRC_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the source protocol address begins. Proper alignment of the protocol address in the `M_PROTO' message block is not guaranteed.

DEST_length
Specifies the length of the destination protocol address associated with the primitive.

DEST_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the destination protocol address begins. Proper alignment of the protocol address in the `M_PROTO' message block is not guaranteed.

OPT_length
Specifies the length of the protocol options associated with the primitive.

OPT_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

COMP_flags
Specifies additional information about the components. See “Flags” below. Component flags may be provider specific.
Flags

The COMP_flags field can contain any of the following flags:

COMPONENTS_PRESENT
Specifies, when set, that components previously accumulated with the component handling primitives (see Component Handling Primitives) are to be associated with the primitive.

NO_PERMISSION
Specifies, when set, that the the peer is not granted permission to end the transaction upon the receipt of the corresponding `TC_BEGIN_IND' primitive.
Valid State

This primitive is valid in transaction state TC_IDLE.

New State

The new state for the transaction is TC_WACK_CREQ.

Rules

The following rules apply to the specification of parameters to this primitive:

Acknowledgement

This primitive requires the transaction provider to generate one of the following acknowledgements upon receipt of the primitive:

4.2.1.2 Transaction Begin Indication
TC_BEGIN_IND

The transaction indication service primitive indicates that a peer TC user has initiated a transaction dialogue, the source protocol address associated with the peer TC user, the destination address to which the transaction dialogue is initiated, the options for the dialogue.

Format

The format of the message is one `M_PROTO' message block structured as follows:

     typedef struct TC_begin_ind {
             ulong PRIM_type;                /* Always TC_BEGIN_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 OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong COMP_flags;               /* For use with ANSI QWP/QWOP */
     } TC_begin_ind_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_BEGIN_IND'.

SRC_length
Indicates the length of the source protocol address associated with the primitive.

SRC_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the source protocol address begins.

DEST_length
Indicates the length of the destination protocol address associated with the primitive.

DEST_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the destination protocol address begins.

OPT_length
Indicates the length of the protocol options associated with the primitive.

OPT_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

COMP_flags
Indicates additional information about the components. See “Flags” below. Component flags may be provider specific.
Flags

The COMP_flags field can contain any of the following flags:

TC_COMPONENTS_PRESENT
Indicates, when set, that component handling primitives representing the components associated with the begin indication follow this primitive.

TC_NO_PERMISSION
Indicates, when set, that the TC user is not permitted to end the dialogue upon receipt of this primitive, nor when issuing a response.
Valid State

This primitive is valid in transaction state TC_IDLE.

New State

The new state of the transaction is TC_WRES_CIND.

Rules

The following rules apply to the issuance of this primitive by the transaction provider:

4.2.1.3 Transaction Begin Response
TC_BEGIN_RES

This primitive allows the destination TC user to request that the TC provider accept a previous transaction dialogue begin indication, either on the current stream or on a specified acceptor stream.

Format

The format of the message is one `M_PROTO' message block structured as follows:

     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 OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong COMP_flags;               /* For use with ANSI CWP/CWOP */
     } TC_begin_res_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_BEGIN_RES'.

SRC_length
Specifies the length of the source protocol address associated with the primitive.

SRC_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the source protocol address begins. Proper alignment of the protocol address in the `M_PROTO' message block is not guaranteed.

OPT_length
Specifies the length of the protocol options associated with the primitive.

OPT_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

COMP_flags
Specifies additional information about the components. See “Flags” below. Component flags may be provider specific.
Flags

The COMP_flags field can contain any of the following flags:

TC_COMPONENTS_PRESENT
Specifies, when set, that component handling primitives representing the components associated with the begin indication precede this primitive.

TC_NO_PERMISSION
Specifies, when set, that the TC user peer is not permitted to end the dialogue upon receipt of this primitive, nor when issuing a response.
Valid State

This primitive is valid in transaction state TC_WRES_CIND.

New State

The new state of the transaction is TC_DATA_XFER.

Rules
Acknowledgement

This primitive requires the TC provider to generate one of the following acknowledgements upon receipt of the primitive:

4.2.1.4 Transaction Begin Confirm
TC_BEGIN_CON

Format

The format of the message is one `M_PROTO' message block structured as follows:

     typedef struct TC_begin_con {
             ulong PRIM_type;                /* Always TC_CONT_IND */
             ulong OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong COMP_flags;               /* For use with ANSI CWP/CWOP */
     } TC_begin_con_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_BEGIN_CON'.

OPT_length
Indicates the length of the protocol options associated with the primitive.

OPT_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

COMP_flags
Indicates additional information about the components. See “Flags” below. Component flags may be provider specific.
Flags
Valid State
New State
Rules
Acknowledgement

4.2.2 Transaction Data Transfer Phase

The component transfer service primtiives provide for an exchange of component user data known as TSDUs, in either direction or in both directions simultaneously on a transaction dialogue. The transaction service preserves both the sequence and the boundaries of the TSDUs.

4.2.2.1 Transaction Continue Request
TC_CONT_REQ

Format

The format of the message is one `M_PROTO' message block structured as follows:

     typedef struct TC_cont_req {
             ulong PRIM_type;                /* Always TC_CONT_REQ */
             ulong OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong COMP_flags;               /* For use with ANSI CWP/CWOP */
     } TC_cont_req_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_CONT_REQ'.

OPT_length
Specifies the length of the protocol options associated with the primitive.

OPT_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

COMP_flags
Specifies additional information about the components. See “Flags” below. Component flags may be provider specific.
Flags
Valid State
New State
Rules
Acknowledgement

4.2.2.2 Transaction Continue Indication
TC_CONT_IND

Format

The format of the message is one `M_PROTO' message block structured as follows:

     typedef struct TC_cont_ind {
             ulong PRIM_type;                /* Always TC_CONT_IND */
             ulong OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong COMP_flags;               /* For use with ANSI CWP/CWOP */
     } TC_cont_ind_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_CONT_IND'.

OPT_length
Indicates the length of the protocol options associated with the primitive.

OPT_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

COMP_flags
Indicates additional information about the components. See “Flags” below. Component flags may be provider specific.
Flags
Valid State
New State
Rules
Acknowledgement

4.2.3 Transaction Termination Phase

4.2.3.1 Transaction End Request
TC_END_REQ

Format

The format of the message is one `M_PROTO' message block structured as follows:

     typedef struct TC_end_req {
             ulong PRIM_type;                /* Always TC_END_REQ */
             ulong OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong TERM_scenario;            /* Reason for termination */
     } TC_end_req_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_END_REQ'.

OPT_length
Specifies the length of the protocol options associated with the primitive.

OPT_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

TERM_scenario
Flags
Valid State
New State
Rules
Acknowledgement

4.2.3.2 Transaction End Indication
TC_END_IND

Format

The format of the message is one `M_PROTO' message block structured as follows:

     typedef struct TC_end_ind {
             ulong PRIM_type;                /* Always TC_END_IND */
             ulong OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong COMP_flags;               /* Components present flag */
     } TC_end_ind_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_END_IND'.

OPT_length
Indicates the length of the protocol options associated with the primitive.

OPT_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

COMP_flags
Indicates additional information about the components. See “Flags” below. Component flags may be provider specific.
Flags
Valid State
New State
Rules
Acknowledgement

4.2.3.3 Transaction Abort Request
TC_ABORT_REQ

Format

The format of the message is one `M_PROTO' message block structured as follows:

     typedef struct TC_abort_req {
             ulong PRIM_type;                /* Always TC_ABORT_REQ */
             ulong OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong ABORT_reason;             /* Abort reason */
     } TC_abort_req_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_ABORT_REQ'.

OPT_length
Specifies the length of the protocol options associated with the primitive.

OPT_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

ABORT_reason
Flags
Valid State
New State
Rules
Acknowledgement

4.2.3.4 Transaction Abort Indication
TC_ABORT_IND

Format

The format of the message is one `M_PROTO' message block structured as follows:

     typedef struct TC_abort_ind {
             ulong PRIM_type;                /* Always TC_ABORT_IND */
             ulong OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong ABORT_reason;             /* Abort reason */
             ulong ORIGINATOR;               /* Either User or Provider originated */
     } TC_abort_ind_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_ABORT_IND'.

OPT_length
Indicates the length of the protocol options associated with the primitive.

OPT_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

ABORT_reason

ORIGINATOR
Flags
Valid State
New State
Rules
Acknowledgement

4.3 Operation Class 4 Primitives

4.3.1 Transaction Phase

4.3.1.1 Transaction Unidirectional Request
TC_UNI_REQ

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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 OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
     } TC_uni_req_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_UNI_REQ'.

SRC_length
Specifies the length of the source protocol address associated with the primitive.

SRC_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the source protocol address begins.

DEST_length
Specifies the length of the destination protocol address associated with the primitive.

DEST_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the destination protocol address begins.

OPT_length
Specifies the length of the protocol options associated with the primitive.

OPT_offset
Specifies the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).
Flags
Valid State
New State
Rules
Acknowledgement

4.3.1.2 Transaction Unidirectional Indication
TC_UNI_IND

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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 OPT_length;               /* Options associated with the primitive */
             ulong OPT_offset;               /* Options associated with the primitive */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong COMP_flags;               /* Components preset flag */
     } TC_uni_ind_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_UNI_IND'.

SRC_length
Indicates the length of the source protocol address associated with the primitive.

SRC_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the source protocol address begins.

DEST_length
Indicates the length of the destination protocol address associated with the primitive.

DEST_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the destination protocol address begins.

OPT_length
Indicates the length of the protocol options associated with the primitive.

OPT_offset
Indicates the offset from the beginning of the `M_PROTO' message block where the protocol options begin.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

COMP_flags
Indicates additional information about the components. See “Flags” below. Component flags may be provider specific.
Flags
Valid State
New State
Rules
Acknowledgement

4.3.1.3 Transaction Notice Indication
TC_NOTICE_IND

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_NOTICE_IND'.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

REPORT_cause
Flags
Valid State
New State
Rules
Acknowledgement

4.4 Component Handling Primitives

4.4.1 Invocation of an Operation

4.4.1.1 Invoke Request
TC_INVOKE_REQ

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_INVOKE_REQ'.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

PROTOCOL_class

INVOKE_id

LINKED_id

OPERATION

MORE_flag

TIMEOUT
Flags
Valid State
New State
Rules
Acknowledgement

4.4.1.2 Invoke Indication
TC_INVOKE_IND

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_INVOKE_IND'.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

OP_class

INVOKE_id

LINKED_id

OPERATION

MORE_flag
Flags
Valid State
New State
Rules
Acknowledgement

4.4.2 Result of a Successful Operation

4.4.2.1 Return Result Request
TC_RESULT_REQ

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_RESULT_REQ'.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

INVOKE_id

OPERATION

MORE_flag
Flags
Valid State
New State
Rules
Acknowledgement

4.4.2.2 Return Result Indication
TC_RESULT_IND

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_RESULT_IND'.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

INVOKE_id

OPERATION

MORE_flag
Flags
Valid State
New State
Rules
Acknowledgement

4.4.3 Error Reply to an Invoked Operation

4.4.3.1 Return Error Request
TC_ERROR_REQ

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_RESULT_REQ'.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

INVOKE_id

ERROR_code

MORE_flag
Flags
Valid State
New State
Rules
Acknowledgement

4.4.3.2 Return Error Indication
TC_ERROR_IND

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_ERROR_IND'.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

INVOKE_id

ERROR_code
Flags
Valid State
New State
Rules
Acknowledgement

4.4.4 Termination of an Operation Invocation

4.4.4.1 Cancel Request
TC_CANCEL_REQ

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_CANCEL_REQ'.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

INVOKE_id
Flags
Valid State
New State
Rules
Acknowledgement

4.4.4.2 Cancel Indication
TC_CANCEL_IND

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     typedef struct TC_cancel_ind {
             ulong PRIM_type;                /* Always TC_CANCEL_IND */
             ulong DIALOG_id;                /* Dialog Identifier */
             ulong INVOKE_id;                /* Invoke identifier */
     } TC_cancel_ind_t;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_CANCEL_IND'.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

INVOKE_id
Flags
Valid State
New State
Rules
Acknowledgement

4.4.5 Rejection of a Component

4.4.5.1 Reject Request
TC_REJECT_REQ

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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;
     
Parameters

The primitive has the following arguments:

PRIM_type
Specifies the primitive type. Always `TC_REJECT_REQ'.

DIALOG_id
Specifies the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

INVOKE_id

PROBLEM_code
Flags
Valid State
New State
Rules
Acknowledgement

4.4.5.2 Reject Indication
TC_REJECT_IND

Format

The format of the message is one `M_PROTO' message block, followed by zero or more `M_DATA' message blocks if any components are specified by the TC user. The format of the `M_PROTO' message block is as follows:

     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;
     
Parameters

The primitive has the following arguments:

PRIM_type
Indicates the primitive type. Always `TC_REJECT_IND'.

DIALOG_id
Indicates the dialogue identifier which uniquely identifies this transaction dialogue within the stream. Dialogue identifiers assigned by the component user must have the high bit set to one (1); those assigned by the component provider have the high bit set to zero (0).

INVOKE_id

ORIGINATOR

PROBLEM_code
Flags
Valid State
New State
Rules
Acknowledgement

5 TCAP Header File

Glossary

Signalling Data Link Service Data Unit
A grouping of SDL user data whose boundaries are preserved from one end of the signalling data link connection to the other.

Data transfer
The phase in connection and connectionless modes that supports the transfer of data between to signalling data link users.

SDL provider
The signalling data link layer protocol that provides the services of the signalling data link interface.

SDL user
The user-level application or user-level or kernel-level protocol that accesses the services of the signalling data link layer.

Local management
The phase in connection and connectionless modes in which a SDL user initializes a stream and attaches a PPA address to the stream. Primitives in this phase generate local operations only.

PPA
The point at which a system attaches itself to a physical communications medium.

PPA identifier
An identifier of a particular physical medium over which communication transpires.

Acronyms

SDLI Signalling Data Link Interface


SDL Signalling Data Link


SDL SDU Signalling Data Link Service Data Unit


ITU-T International Telecommunications Union - Telecom Sector


PPA Physical Point of Attachment


References

[1] ITU-T Recommendation Q.700


[2] ITU-T Recommendation Q.701


[3] ITU-T Recommendation Q.702


[4] ITU-T Recommendation Q.703


[5] ITU-T Recommendation Q.704


[6] Geoffrey Gerrien, “CDI - Application Program Interface Guide,” Gcom, Inc., March 1999.


[7] ITU-T Recommendation Q.771


Indices

Concept Index

Type Index

Function Index

Variable Index

File Index

Primitive Index

Primitive Value Index

Protocol State Index


Footnotes

[1] An example of a protocol module that requires transaction component sub-layer services is the 3GPP TS 29.002 Mobile Application Part (MAP).

[2] All three phases in operation class 1 can be combined into a single exchange of primitives.

[3] All three phases in operation class 2 can be combined into a single exchange of primitives.

[4] All three phases in operation class 3 can be combined into a single exchange of primitives.

[5] Conventions for the time-sequence diagrams are defined in ITU-T X.210, ISO/IEC 10731:1994.

[6]