]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man2/connect.2
user_namespaces.7: Minor wording fix to recently added text
[thirdparty/man-pages.git] / man2 / connect.2
index 1d244f59581bca2437246b288821f9745f5f9c0c..679b0fec5035773f11b1f529c03205a09d2f087a 100644 (file)
@@ -1,9 +1,8 @@
-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
 .\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu)
 .\" Portions extracted from /usr/include/sys/socket.h, which does not have
 .\" any authorship information in it.  It is probably available under the GPL.
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -23,6 +22,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\"
 .\" Other portions are from the 6.9 (Berkeley) 3/10/91 man page:
@@ -30,6 +30,7 @@
 .\" Copyright (c) 1983 The Regents of the University of California.
 .\" All rights reserved.
 .\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
 .\" are met:
 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
+.\" %%%LICENSE_END
 .\"
 .\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
 .\" Modified 1998, 1999 by Andi Kleen
 .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
-.TH CONNECT 2 2004-06-23 "Linux" "Linux Programmer's Manual"
+.TH CONNECT 2 2019-03-06 "Linux" "Linux Programmer's Manual"
 .SH NAME
 connect \- initiate a connection on a socket
 .SH SYNOPSIS
@@ -70,8 +72,8 @@ connect \- initiate a connection on a socket
 .BR "#include <sys/types.h>" "          /* See NOTES */"
 .br
 .B #include <sys/socket.h>
-.sp
-.BI "int connect(int " sockfd ", const struct sockaddr *" serv_addr ,
+.PP
+.BI "int connect(int " sockfd ", const struct sockaddr *" addr ,
 .BI "            socklen_t " addrlen );
 .fi
 .SH DESCRIPTION
@@ -80,25 +82,25 @@ The
 system call connects the socket referred to by the file descriptor
 .I sockfd
 to the address specified by
-.IR serv_addr .
+.IR addr .
 The
-.IR addrlen
+.I addrlen
 argument specifies the size of
-.IR serv_addr .
+.IR addr .
 The format of the address in
-.I serv_addr
+.I addr
 is determined by the address space of the socket
 .IR sockfd ;
 see
 .BR socket (2)
 for further details.
-
+.PP
 If the socket
 .I sockfd
 is of type
-.B SOCK_DGRAM
+.BR SOCK_DGRAM ,
 then
-.I serv_addr
+.I addr
 is the address to which datagrams are sent by default, and the only
 address from which datagrams are received.
 If the socket is of type
@@ -107,7 +109,7 @@ or
 .BR SOCK_SEQPACKET ,
 this call attempts to make a connection to the socket that is bound
 to the address specified by
-.IR serv_addr .
+.IR addr .
 .PP
 Generally, connection-based protocol sockets may successfully
 .BR connect ()
@@ -120,8 +122,9 @@ dissolve the association by connecting to an address with the
 member of
 .I sockaddr
 set to
-.BR AF_UNSPEC .
-.SH "RETURN VALUE"
+.BR AF_UNSPEC
+(supported on Linux since kernel 2.2).
+.SH RETURN VALUE
 If the connection or binding succeeds, zero is returned.
 On error, \-1 is returned, and
 .I errno
@@ -131,14 +134,14 @@ The following are general socket errors only.
 There may be other domain-specific error codes.
 .TP
 .B EACCES
-For Unix domain sockets, which are identified by pathname:
+For UNIX domain sockets, which are identified by pathname:
 Write permission is denied on the socket file,
 or search permission is denied for one of the directories
 in the path prefix.
 (See also
 .BR path_resolution (7).)
 .TP
-.B EACCES, EPERM
+.BR 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.
@@ -146,37 +149,50 @@ firewall rule.
 .B EADDRINUSE
 Local address is already in use.
 .TP
+.B EADDRNOTAVAIL
+(Internet domain sockets)
+The socket referred to by
+.I sockfd
+had not previously been bound to an address and,
+upon attempting to bind it to an ephemeral port,
+it was determined that all port numbers in the ephemeral port range
+are currently in use.
+See the discussion of
+.I /proc/sys/net/ipv4/ip_local_port_range
+in
+.BR ip (7).
+.TP
 .B EAFNOSUPPORT
 The passed address didn't have the correct address family in its
 .I sa_family
 field.
 .TP
 .B EAGAIN
