blob: 78adfe6be82c1b089b66f2091b4773e8153affc0 [file] [log] [blame]
/*
* Copyright (c) 2022 Meta
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "_common.h"
#ifdef CONFIG_POSIX_API
#include <netinet/in.h>
#else
#include <zephyr/posix/netinet/in.h>
#endif
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
/**
* @brief existence test for `<netinet/in.h>`
*
* @see <a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html">netinet/in.h</a>
*/
ZTEST(posix_headers, test_netinet_in_h)
{
zassert_equal(sizeof(in_port_t), sizeof(uint16_t));
zassert_equal(sizeof(in_addr_t), sizeof(uint32_t));
zassert_not_equal(-1, offsetof(struct in_addr, s_addr));
zassert_not_equal(-1, offsetof(struct sockaddr_in, sin_family));
zassert_not_equal(-1, offsetof(struct sockaddr_in, sin_port));
zassert_not_equal(-1, offsetof(struct sockaddr_in, sin_addr));
zassert_not_equal(-1, offsetof(struct in6_addr, s6_addr));
zassert_equal(sizeof(((struct in6_addr *)NULL)->s6_addr), 16 * sizeof(uint8_t));
zassert_not_equal(-1, offsetof(struct sockaddr_in6, sin6_family));
zassert_not_equal(-1, offsetof(struct sockaddr_in6, sin6_port));
/* not implemented */
/* zassert_not_equal(-1, offsetof(struct sockaddr_in6, sin6_flowinfo)); */
zassert_not_equal(-1, offsetof(struct sockaddr_in6, sin6_addr));
/* not implemented */
/* zassert_not_equal(-1, offsetof(struct sockaddr_in6, scope_id)); */
zassert_not_null(&in6addr_loopback);
struct in6_addr any6 = IN6ADDR_ANY_INIT;
struct in6_addr lo6 = IN6ADDR_LOOPBACK_INIT;
/* not implemented */
/* zassert_not_equal(-1, offsetof(struct ipv6_mreq, ipv6mr_multiaddr)); */
/* not implemented */
/* zassert_not_equal(-1, offsetof(struct ipv6_mreq, ipv6mr_interface)); */
zassert_not_equal(-1, IPPROTO_IP);
zassert_not_equal(-1, IPPROTO_IPV6);
zassert_not_equal(-1, IPPROTO_ICMP);
zassert_not_equal(-1, IPPROTO_RAW);
zassert_not_equal(-1, IPPROTO_TCP);
zassert_not_equal(-1, IPPROTO_UDP);
zassert_not_equal(-1, INADDR_ANY);
/* zassert_not_equal(-1, INADDR_BROADCAST); */ /* not implemented */
zassert_equal(INET_ADDRSTRLEN, 16);
zassert_equal(INET6_ADDRSTRLEN, 46);
/* zassert_not_equal(-1, IPV6_JOIN_GROUP); */ /* not implemented */
/* zassert_not_equal(-1, IPV6_LEAVE_GROUP); */ /* not implemented */
/* zassert_not_equal(-1, IPV6_MULTICAST_HOPS); */ /* not implemented */
/* zassert_not_equal(-1, IPV6_MULTICAST_IF); */ /* not implemented */
/* zassert_not_equal(-1, IPV6_MULTICAST_LOOP); */ /* not implemented */
/* zassert_not_equal(-1, IPV6_UNICAST_HOPS); */ /* not implemented */
zassert_not_equal(-1, IPV6_V6ONLY);
/* IN6_IS_ADDR_UNSPECIFIED(&any6); */ /* not implemented */
/* IN6_IS_ADDR_LOOPBACK(&lo6); */ /* not implemented */
/* IN6_IS_ADDR_MULTICAST(&lo6); */ /* not implemented */
/* IN6_IS_ADDR_LINKLOCAL(&lo6); */ /* not implemented */
/* IN6_IS_ADDR_SITELOCAL(&lo6); */ /* not implemented */
/* IN6_IS_ADDR_V4MAPPED(&lo6); */ /* not implemented */
/* IN6_IS_ADDR_V4COMPAT(&lo6); */ /* not implemented */
/* IN6_IS_ADDR_MC_NODELOCAL(&lo6); */ /* not implemented */
/* IN6_IS_ADDR_MC_LINKLOCAL(&lo6); */ /* not implemented */
/* IN6_IS_ADDR_MC_SITELOCAL(&lo6); */ /* not implemented */
/* IN6_IS_ADDR_MC_ORGLOCAL(&lo6); */ /* not implemented */
/* IN6_IS_ADDR_MC_GLOBAL(&lo6); */ /* not implemented */
}
#pragma GCC diagnostic pop