blob: 81ab9f95fd6f1ffa7754d85a8a271138083f80d2 [file] [log] [blame]
/*
* Copyright (c) 2022 Meta
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "_common.h"
#ifdef CONFIG_POSIX_API
#include <sys/socket.h>
#else
#include <zephyr/posix/sys/socket.h>
#endif
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-value"
/**
* @brief existence test for `<sys/socket.h>`
*
* @see <a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html">sys/socket.h</a>
*/
ZTEST(posix_headers, test_sys_socket_h)
{
struct cmsghdr cmsg = {0};
struct msghdr mhdr = {0};
zassert_true(sizeof(socklen_t) >= sizeof(uint32_t));
zassert_true((sa_family_t)-1 >= 0);
zassert_not_equal(-1, offsetof(struct sockaddr, sa_family));
/*
* FIXME: in zephyr, we define struct sockaddr in <zephyr/net/net_ip.h>
* The sa_data field is defined (incorrectly) as data.
* Fixing that is a (possibly breaking) tree-wide change.
*/
/* zassert_not_equal(-1, offsetof(struct sockaddr, sa_data)); */ /* not implemented */
zassert_not_equal(-1, offsetof(struct sockaddr_storage, ss_family));
zassert_equal(offsetof(struct sockaddr, sa_family),
offsetof(struct sockaddr_storage, ss_family));
zassert_not_equal(-1, offsetof(struct msghdr, msg_name));
zassert_not_equal(-1, offsetof(struct msghdr, msg_namelen));
zassert_not_equal(-1, offsetof(struct msghdr, msg_iov));
zassert_not_equal(-1, offsetof(struct msghdr, msg_iovlen));
zassert_not_equal(-1, offsetof(struct msghdr, msg_control));
zassert_not_equal(-1, offsetof(struct msghdr, msg_controllen));
zassert_not_equal(-1, offsetof(struct msghdr, msg_flags));
zassert_not_equal(-1, offsetof(struct cmsghdr, cmsg_len));
zassert_not_equal(-1, offsetof(struct cmsghdr, cmsg_level));
zassert_not_equal(-1, offsetof(struct cmsghdr, cmsg_type));
CMSG_DATA(&cmsg);
CMSG_NXTHDR(&mhdr, &cmsg);
CMSG_FIRSTHDR(&mhdr);
zassert_not_equal(-1, offsetof(struct linger, l_onoff));
zassert_not_equal(-1, offsetof(struct linger, l_linger));
zassert_not_equal(-1, SOCK_DGRAM);
zassert_not_equal(-1, SOCK_RAW);
/* zassert_not_equal(-1, SOCK_SEQPACKET); */ /* not implemented */
zassert_not_equal(-1, SOCK_STREAM);
zassert_not_equal(-1, SO_ACCEPTCONN);
zassert_not_equal(-1, SO_BROADCAST);
zassert_not_equal(-1, SO_DEBUG);
zassert_not_equal(-1, SO_DONTROUTE);
zassert_not_equal(-1, SO_ERROR);
zassert_not_equal(-1, SO_KEEPALIVE);
zassert_not_equal(-1, SO_LINGER);
zassert_not_equal(-1, SO_OOBINLINE);
zassert_not_equal(-1, SO_RCVBUF);
zassert_not_equal(-1, SO_RCVLOWAT);
zassert_not_equal(-1, SO_RCVTIMEO);
zassert_not_equal(-1, SO_REUSEADDR);
zassert_not_equal(-1, SO_SNDBUF);
zassert_not_equal(-1, SO_SNDLOWAT);
zassert_not_equal(-1, SO_SNDTIMEO);
zassert_not_equal(-1, SO_TYPE);
zassert_not_equal(-1, SOMAXCONN);
/* zassert_not_equal(-1, MSG_CTRUNC); */ /* not implemented */
/* zassert_not_equal(-1, MSG_DONTROUTE); */ /* not implemented */
/* zassert_not_equal(-1, MSG_EOR); */ /* not implemented */
/* zassert_not_equal(-1, MSG_OOB); */ /* not implemented */
/* zassert_not_equal(-1, MSG_NOSIGNAL); */ /* not implemented */
zassert_not_equal(-1, MSG_PEEK);
zassert_not_equal(-1, MSG_TRUNC);
zassert_not_equal(-1, MSG_WAITALL);
zassert_not_equal(-1, AF_INET);
zassert_not_equal(-1, AF_INET6);
zassert_not_equal(-1, AF_UNIX);
zassert_not_equal(-1, AF_UNSPEC);
zassert_not_equal(-1, SHUT_RD);
zassert_not_equal(-1, SHUT_RDWR);
zassert_not_equal(-1, SHUT_WR);
if (IS_ENABLED(CONFIG_POSIX_API)) {
zassert_not_null(accept);
zassert_not_null(bind);
zassert_not_null(connect);
zassert_not_null(getpeername);
zassert_not_null(getsockname);
zassert_not_null(listen);
zassert_not_null(recv);
zassert_not_null(recvfrom);
/* zassert_not_null(recvmsg); */ /* not implemented */
zassert_not_null(send);
zassert_not_null(sendmsg);
zassert_not_null(sendto);
zassert_not_null(setsockopt);
zassert_not_null(shutdown);
/* zassert_not_null(sockatmark); */ /* not implemented */
zassert_not_null(socket);
zassert_not_null(socketpair);
}
}
#pragma GCC diagnostic pop