-No more free local ports or insufficient entries in the routing cache.
-For
-.B PF_INET
-see the
-.I net.ipv4.ip_local_port_range
-sysctl in
-.BR ip (7)
-on how to increase the number of local ports.
+For nonblocking UNIX domain sockets, the socket is nonblocking, and the
+connection cannot be completed immediately.
+For other socket families, there are insufficient entries in the routing cache.
 .TP
 .B EALREADY
-The socket is non-blocking and a previous connection attempt has not yet
+The socket is nonblocking and a previous connection attempt has not yet
 been completed.
 .TP
 .B EBADF
-The file descriptor is not a valid index in the descriptor table.
+.I sockfd
+is not a valid open file descriptor.
 .TP
 .B ECONNREFUSED
-No one listening on the remote address.
+A
+.BR connect ()
+on a stream socket found no one listening on the remote address.
 .TP
 .B EFAULT
 The socket structure address is outside the user's address space.
 .TP
 .B EINPROGRESS
-The socket is non-blocking and the connection cannot be completed
-immediately.
+The socket is nonblocking and the connection cannot be completed immediately.
+(UNIX domain sockets failed with
+.BR EAGAIN
+instead.)
 It is possible to
 .BR select (2)
 or
@@ -200,7 +216,8 @@ is one of the usual error codes listed here,
 explaining the reason for the failure).
 .TP
 .B EINTR
-The system call was interrupted by a signal that was caught.
+The system call was interrupted by a signal that was caught; see
+.BR signal (7).
 .\" For TCP, the connection will complete asynchronously.
 .\" See http://lkml.org/lkml/2005/7/12/254
 .TP
@@ -211,7 +228,14 @@ The socket is already connected.
 Network is unreachable.
 .TP
 .B ENOTSOCK
-The file descriptor is not associated with a socket.
+The file descriptor
+.I sockfd
+does not refer to a socket.
+.TP
+.B EPROTOTYPE
+The socket type does not support the requested communications protocol.
+This error can occur, for example,
+on an attempt to connect a UNIX domain datagram socket to a stream socket.
 .TP
 .B ETIMEDOUT
 Timeout while attempting connection.
@@ -219,10 +243,10 @@ 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.
-.SH "CONFORMING TO"
-SVr4, 4.4BSD, (the
-.BR connect ()
-function first appeared in 4.2BSD), POSIX.1-2001.
+.SH CONFORMING TO
+POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD,
+.RB (connect ()
+first appeared in 4.2BSD).
 .\" SVr4 documents the additional
 .\" general error codes
 .\" .BR EADDRNOTAVAIL ,
@@ -236,34 +260,28 @@ function first appeared in 4.2BSD), POSIX.1-2001.
 .\" It also
 .\" documents many additional error conditions not described here.
 .SH NOTES
-POSIX.1-2001 does not require the inclusion of
+POSIX.1 does not require the inclusion of
 .IR <sys/types.h> ,
 and this header file is not required on Linux.
 However, some historical (BSD) implementations required this header
 file, and portable applications are probably wise to include it.
-
-The third argument of
-.BR connect ()
-is in reality an
-.I int
-(and this is what 4.x BSD and libc4 and libc5 have).
-Some POSIX confusion resulted in the present
-.IR socklen_t ,
-also used by glibc.
-See also
+.PP
+For background on the
+.I socklen_t
+type, see
 .BR accept (2).
-.SH BUGS
-Unconnecting a socket by calling
+.PP
+If
 .BR connect ()
-with a
-.B AF_UNSPEC
-address is not yet implemented.
+fails, consider the state of the socket as unspecified.
+Portable applications should close the socket and create a new one for
+reconnecting.
 .SH EXAMPLE
 An example of the use of
 .BR connect ()
 is shown in
 .BR getaddrinfo (3).
-.SH "SEE ALSO"
+.SH SEE ALSO
 .BR accept (2),
 .BR bind (2),
 .BR getsockname (2),