DAT_EP_CONNECT(3DAT) Direct Access Transport Library Functions
NAME
dat_ep_connect - establish a connection between the local Endpoint
and a remote Endpoint
SYNOPSIS
cc [
flag... ]
file...
-ldat [
library... ]
#include <
dat/udat.h>
DAT_RETURN
dat_ep_connect (
IN DAT_EP_HANDLE ep_handle,
IN DAT_IA_ADDRESS_PTR remote_ia_address,
IN DAT_CONN_QUAL remote_conn_qual,
IN DAT_TIMEOUT timeout,
IN DAT_COUNT private_data_size,
IN const DAT_PVOID private_data,
IN DAT_QOS qos,
IN DAT_CONNECT_FLAGS connect_flags
)
PARAMETERS
ep_handle Handle for an instance of an Endpoint.
remote_ia_address The Address of the remote IA to which an
Endpoint is requesting a connection.
remote_conn_qual Connection Qualifier of the remote IA from which
an Endpoint requests a connection.
timeout Duration of time, in microseconds, that a
Consumer waits for Connection establishment. The
value of
DAT_TIMEOUT_INFINITE represents no
timeout, indefinite wait. Values must be
positive.
private_data_size Size of the
private_data. Must be nonnegative.
private_data Pointer to the private data that should be
provided to the remote Consumer as part of the
Connection Request. If
private_data_size is
zero, then
private_data can be
NULL.
qos Requested quality of service of the connection.
connect_flags Flags for the requested connection. If the least
significant bit of
DAT_MULTIPATH_FLAG is 0, the
Consumer does not request multipathing. If the
least significant bit of
DAT__MULTIPATH_FLAG is
1, the Consumer requests multipathing. The
default value is
DAT_CONNECT_DEFAULT_FLAG, which
is 0.
DESCRIPTION
The
dat_ep_connect() function requests that a connection be
established between the local Endpoint and a remote Endpoint. This
operation is used by the active/client side Consumer of the
Connection establishment model. The remote Endpoint is identified by
Remote IA and Remote Connection Qualifier.
As part of the successful completion of this operation, the local
Endpoint is bound to a Port Qualifier of the local IA. The Port
Qualifier is passed to the remote side of the requested connection
and is available to the remote Consumer in the Connection Request of
the
DAT_CONNECTION_REQUEST_EVENT.
The Consumer-provided
private_data is passed to the remote side and
is provided to the remote Consumer in the Connection Request.
Consumers can encapsulate any local Endpoint attributes that remote
Consumers need to know as part of an upper-level protocol. Providers
can also provide a Provider on the remote side any local Endpoint
attributes and Transport-specific information needed for Connection
establishment by the Transport.
Upon successful completion of this operation, the local Endpoint is
transferred into
DAT_EP_STATE_ACTIVE_CONNECTION_PENDING.
Consumers can request a specific value of
qos. The Provider specifies
which quality of service it supports in documentation and in the
Provider attributes. If the local Provider or Transport does not
support the requested
qos, the operation fails and
DAT_MODEL_NOT_SUPPORTED is returned synchronously. If the remote
Provider does not support the requested
qos, the local Endpoint is
automatically transitioned into the
DAT_EP_STATE_DISCONNECTED state,
the connection is not established, and the event returned on the
connect_evd_handle is
DAT_CONNECTION_EVENT_NON_PEER_REJECTED. The
same
DAT_CONNECTION_EVENT_NON_PEER_REJECTED event is returned if the
connection cannot be established for all reasons of not establishing
the connection, except timeout, remote host not reachable, and remote
peer reject. For example, remote Consumer is not listening on the
requested Connection Qualifier, Backlog of the requested Service
Point is full, and Transport errors. In this case, the local Endpoint
is automatically transitioned into
DAT_EP_STATE_DISCONNECTED state.
The acceptance of the requested connection by the remote Consumer is
reported to the local Consumer through a
DAT_CONNECTION_EVENT_ESTABLISHED event on the
connect_evd_handle of
the local Endpoint and the local Endpoint is automatically
transitioned into a
DAT_EP_STATE_CONNECTED state.
The rejection of the connection by the remote Consumer is reported to
the local Consumer through a
DAT_CONNECTION_EVENT_PEER_REJECTED event
on the
connect_evd_handle of the local Endpoint and the local
Endpoint is automatically transitioned into a
DAT_EP_STATE_DISCONNECTED state.
When the Provider cannot reach the remote host or the remote host
does not respond within the Consumer requested Timeout, a
DAT_CONNECTION_EVENT_UNREACHABLE event is generated on the
connect_evd_handle of the Endpoint. The Endpoint transitions into a
DAT_EP_STATE_DISCONNECTED state.
If the Provider can locally determine that the
remote_ia_address is
invalid, or that the remote_ia_address cannot be converted to a
Transport-specific address, the operation can fail synchronously with
a
DAT_INVALID_ADDRESS return.
The local Endpoint is automatically transitioned into a
DAT_EP_STATE_CONNECTED state when a Connection Request accepted by
the remote Consumer and the Provider completes the Transport-specific
Connection establishment. The local Consumer is notified of the
established connection through a
DAT_CONNECTION_EVENT_ESTABLISHED event on the
connect_evd_handle of the local Endpoint.
When the
timeout expired prior to completion of the Connection
establishment, the local Endpoint is automatically transitioned into
a
DAT_EP_STATE_DISCONNECTED state and the local Consumer through a
DAT_CONNECTION_EVENT_TIMED_OUT event on the
connect_evd_handle of the
local Endpoint.
RETURN VALUES
DAT_SUCCESS The operation was successful.
DAT_INSUFFICIENT_RESOURCES The operation failed due to resource
limitations.
DAT_INVALID_PARAMETER Invalid parameter.
DAT_INVALID_ADDRESS Invalid address.
DAT_INVALID_HANDLE Invalid DAT handle; Invalid Endpoint
handle.
DAT_INVALID_STATE Parameter in an invalid state. Endpoint
was not in
DAT_EP_STATE_UNCONNECTED state.
DAT_MODEL_NOT_SUPPORTED The requested Model was not supported
by the Provider. For example, the
requested qos was not supported by the
local Provider.
USAGE
It is up to the Consumer to negotiate outstanding RDMA Read incoming
and outgoing with a remote peer. The outstanding RDMA Read outgoing
attribute should be smaller than the remote Endpoint outstanding RDMA
Read incoming attribute. If this is not the case, Connection
establishment might fail.
DAT API does not define a protocol on how remote peers exchange
Endpoint attributes. The exchange of outstanding RDMA Read incoming
and outgoing attributes of EPs is left to the Consumer ULP. The
Consumer can use Private Data for it.
If the Consumer does not care about posting RDMA Read operations or
remote RDMA Read operations on the connection, it can set the two
outstanding RDMA Read attribute values to 0.
If the Consumer does not set the two outstanding RDMA Read attributes
of the Endpoint, the Provider is free to pick up any value for
default. The Provider is allowed to change these default values
during connection setup.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+---------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+---------------------------+
|Interface Stability | Standard: uDAPL, 1.1, 1.2 |
+--------------------+---------------------------+
|MT-Level | Unsafe |
+--------------------+---------------------------+
SEE ALSO
libdat(3LIB),
attributes(7) July 16, 2004 DAT_EP_CONNECT(3DAT)