Main Page | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

vipconnectrequest.c File Reference

#include <stdlib.h>
#include <string.h>
#include "vipl_priv.h"

Go to the source code of this file.

Functions

VIP_ENTRY_POINT VIP_RETURN VipConnectRequest (VIP_VI_HANDLE ViHandle, VIP_NET_ADDRESS *LocalAddr, VIP_NET_ADDRESS *RemoteAddr, VIP_ULONG Timeout, VIP_VI_ATTRIBUTES *RemoteViAttribs)


Detailed Description

The VI-GM function VipConnectRequest implementation.

Definition in file vipconnectrequest.c.


Function Documentation

VIP_ENTRY_POINT VIP_RETURN VipConnectRequest VIP_VI_HANDLE  ViHandle,
VIP_NET_ADDRESS LocalAddr,
VIP_NET_ADDRESS RemoteAddr,
VIP_ULONG  Timeout,
VIP_VI_ATTRIBUTES RemoteViAttribs
 

VipConnectRequest() requests that a connection be established between the local VI endpoint and a remote endpoint. This function is called on the client side of the client/server connection model. The user specifies a local and remote network address for the connection. Only the remote network address is used by the server to match to a VipConnectWait().

When a connection is successfully established, the local address is bound to the local VI endpoint, and the attributes of the remote endpoint are returned to the caller. The attributes of the remote endpoint allow the caller to determine whether the indicated RDMA operations can be executed on the resulting connection.

If the remote end rejects the connection explicitly by calling VipConnectReject(), a rejection error is returned. If a connection cannot be established before the specified Timeout period, a timeout error is returned. Specifying a timeout value of zero is invalid and will result in an immediate VIP_INVALID_PARAMETER error. If a VipConnectAccept() or the VipConnectReject() response is not returned within the specified timeout period (including a non-functional server or interconnect), VIP_TIMEOUT is returned after the timeout period expires. If the server is responding but is not waiting for a connection that matches the discriminator specified in RemoteAddr, or is not in the right state to handle connection requests, a VIP_NO_MATCH error is returned.

For Reliable Delivery and Reliable Reception, the VI transitions to the Error State and any pending receive descriptors are marked as flushed. If the host portion of the LocalAddr parameter does not match the local NIC address (the LocalNicAddress field of the NicAttributes structure), then a VIP_INVALID_PARAMETER error is returned.

Return values:
VIP_SUCCESS The connection was successfully established.
VIP_TIMEOUT The connection operation timed out or the server is not functional.
VIP_ERROR_RESOURCE The connection operation failed due to insufficient resources.
VIP_INVALID_PARAMETER One of the parameters was invalid.
VIP_REJECT The connection was rejected by the remote end.
VIP_NO_MATCH The server is up and is not waiting for a connection request with the specified discriminator.
VIP_INVALID_STATE The specified VI endpoint is not in the Idle state.
Parameters:
ViHandle (IN) Handle for the local VI endpoint.
LocalAddr (IN) Local network address. The local address is used solely for naming purposes and is not used for matching by VipConnectWait. The host address portion of this network address must match the client NIC address. The discriminator portion is passed unchanged to the RemoteAddr structure returned from the matching VipConnectWait.
RemoteAddr (IN) The remote network address must contain both the host address and discriminator.
Timeout (IN) The count, in milliseconds, that VipConnectRequest() will wait for connection to complete before returning to the caller, VIP_INFINITE if no time-out is desired. A timeout value of zero is invalid.
RemoteViAttribs (OUT) The attributes of the remote endpoint if successful.
See also:
VipConnectWait VipConnectAccept VipConnectReject VipDisconnect VIP_CONN
Author:
Patrick Geoffray
Version:
1.0

Definition at line 87 of file vipconnectrequest.c.

References VIP_PACKET_CONN_LIST::clt_conn_ptr, VIP_PACKET_CONN_LIST::clt_seq_num, VIP_SEND_REQ::dest_gm_id, VIP_SEND_REQ::dest_port_id, VIP_NET_ADDRESS::DiscriminatorLen, VIP_VI_ATTRIBUTES::EnableRdmaRead, VIP_CONN::event, VIP_GM::gm_port, VIP_PACKET_CONN_LIST::gm_unique_id, VIP_CONN::handle, VIP_NET_ADDRESS::HostAddress, VIP_NET_ADDRESS::HostAddressLen, VIP_NIC::index, VIP_CONN::locale_disc_len, VIP_CONN::locale_net_addr, VIP_NIC::lock, VIP_GM::lock, VIP_GM::mac_address, VIP_VI_ATTRIBUTES::MaxTransferSize, VIP_PACKET_CONN_ACK::net_local_nic_index, VIP_PACKET_CONN_ACK::net_local_vi_index, VIP_SEND_REQ::ptr, VIP_VI_ATTRIBUTES::QoS, VIP_VI_ATTRIBUTES::ReliabilityLevel, VIP_CONN::remote_disc_len, VIP_CONN::remote_gm_id, VIP_CONN::remote_net_addr, VIP_CONN::remote_port_id, VIP_CONN::remote_vi_attribs, VIP_HANDLE::seq_num, VIP_PACKET_CONN_ACK::srv_conn_ptr, VIP_PACKET_CONN_ACK::srv_seq_num, VIP_PACKET_CONN_ACK::status, VIP_CONN::status, VIP_PACKET_CONN_ACK::type, VIP_SEND_REQ::type, VIP_PACKET_CONN_LIST::type, VIP_CONN::type, VI_GM_MAC_ADDRESS_LEN, VI_GM_MAX_DISCRIMINATOR_LEN, VI_GM_PORT_CONN_MANAGER, VIP_ABORT, vip_addr2addrbits(), vip_allocate_handle(), vip_allocate_packet(), VIP_ASSERT, VIP_CONN_ACK_PKT, VIP_CONN_LIST_REQ_PKT, VIP_NIC::vip_conn_set, VIP_CONN_TYPE_CLIENT, VIP_DEBUG, VIP_DEBUG_GM, VIP_DEBUG_LABEL, VIP_ENTER_IOCTL, VIP_ERROR_RESOURCE, VIP_EVENT_INIT, VIP_EXIT_IOCTL, VIP_FALSE, vip_free_handle(), vip_gm_host_name_lock, VIP_NIC::vip_gm_ptr, VIP_HTON_UCHAR, VIP_HTON_UINT16, VIP_HTON_UINT64, VIP_INVALID_PARAMETER, VIP_INVALID_STATE, VIP_INVALID_VI_HANDLE, vip_is_conn_notified(), VIP_MUTEX_LOCK, VIP_MUTEX_UNLOCK, VIP_SEND_REQ::vip_nic_ptr, VIP_NO_MATCH, VIP_NOT_DONE, VIP_PROGRESSION, VIP_REJECT, vip_send_data(), VIP_SEND_REQ_RELIABLE, VIP_STATE_CONNECT_PENDING, VIP_STATE_IDLE, VIP_SUCCESS, VIP_TIMEOUT, VIP_SEND_REQ::vip_vi_ptr, VIP_CONN::vip_vi_ptr, vip_wait_for_notification(), and VIP_CONN::waiting_list.

VI-GM-1.3 by Myricom © 1997-2006. Documentation generated on 20 May 2006 by doxygen 1.4.4.