XTI-mOSI is designed specifically for Basic Communication Applications that are in one of these categories:
In addition to applications already using XTI, the X Window System (X) and Internet Protocol Suite applications (in general) are examples of potential Migrant applications.
The XTI-mOSI interface provides access to OSI ACSE and Presentation services. With mOSI, the optional parameters available to the application have been selected with the intent of facilitating interoperability and diagnostic of problems. They are described later in this section.
Most applications only need the Kernel functionality. This is even true for most of the OSI standard applications: Remote Database Access (RDA), Directory (X.500), FTAM without recovery, OSI Distributed Transaction Processing (TP) without 2-phase commitment, OSI Management.
XTI-mOSI has been developed to support migrant transport applications, and also applications which require a simple octet stream connection between peers.
Application designers should consider which API is most appropriate to their needs.
Applications which are being ported from other transport providers, or require a simple octet string connection, should use XTI-mOSI.
Applications which require session function units outside kernel, or which require multiple presentation contexts, or which may require additional session/presentation by mOSI in the future, should use XAP.
When only minimal OSI support is required, the user should consider the availability of XTI-mOSI and XAP on target hardware platforms when selecting an interface.
The address part is a Presentation Address. The calling and called addresses are required parameters, while the use of a responding address is optional.
The name part (Application Process (AP) Title, Application Entity (AE) Qualifier and the AP and AE invocation-identifiers) is always optional.
ISO Directory facilities, when available, can relate the name parts (identifying specific applications) to the addresses of the real locations where they can be accessed.
The general format of the
addr
structure can be found in
An application context name identifies a set of tasks to be performed by an application. It is exchanged during association establishment with the purpose of conveying a common understanding of the work to be done.
This parameter is exposed to offer some negotiation capabilities to the application and to increase the chances of interoperability.
When receiving a non suitable or unknown value from a peer application, the application may propose an alternate value or decide to terminate prematurely the association.
A default value (in the form of an Object Identifier) is provided,
identifying a generic XTI-mOSI application. Its value can be found in
A presentation context is the association of an abstract syntax with a transfer syntax. The presentation context is used by the application to identify how the data is structured and by the OSI Application Layer to identify how the data should be encoded/decoded.
A generic presentation context is defined for a stream-oriented, unstructured, data transfer service with null encoding:
abstract syntax: The single data type of this abstract syntax is a sequence of octets that are defined in the application protocol specification as being consecutive octets on a stream-oriented transport mechanism, without regard for any semantic or other boundaries.
transfer syntax: The data value shall be represented as an octet-aligned presentation data value. If two or more data values are concatenated together they are considered to be a single (longer) data value. (This is the null encoding rule).
The value of the Object Identifiers for this generic presentation context
can be found in
As negotiation occurs between the peer OSI Application layers, the presentation context(s) proposed by the application may not be accepted.
The Presentation Context Definition and Result List indicates, for each of the proposed presentation context, if it is accepted or, if not, provides a reason code; the application may choose to terminate the association prematurely if it does not suit its requirements.
An explanation of when an application may benefit from using
the XTI options specific to mOSI can be found in
All options have end-to-end significance (see
Option Name | Type of Option | Legal | Meaning |
---|---|---|---|
Value | Option Value | ||
T_AP_CNTX_NAME | Object identifier
item (see
| see text
default: see text | Application Context Name |
T_AP_PCL | Presentation Context Definition and Result list (see
| see text default: see text | Presentation Context Definition and Result List |
A default value (for a generic XTI-mOSI application) is provided.
It is defined in
The application may choose to propose, through this option, a value different from the default one. The application may also use this option to check the value returned by the peer application and decide if the association should be kept or terminated.
A default is provided: a list with one presentation context
(the stream oriented, unstructured, data transfer service
with null encoding - this is described in section
The codes for the result of negotiation and reason for rejection
are defined in
Only a single abstract syntax and transfer
syntax can be used by XTI-mOSI. On
If the connection is accepted, the Presentation Context Definition and Result List is updated to reflect the results of negotiation for each element of the context list, and a single presentation context is selected.
When responding to a remote connect, the application can specifically mark presentation contexts as rejected using the res field, and can re-order the syntax array to select a single transfer syntax.
On calling
No management options are defined.
All options have end-to-end significance (see
Option Name | Type of Option | Legal | Meaning |
---|---|---|---|
Value | Option Value | ||
T_AP_CNTX_NAME | Object identifier
item (see
| see text
default: see text | Application Context Name |
T_AP_PCL | Presentation Context
Definition and Result list (see
| see text
default: see text | Presentation Context Definition and Result List |
Further Remarks
A default value (for a generic XTI-mOSI application) is provided.
It is defined in
The application may choose to propose, through this option, a value different from the default one. The application may also use this option to check the value returned by the peer application and decide if the datagram should be kept or discarded.
In connectionless mode, the transfer syntaxes are not negotiated. Their
use is determined by the sending application entity, and must be
acceptable by the receiving application entity.
A default value is provided by XTI: a list with one element, the generic
presentation context (the stream-oriented, unstructured, data transfer
service with null encoding described in
Only a single abstract syntax and transfer
syntax can be used by connectionless-mode XTI-mOSI. If more than one
presentation context is present in the options list for
No management options are defined.
These Options are defined in
This facility is implementation dependent. An attempt to specify an unsupported option will return with the status field set to T_NOTSUPPORT.
None of these options are available with an ISO-over-TCP transport provider.
The addr parameter passed to/returned from
The opt parameter may be used to change the Application Context Name received.
This local addr field is used, depending on the XTI primitive, as the calling, called or responding address, the called address being different from the responding address only when two different file descriptors (fd, resfd), bound to different addresses, are used.
Before the call, the sndcall->opt structure may be used to request an Application Context name or Presentation Context different from the default value.
Parameters | Before call | After call | |
---|---|---|---|
_ | |||
Connection-mode | Connectionless-mode | ||
fd | x | / | / |
info->addr | / | x | x |
info->options | / | x | x |
info->tsdu | / | T_INFINITE (-1) | T_INFINITE (-1) |
info->etsdu | / | (T_INVALID (-2) | T_INVALID (-2) |
info->connect | / | x | T_INVALID (-2) |
info->discon | / | x | T_INVALID (-2) |
info->servtype | / | T_COTS_ORD | T_CLTS |
info->flags | / | 0 | 0 |
The values of the parameters in the
t_info
structure for the
The values returned in
info->connect
and
info->discon
in state T_DATAXFER
may differ from the values returned by
mOSI does not support sending of TSDU of zero length, so this value equals 0.
Incoming user data encoded as multiple presentation data values will cause the TBADDATA error to be returned.
Parameters | Before call | After call | |
---|---|---|---|
_ | |||
Connection-mode | Connectionless-mode | ||
name | x | / | / |
oflag | / | / | |
info->addr | / | x | x |
info->options | / | x | x |
info->tsdu | / | T_INFINITE (-1) | T_INFINITE (-1) |
info->etsdu | / | T_INVALID (-2) | T_INVALID (-2) |
info->connect | / | x | T_INVALID (-2) |
info->discon | / | x | T_INVALID (-2) |
info->servtype | / | T_COTS_ORD | T_CLTS |
info->flags | / | 0 | 0 |
The values of the parameters in the t_info structure reflect mOSI limitations as follows:
These values are limited by the version of the session supported by the mOSI provider, and are generally much larger than those supported by an ISO Transport or TCP provider.
mOSI does not support sending of TSDU of zero length, so this value equals 0.
The call->opt structure may also contain an Application Context Name and/or Presentation Context Definition Result List.
Since expedited data transfer is not supported for a mOSI provider, the parameter flags shall not have [T_EXPEDITED] set.
Other session protocol mechanisms are out of scope, except Basic Concatenation which is mandatory and transparent to the application.
If invalid (non-negotiable) options are requested by the peer and detected by the provider once the association is already established (such as the ACSE presentation context missing in the Defined Context Set), the association is rejected via an A-(P)-ABORT generated by the implementation.
The presentation context of ACSE is required and used. The user should not request it as the implementation will insert it automatically in the context list.
If the user does not specifically request an Application Context name
via the opt parameter of
During association establishment (that is, before the XTI-mOSI provider negotiates acceptance of a single abstract syntax/transfer syntax pair), an XTI-mOSI application initiating the association will only send a single presentation data value in the user information parameter. The XTI-mOSI provider will insure that the first abstract syntax and transfer syntax pair being negotiated is the one required for its encoding.
To reject an association request, the responding application
issues
However, a negative A-ASSOCIATE confirm (AARE- APDU) may be received
from a non-XTI OSI peer. The negative A-ASSOCIATE confirm event
is mapped to
XTI call | Parameter | Service | Parameter |
---|---|---|---|
t_connect | A-ASSOCIATE req | ||
sndcall->addr | Called Presentation Address | ||
sndcall->addr (1) | Called AP Title | ||
sndcall->addr (1) | Called AE Qualifier | ||
sndcall->addr | Called AP invocation-identifier | ||
sndcall->addr | Called AE invocation-identifier | ||
sndcall->opt (2) | Application Context Name | ||
sndcall->opt (3) | P-context Definition and Result List | ||
sndcall->udata | User Information | ||
{t_bind} | req|ret->addr | Calling Presentation Address | |
{t_bind} | req|ret->addr | Calling AP Title | |
{t_bind} | req|ret->addr | Calling AE Qualifier | |
t_listen | A-ASSOCIATE ind | ||
call->addr | Calling Presentation Address | ||
call->addr (1) | Calling AP Title | ||
call->addr (1) | Calling AE Qualifier | ||
call->opt | Application Context Name | ||
call->opt (4) | P-context Definition and Result List | ||
call->udata | User Information | ||
{t_bind} | req|ret->addr | Called Presentation Address | |
{t_bind} | req|ret->addr (1) | Called AP Title | |
{t_bind} | req|ret->addr (1) | Called AE Qualifier | |
{t_bind} | req|ret->addr | Calling AP invocation-identifier | |
{t_bind} | req|ret->addr | Calling AE invocation-identifier | |
t_accept | A-ASSOCIATE rsp+ | ||
call->addr | not used: Calling Presentation Address | ||
call->opt | Application Context Name | ||
call->opt | P-context Definition and Result List | ||
call->udata | User Information | ||
{internal} | ::="accepted" | Result | |
{t_bind} | req|ret->addr | Responding Presentation Address | |
{t_bind} | req|ret->addr (1) | Responding AP Title | |
{t_bind} | req|ret->addr (1) | Responding AE Qualifier | |
{t_bind} | req|ret->addr | Responding AP invocation-identifier | |
{t_bind} | req|ret->addr | Responding AE invocation-identifier | |
not sent | A-ASSOCIATE rsp- | ||
t_connect | (synchronous mode) | A-ASSOCIATE cnf+ | |
rcvcall->addr | Responding Presentation Address | ||
rcvcall->addr | Responding AP Title | ||
rcvcall->addr | Responding AE Qualifier | ||
rcvcall->addr | Responding AP invocation-identifier | ||
rcvcall->addr | Responding AE invocation-identifier | ||
rcvcall->opt | Application Context Name | ||
rcvcall->opt | P-context Definition and Result List | ||
rcvcall->udata | User Information | ||
{internal} | ::="accepted" | Result | |
{internal} | ::="ACSE service-user" | Result Source | |
t_rcvconnect | (asynchronous mode) | A-ASSOCIATE cnf+ | |
call->addr | Responding Presentation Address | ||
call->addr | Responding AP Title | ||
call->addr | Responding AE Qualifier | ||
call->addr | Responding AP invocation-identifier | ||
call->addr | Responding AE invocation-identifier | ||
call->opt | Application Context Name | ||
call->opt | P-context Definition and Result List | ||
call->udata | User Information | ||
{discarded} | ::="accepted" | Result | |
{discarded} | ::="ACSE service-user" | Result Source-diagnostic | |
t_rcvdis | A-ASSOCIATE cnf- | ||
discon->udata | User Information | ||
discon->reason (5) | Result | ||
{internal} | ACSE serv-user|pres serv-prov | Result Source-diagnostic | |
{discarded} | Application Context Name | ||
{discarded} | P-context Definition and Result List |
XTI call | Parameter | Service | Parameter |
---|---|---|---|
t_snd | P-DATA req | ||
buf | User Data | ||
t_rcv | P-DATA ind | ||
buf | User Data |
This table makes the assumption that the XTI-mOSI provider
supports the orderly release facility with user data (
XTI call | Parameter | Service | Parameter |
---|---|---|---|
t_sndrel2 | A-RELEASE req | ||
reldata->reason | Reason | ||
reldata->udata | User Information | ||
t_rcvreldata | A-RELEASE ind | ||
reldata->reason | Reason | ||
reldata->udata | User Information | ||
t_sndrel2 | A-RELEASE rsp | ||
reldata->reason | Reason | ||
reldata->udata | User Information | ||
t_rcvreldata | A-RELEASE cnf | ||
reldata->reason | Reason | ||
reldata->udata | User Information | ||
t_snddis | A-ABORT req | ||
n/s | Diagnostic | ||
call->udata | User Information | ||
t_rcvdis | A-ABORT ind | ||
discon->reason | Diagnostic | ||
discon->udata | User Information | ||
t_rcvdis | A-P-ABORT ind | ||
discon->reason | Diagnostic |
XTI call | Parameter | Service | Parameter |
---|---|---|---|
t_sndudata | A-UNIT-DATA source | ||
unitdata->addr | Called Presentation Address | ||
unitdata->addr | Called AP Title | ||
unitdata->addr | Called AE Qualifier | ||
unitdata->addr | Called AP invocation-identifier | ||
unitdata->addr | Called AE invocation-identifier | ||
unitdata->opt (1) | Application Context Name | ||
unitdata->opt (2) | P-context Definition and Result List | ||
unitdata->udata | User Information | ||
{t_bind} | req|ret->addr | Calling Presentation Address | |
{t_bind} | req|ret->addr | Calling AP Title | |
{t_bind} | req|ret->addr | Calling AE Qualifier | |
{t_bind} | req|ret->addr | Calling AP invocation-identifier | |
{t_bind} | req|ret->addr | Calling AE invocation-identifier | |
t_rcvudata | A-UNIT-DATA sink | ||
unitdata->addr | Calling Presentation Address | ||
unitdata->addr | Calling AP Title | ||
unitdata->addr | Calling AE Qualifier | ||
unitdata->addr | Calling AP invocation-identifier | ||
unitdata->addr | Calling AE invocation-identifier | ||
unitdata->opt | Application Context Name | ||
unitdata->opt (3) | P-context Definition and Result List | ||
unitdata->udata | User Information | ||
{t_bind} | req|ret->addr | Called Presentation Address | |
{t_bind} | req|ret->addr | Called AP Title | |
{t_bind} | req|ret->addr | Called AE Qualifier | |
{t_bind} | req|ret->addr | Called AP invocation-identifier | |
{t_bind} | req|ret->addr | Called AE invocation-identifier |
-
-
struct t_mosiaddr {
t_uscalar_t flags;
t_scalar_t osi_ap_inv_id;
t_scalar_t osi_ae_inv_id;
unsigned int osi_apt_len;
unsigned int osi_aeq_len;
unsigned int osi_paddr_len;
unsigned char osi_addr[T_AP_MAX_ADDR];
};
where:
T_OSI_AP_IID_BIT | The contents of the osi_ap_inv_id field is valid |
T_OSI_AE_IID_BIT | The contents of the osi_ae_inv_id field is valid |
Unused bit in flags must be set zero by the user when creating a t_mosiaddr structure for sending, and should be ignore by the user on receipt.
In a t_mosiaddr structure, a bit set in flags indicates the presence of the corresponding invocation identifier in the PDU. Similarly a bit not set indicates absence of the corresponding invocation identifier in the PDU.
osi_addr[0]
osi_addr[T_ALIGN(osi_apt_len)]
osi_addr[T_ALIGN(osi_apt_len)+T_ALIGN(osi_aeq_len)]
The application is responsible for encoding/decoding the AP title and AE qualifier; alternatively, a lookup routine may be provided (outside the scope of this specification).
#define T_ISO_APCO 0x0200
#define T_ISO_APCL 0x0300
#define T_AP_CNTX_NAME 0x1
#define T_AP_PCL 0x2
-
-
#define T_OPT_VALEN(opt) (opt->len - sizeof(struct t_opthdr)).
The application is responsible for encoding/decoding the object identifier value. Alternatively, a lookup routine may be provided (outside the scope of this specification).
The presentation context definition and result list option is a variable sized option consisting of a t_scalar_t giving the number of presentation contexts followed by an array of that number of presentation context item offset elements. Each element is defined as:
-
-
struct t_ap_pco_el {
t_scalar_t count;
t_scalar_t offset;
}
Each presentation context items offset element gives: the count of syntax entries in the presentation context item (including the abstract syntax entry) and the offset of the presentation context item from the beginning of the Presentation Context Definition and Result List option value.
Each presentation context item consists of a header followed by an array.
The header is defined as:
-
-
struct t_ap_pc_item {
t_scalar_t pci;
t_scalar_t res;
}
where
pci
is a unique odd integer (if this is zero in the
sndcall
argument of
-
-
struct t_ap_syn_off {
t_scalar_t size;
t_scalar_t offset;
}
where size is the length of the syntax object identifier contents, and offset is the offset of the object identifier for the syntax from the beginning of the Presentation Context Definition and Result List option value.
The first element in the array of syntax offset elements refers to the abstract syntax the second to the first transfer syntax, and so on.
The following values are used in the res field of a presentation context item:
-
-
#define T_PCL_ACCEPT 0x0000
/*pres. context accepted */
#define T_PCL_USER_REJ 0x0100
/*pres. context rejected by peer application */
#define T_PCL_PREJ_RSN_NSPEC 0x0200
/*prov. reject: no reason specified */
#define T_PCL_PREJ_A_SYTX_NSUP 0x0201
/*prov. reject: abstract syntax not supported*/
#define T_PCL_PREJ_T_SYTX_NSUP 0x0202
/*prov. reject:transfer syntax not supported */
#define T_PCL_PREJ_LMT_DCS_EXCEED 0x0203
/*prov. reject: local limit on DCS exceeded */
For the default abstract syntax, transfer syntax and application context, this Appendix uses object identifiers which are specified in the profile (ISO/IEC pDISP 11188 - Common Upper Layer Requirements (CULR), Part 3: Minimal OSI upper layer facilities - OIW/EWOS working document). Thus the descriptions provided in this Appendix are informative only.
The following OBJECT IDENTIFIER have been defined in CULR part 3:
This object identifier can be used as the abstract syntax when the application protocol (above ACSE) can be treated as single presentation data values (PDVs). Each PDV is a sequence of consecutive octets without regard for semantic or other boundaries. The object identifier may also be used when, for pragmatic reasons, the actual abstract syntax of the application is not identified in Presentation Layer negotiation.
If the default transfer syntax and the abstract syntax are identical, the OBJECT IDENTIFIER for the default abstract syntax is used. If they are not identical, the OBJECT identifier for the default transfer syntax is:
The following OBJECT IDENTIFIER has been defined in Common Upper Layer Requirements (CULR) part 3:
This application context supports the execution of any application using the
default abstract syntax for mOSI.
#define T_AC_U_AARE__NONE 0x0001 /* connection rejected by */
/* peer user: no reason given */
#define T_AC_U_AARE_ACN 0x0002 /* connection rejected: */
/* application context name */
/* not supported */
#define T_AC_U_AARE_APT 0x0003 /* connection rejected: */
/* AP title not recognised */
#define T_AC_U_AARE_AEQ 0x0005 /* connection rejected: */
/* AE qualifier not recognised */
#define T_AC_U_AARE_PEER_AUTH 0x000e /* connection rejected: */
/* authentication required */
#define T_AC_P_ABRT_NSPEC 0x0011 /* aborted by peer provider: */
/* no reason given */
#define T_AC_P_AARE_VERSION 0x0012 /* connection rejected: */
/* no common version */
Other reason codes may be specified as implementation defined constants. In order to be portable, an application should not interpret such information, which should only be used for troubleshooting purposes.
Implementations supporting XTI-mOSI will provide equivalent definitions in <xti_mosi.h>. XTI-mOSI programs should include <xti_mosi.h> as well as <xti.h>.
/* mosi address structure */
struct t_mosiaddr {
t_uscalar_t flags;
t_scalar_t osi_ap_inv_id;
t_scalar_t osi_ae_inv_id;
unsigned int osi_apt_len;
unsigned int osi_aeq_len;
unsigned int osi_paddr_len;
unsigned char osi_addr[MAX_ADDR];
};
#define T_ISO_APCO 0x0200
#define T_ISO_APCL 0x0300
#define T_AP_CNTX_NAME 0x1
#define T_AP_PCL 0x2
#define T_OPT_VALEN(opt) (opt->len - sizeof(struct t_opthdr)).
/* presentation context definition and result list option */
struct t_ap_pco_el {
t_scalar_t count;
t_scalar_t offset;
}
/* presentation context item header */
struct t_ap_pc_item {
t_scalar_t pci; /* unique odd integer */
t_scalar_t res; /* result of negotiation */
}
/* presentation context item element */
struct t_ap_syn_off {
t_scalar_t size; /* length of syntax object identifier contents */
t_scalar_t offset; /* offset of object identifier for the syntax */
}
/* values for res of a presentation context item */
#define T_PCL_ACCEPT 0x0000 /* pres. context accepted */
#define T_PCL_USER_REJ 0x0100 /* pres. context rejected */
/* by peer application */
#define T_PCL_PREJ_RSN_NSPEC 0x0200 /* prov. reject: */
/* no reason specified */
#define T_PCL_PREJ_A_SYTX_NSUP 0x0201 /* prov. reject: abstract */
/* syntax not supported */
#define T_PCL_PREJ_T_SYTX_NSUP 0x0202 /* prov. reject: transfer */
/* syntax not supported */
#define T_PCL_PREJ_LMT_DCS_EXCEED 0x0203 /* prov. reject: local */
/* limit on DCS exceeded */
/* Reason Codes for Disconnections */
#define T_AC_U_AARE__NONE 0x0001 /*connection rejected by */
/*peer user: no reason given */
#define T_AT_C_U_AARE_ACN 0x0002 /*connection rejected: */
/*application context name */
/*not supported */
#define T_AC_U_AARE_APT 0x0003 /*connection rejected: */
/*AP title not recognised */
#define T_AC_U_AARE_AEQ 0x0005 /*connection rejected: */
/*AE qualifier not recognised */
#define T_AC_U_AARE_PEER_AUTH 0x000e /*connection rejected: */
/*authentication required */
#define T_AC_P_ABRT_NSPEC 0x0011 /*aborted by peer provider: */
/*no reason given */
#define T_AC_P_AARE_VERSION 0x0012 /*connection rejected: */
/*no common version */
Contents | Next section | Index |