Man Linux: Main Page and Category List

NAME

       sctp_connectx  - initiate a connection on an SCTP socket using multiple
       destination addresses.

SYNOPSIS

       #include <sys/types.h>
       #include <sys/socket.h>
       #include <netinet/sctp.h>

       int sctp_connectx(int sd, struct sockaddr * addrs, int addrcnt,
                         sctp_assoc_t  * id);

DESCRIPTION

       sctp_connectx initiates a connection to a set of  addresses  passed  in
       the  array  addrs  to/from  the  socket  sd.   addrcnt is the number of
       addresses in the array.

       If sd is an IPv4 socket, the addresses passed must be  IPv4  addresses.
       If  sd  is  an  IPv6 socket, the addresses passed can be either IPv4 or
       IPv6 addresses.

       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 addrcnt.

       id is a pointer to the association id and, if provided, will be set  to
       the identifier of the newly created association.

RETURN VALUE

       On success, 0 is returned. On failure, -1 is returned, and errno is set
       appropriately.

ERRORS

       EBADF  sd is not a valid descriptor.

       ENOTSOCK
              sd is a descriptor for a file, not a socket.

       EFAULT Error while copying in or out from the user address space.

       EINVAL Invalid port or address.

       EACCES The address is protected, and the user is not the super-user.

       EISCONN
              The socket is already connected.

       ECONNREFUSED
              No one listening on the remote address.

       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.

       ENETUNREACH
              Network is unreachable.

       EADDRINUSE
              Local address is already in use.

       EINPROGRESS
              The  socket  is  non-blocking  and  the  connection  cannot   be
              completed  immediately.   It is possible to select(2) or poll(2)
              for completion by selecting the socket for writing. After select
              indicates  writability,  use  getsockopt(2) to read the SO_ERROR
              option  at  level  SOL_SOCKET  to  determine   whether   connect
              completed  successfully  (SO_ERROR  is  zero)  or unsuccessfully
              (SO_ERROR  is  one  of  the  usual  error  codes  listed   here,
              explaining the reason for the failure).

       EALREADY
              The socket is non-blocking and a previous connection attempt has
              not yet been completed.

       EAGAIN No more free local ports or insufficient entries in the  routing
              cache.  For  PF_INET see the net.ipv4.ip_local_port_range sysctl
              in ip(7) on how to increase the number of local ports.

       EAFNOSUPPORT
              The passed address didn’t have the correct address family in its
              sa_family field.

       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.

SEE ALSO

       sctp(7)  sctp_bindx(3), sctp_sendmsg(3), sctp_send(3), sctp_recvmsg(3),
       sctp_peeloff(3),         sctp_getpaddrs(3),          sctp_getladdrs(3),
       sctp_opt_info(3),