From 55e24f6e773b7c824eb06276faf1386b20bf7440 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Wed, 23 Jul 2003 22:00:08 +0000 Subject: [PATCH] Document an additional error return value. The connect(2) call can also return EACCES on non-Unix domain sockets as demonstrated by the following program: #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { struct sockaddr_in rem_addr; int sock; if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(1); } bzero((char *)&rem_addr, sizeof(rem_addr)); rem_addr.sin_family = AF_INET; rem_addr.sin_addr.s_addr = INADDR_NONE; rem_addr.sin_port = htons(10000); if (connect(sock, (struct sockaddr *)&rem_addr, sizeof(rem_addr)) < 0) { perror("connect"); exit(1); } } The call chain returning this value is probably: kern/uipc_syscalls.c:connect kern/uipc_socket.c:soconnect netinet/tcp_usrreq.c:tcp_usr_connect netinet/tcp_output.c:tcp_output netinet/ip_output.c:ip_output Reviewed by: schweikh (mentor) MFC after: 2 weeks --- lib/libc/sys/connect.2 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/libc/sys/connect.2 b/lib/libc/sys/connect.2 index cfc6460d768..18a656b277a 100644 --- a/lib/libc/sys/connect.2 +++ b/lib/libc/sys/connect.2 @@ -121,6 +121,12 @@ for completion by selecting the socket for writing. The socket is non-blocking and a previous connection attempt has not yet been completed. +.It Bq Er EACCES +An attempt is made to connect to a broadcast address (obtained through the +.Dv INADDR_BROADCAST +constant or the +.Dv INADDR_NONE +return value) through a socket that does not provide broadcast functionality. .El .Pp The following errors are specific to connecting names in the UNIX domain.