Home Index Prev Next More Download Info FAQ Mail

STREAMS Design

ZZZZZZZZ UNDER CONSTRUCTION ZZZZZZZZ

Transaction Capabilities Application Part (TCAP) Interface

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.

Overview

TCAP Overview Diagram

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.

Service Interface

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.

Class 1 Transaction Services

The main features of class 1 transaction service are:

  1. it provides a transaction dialog
  2. it provides for the exchange of user data and application components within a pre-established dialog
  3. it indicates success of invoked operations
  4. it indicates failure of invoked operations
  5. it provides reliable transaction services

There are three phases to each transaction: Transaction Initiation; User Data and Component Transfer; and Transaction Termination.

Class 2 Transaction Services

The main features of class 2 transaction service are:

  1. it provides a transaction dialog
  2. it provides for the exchange of user data and application components within a pre-established dialog
  3. it indicates success of invoked operations
  4. it does not indicate failure of invoked operations
  5. it is unreliable

There are three phases to each transaction: Transaction Initiation; User Data and Component Transfer; and Transaction Termination.

Class 3 Transaction Services

The main features of class 3 transaction service are:

  1. it provides a transaction dialog
  2. it provides for the exchange of user data and application components within a pre-established dialog
  3. it does not indicate success of invoked operations
  4. it indicates failure of invoked operations
  5. it is unreliable

There are three phases to each transaction: Transaction Initiation; User Data and Component Transfer; and Transaction Termination.

Class 4 Transaction Services

The main features of class 4 transaction service are:

  1. it does not provide a transaction dialog
  2. it provides for the unidirectional transfer of user data and application components
  3. there is no logical relationship between these sets of user data and application components
  4. it does not indicate success of invoked operations
  5. it does not indicate failure of invoked operations
  6. it is unreliable

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.

Local Management

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.

Table 1.  Service Primitives for Class 1, 2 and 3 Transaction Services
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

Table 2.  Service Primitives for Class 4 Transaction 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
Dialog
Data
Transfer
TR_UNI_REQ, TR_UNI_IND, TR_NOTICE_IND

Services

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.

Local Management Services Definition

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.

Network Information Reporting Service

This service provides information on the options provided by the TR and TC provider.

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

User Bind 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.

Primitives

Sequences

Implementation

Header File

Component (TC) Sub-Layer Header File

/*****************************************************************************

 @(#) $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__

Transaction (TR) Sub-Layer Header File

/*****************************************************************************

 @(#) $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__

ZZZZZZZZZZ Under Construction ZZZZZZZZZZZ

 


Home Index Prev Next More Download Info FAQ Mail