1 /* Test of <sys/socket.h> substitute. 2 Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc. 3 4 This program is free software: you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 3 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 16 17 /* Written by Bruno Haible <bruno@clisp.org>, 2007. */ 18 19 #include <config.h> 20 21 #include <sys/socket.h> 22 23 #include <errno.h> 24 25 #if HAVE_SHUTDOWN 26 /* Check some integer constant expressions. */ 27 int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR }; 28 #endif 29 30 /* Check that the 'socklen_t' type is defined. */ 31 socklen_t t1; 32 33 /* Check that the 'size_t' and 'ssize_t' types are defined. */ 34 size_t t2; 35 ssize_t t3; 36 37 /* Check that 'struct iovec' is defined. */ 38 struct iovec io; 39 40 /* Check that a minimal set of 'struct msghdr' is defined. */ 41 struct msghdr msg; 42 43 int 44 main (void) /* */ 45 { 46 struct sockaddr_storage x; 47 sa_family_t i; 48 49 /* Check some errno values. */ 50 switch (ENOTSOCK) 51 { 52 case ENOTSOCK: 53 case EADDRINUSE: 54 case ENETRESET: 55 case ECONNABORTED: 56 case ECONNRESET: 57 case ENOTCONN: 58 case ESHUTDOWN: 59 break; 60 } 61 62 x.ss_family = 42; 63 i = 42; 64 msg.msg_iov = &io; 65 66 return (x.ss_family - i + msg.msg_namelen + msg.msg_iov->iov_len 67 + msg.msg_iovlen); 68 }