DAT_EP_CONNECT(3DAT)DAT_EP_CONNECT(3DAT)NAMEdat_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, indef‐
inite 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 pro‐
vided to the remote Consumer as part of the Con‐
nection 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 Con‐
nection Qualifier.
As part of the successful completion of this operation, the local End‐
point 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 avail‐
able to the remote Consumer in the Connection Request of the DAT_CON‐
NECTION_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 sup‐
port 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_CONNEC‐
TION_EVENT_NON_PEER_REJECTED. The same DAT_CONNEC‐
TION_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 Trans‐
port errors. In this case, the local Endpoint is automatically transi‐
tioned 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_ESTAB‐
LISHED event on the connect_evd_handle of the local Endpoint and the
local Endpoint is automatically transitioned into a DAT_EP_STATE_CON‐
NECTED 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_CONNEC‐
TION_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 Trans‐
port-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 Con‐
nection establishment. The local Consumer is notified of the estab‐
lished 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 estab‐
lishment, 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 lim‐
itations.
DAT_INVALID_PARAMETER
Invalid parameter.
DAT_INVALID_ADDRESS
Invalid address.
DAT_INVALID_HANDLE
Invalid DAT handle; Invalid Endpoint han‐
dle.
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 establish‐
ment might fail.
DAT API does not define a protocol on how remote peers exchange End‐
point 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 out‐
standing 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 connec‐
tion setup.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
┌────────────────────┬───────────────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├────────────────────┼───────────────────────────┤
│Interface Stability │ Standard: uDAPL, 1.1, 1.2 │
├────────────────────┼───────────────────────────┤
│MT-Level │ Unsafe │
└────────────────────┴───────────────────────────┘
SEE ALSOlibdat(3LIB), attributes(5)
Jul 16, 2004 DAT_EP_CONNECT(3DAT)