| .\" (C) Copyright Frank Filz IBM Corp. 2005. |
| .\" |
| .\" Permission is granted to distribute possibly modified copies |
| .\" of this manual provided the header is included verbatim, |
| .\" and in case of nontrivial modification author and date |
| .\" of the modification is added to the header. |
| .\" |
| .TH SCTP_CONNECTX 3 2005-10-25 "Linux 2.6" "Linux Programmer's Manual" |
| .SH NAME |
| sctp_connectx \- initiate a connection on an SCTP socket using multiple |
| destination addresses. |
| .SH SYNOPSIS |
| .nf |
| .B #include <sys/types.h> |
| .B #include <sys/socket.h> |
| .B #include <netinet/sctp.h> |
| .sp |
| .BI "int sctp_connectx(int " sd ", struct sockaddr * " addrs ", int " addrcnt, |
| .BI " sctp_assoc_t * "id ); |
| .fi |
| .SH DESCRIPTION |
| .BR sctp_connectx |
| initiates a connection to a set of addresses passed in the array |
| .I addrs |
| to/from the socket |
| .I sd. |
| .I addrcnt |
| is the number of addresses in the array. |
| .PP |
| If |
| .I sd |
| is an IPv4 socket, the addresses passed must be IPv4 addresses. If |
| .I sd |
| is an IPv6 socket, the addresses passed can be either IPv4 or IPv6 |
| addresses. |
| .PP |
| .I addrs |
| is a pointer to an array of one or more socket addresses. Each address is |
| contained in its appropriate structure(i.e. struct sockaddr_in or struct |
| sockaddr_in6). The family of the address type must be used to distinguish |
| the address length. The caller specifies the number of addresses in the |
| array with |
| .I addrcnt. |
| .PP |
| .I id |
| is a pointer to the association id and, if provided, will be set to the |
| identifier of the newly created association. |
| .SH "RETURN VALUE" |
| On success, 0 is returned. On failure, \-1 is returned, and |
| .I errno |
| is set appropriately. |
| .SH ERRORS |
| .TP |
| .B EBADF |
| .I sd |
| is not a valid descriptor. |
| .TP |
| .B ENOTSOCK |
| .I sd |
| is a descriptor for a file, not a socket. |
| .TP |
| .B EFAULT |
| Error while copying in or out from the user address space. |
| .TP |
| .B EINVAL |
| Invalid port or address. |
| .TP |
| .B EACCES |
| The address is protected, and the user is not the super-user. |
| .TP |
| .B EISCONN |
| The socket is already connected. |
| .TP |
| .B ECONNREFUSED |
| No one listening on the remote address. |
| .TP |
| .B ETIMEDOUT |
| Timeout while attempting connection. The server may be too |
| busy to accept new connections. Note that for IP sockets the timeout may |
| be very long when syncookies are enabled on the server. |
| .TP |
| .B ENETUNREACH |
| Network is unreachable. |
| .TP |
| .B EADDRINUSE |
| Local address is already in use. |
| .TP |
| .B EINPROGRESS |
| The socket is non-blocking and the connection cannot be completed |
| immediately. It is possible to |
| .BR select (2) |
| or |
| .BR poll (2) |
| for completion by selecting the socket for writing. After |
| .B select |
| indicates writability, use |
| .BR getsockopt (2) |
| to read the |
| .B SO_ERROR |
| option at level |
| .B SOL_SOCKET |
| to determine whether |
| .B connect |
| completed successfully |
| .RB ( SO_ERROR |
| is zero) or unsuccessfully |
| .RB ( SO_ERROR |
| is one of the usual error codes listed here, |
| explaining the reason for the failure). |
| .TP |
| .B EALREADY |
| The socket is non-blocking and a previous connection attempt has not yet |
| been completed. |
| .TP |
| .B EAGAIN |
| No more free local ports or insufficient entries in the routing cache. For |
| .B PF_INET |
| see the |
| .B net.ipv4.ip_local_port_range |
| sysctl in |
| .BR ip (7) |
| on how to increase the number of local ports. |
| .TP |
| .B EAFNOSUPPORT |
| The passed address didn't have the correct address family in its |
| .I sa_family |
| field. |
| .TP |
| .B EACCES, EPERM |
| The user tried to connect to a broadcast address without having the socket |
| broadcast flag enabled or the connection request failed because of a local |
| firewall rule. |
| .SH "SEE ALSO" |
| .BR sctp (7) |
| .BR sctp_bindx (3), |
| .BR sctp_sendmsg (3), |
| .BR sctp_sendv (3), |
| .BR sctp_send (3), |
| .BR sctp_recvmsg (3), |
| .BR sctp_recvv (3), |
| .BR sctp_peeloff (3), |
| .BR sctp_getpaddrs (3), |
| .BR sctp_getladdrs (3), |
| .BR sctp_opt_info (3), |