t_open - Establishes a transport endpoint
#include <xti.h> #include <fcntl.h>
int t_open(
char *name,
int oflag,
struct t_info *info );
XTI Library (libxti.a)
Interfaces documented on this reference page conform to
industry standards as follows:
t_open(): XNS4.0, XNS5.0
Refer to the standards(5) reference page for more information
about industry standards and associated tags.
The following table summarizes the relevance of input and
output parameters before and after the t_open() function
is called:
------------------------------------------
Parameter Before Call After Call
------------------------------------------
name y n
oflag y n
info->addr n y
info->options n y
info->tsdu n y
info->etsdu n y
info->connect n y
info->discon n y
info->servtype n y
info->options n y
------------------------------------------
Notes to Table: This is a meaningful parameter. This is
not a meaningful parameter.
Identifies the transport provider. The transport provider
must define the type of transport service (protocol) to
associate with the opened transport endpoint.
[Tru64 UNIX] This implementation of XTI uses pathnames
to device special files to identify transport
providers. The device special files corresponding
to TCP or UDP transport providers reside in the
/dev/streams/xtiso directory. If you use a different
transport provider, see its documentation for
the correct device name. The oflag parameter is
similar to the oflag parameter of the open() function
and is used in the same way. Use oflag to
establish synchronous or asynchronous operating
modes of the transport provider pointed to by the
name parameter. Specify O_RDWR to indicate that
the endpoint supports reading and writing by functions
and blocks on them, or specify the bitwise
inclusive OR of O_RDWR and O_NONBLOCK to indicate
that the endpoint supports the reading and writing
by functions but does not block on them. These
options are defined in the <fcntl.h> header file.
Points to a type t_info structure. The location of
a type t_info structure is returned to the info
parameter when the t_open() function successfully
executes. Members of the t_info structure specify
default characteristics of the underlying transport
protocol pointed to by the name parameter.
If a transport user sets the info parameter to the
null pointer value, the function does not return
any protocol information.
When a transport user must preserve protocol independence,
you can access the data length information
defined by members of the type t_info structure
to determine how large data buffers must be to
hold exchanged data. If the transport user exceeds
the allowed data size during any data exchange, you
receive an error. Alternatively, you can use the
t_alloc() function to allocate necessary data
buffers. This structure has the following members:
Permitted number of bytes in the protocol address.
A value greater than zero indicates the maximum
number of permitted bytes in a protocol address. A
value of -1 specifies that there is no limit on the
protocol address size. A value of -2 specifies
that the transport provider does not permit the
transport user access to the protocol addresses.
Permitted number of bytes of options. A value
greater than zero indicates the maximum number of
bytes of protocol-specific options supported by the
transport provider. A value of -1 specifies that
there is no limit to the number of options bytes.
A value of -2 specifies that the transport provider
does not permit a transport user to set options.
Permitted number of bytes in a Transport Service
Data Unit (TSDU). A value greater than zero specifies
the maximum number of bytes in a TSDU message.
A value of zero specifies that the transport
provider does not support TSDU data exchanges,
although it does support the sending of a data
stream with no logical boundaries preserved across
a connection.
A value of -1 specifies that there is no limit to
the number of bytes in a TSDU data exchange. A
value of -2 specifies that the transfer of normal
data is not supported by the transport provider.
Permitted number of bytes in an Expedited Transport
Service Data Unit (ETSDU). A value greater than
zero specifies the maximum number of bytes in an
ETSDU data exchange. A value of zero specifies
that the transport provider does not support ETSDU
data exchanges, although it does support the sending
of an expedited data stream with no logical
boundaries preserved across a connection. A value
of -1 specifies that there is no limit on the number
of bytes in an ETSDU data exchange. A value of
-2 specifies that the transfer of expedited data is
not supported by the transport provider. Permitted
number of bytes of data in connect request. A
value greater than zero specifies the maximum number
of data bytes that may be exchanged using the
t_connect() and t_rcvconnect() functions. A value
of -2 specifies that the transport provider does
not permit data to be sent when a connection is
established. Permitted number of bytes of data in
a disconnect request. A value greater than zero
specifies the maximum number of data bytes that may
be exchanged using the t_snddis() and t_rcvdis()
functions. A value of -1 specifies that there is no
limit to the number of data bytes that may be sent
when a connection is closed using these abortive
release functions. A value of -2 specifies that
the transport provider does not permit data to be
sent with an abortive release function. This member
specifies only one of the following types of
service supported by the transport provider: The
transport provider supports connection-mode service
but does not support the optional orderly release
facility. The transport provider supports connection-mode
service with the optional orderly release
facility. The transport provider supports connectionless-mode
service. For this service type, this
function returns the value -2 for the etsdu, connect,
and discon parameters. Specifies other
information about the transport provider. If the
T_SENDZERO bit is set in flags, this indicates the
underlying transport provider supports the sending
of zero-length TSDUs.
The t_open() XTI function must be the first one called
when initializing a transport endpoint. Two modes of
operation may be specified, synchronous and asynchronous.
In synchronous mode, a transport user must wait for some
specific event to occur before control is returned (refer
to the t_look() function). In asynchronous mode, a transport
user is not required to wait for the event to occur;
control is returned immediately.
The t_open() function establishes the transport endpoint
by supplying a transport provider identifier that specifies
a particular transport protocol. A file descriptor,
which must subsequently always be used to identify the
established endpoint, is returned by this function.
Upon successful completion, the t_open() function returns
a file descriptor, a nonnegative integer. Otherwise, a
value of -1 is returned and t_errno is set to indicate the
error.
If the t_open() function fails, t_errno may be set to one
of the following values: An invalid option is specified.
Invalid transport provider name. A system error occurred
during execution of this function. This error indicates
that a communication problem has been detected between XTI
and the transport provider for which there is no other
suitable XTI(t_errno).
The t_open() function can be called in the T_UNINIT transport
provider state only.
Functions: open(2)
Standards: standards(5)
Network Programmer's Guide
t_open(3)
[ Back ] |