16#ifndef ZEPHYR_INCLUDE_POSIX_NETINET_IN_H_
17#define ZEPHYR_INCLUDE_POSIX_NETINET_IN_H_
21#include <zephyr/net/net_ip.h>
22#include <zephyr/net/socket.h>
28#if !defined(_SA_FAMILY_T_DECLARED) && !defined(__sa_family_t_defined)
29typedef net_sa_family_t sa_family_t;
30#define _SA_FAMILY_T_DECLARED
31#define __sa_family_t_defined
34#if !(defined(_IN_PORT_T_DECLARED) || defined(__in_port_t_defined)) || defined(__DOXYGEN__)
37#define _IN_PORT_T_DECLARED
38#define __in_port_t_defined
41#if !(defined(_IN_ADDR_T_DECLARED) || defined(__in_addr_t_defined)) || defined(__DOXYGEN__)
44#define _IN_ADDR_T_DECLARED
45#define __in_addr_t_defined
48#if !(defined(_IN_ADDR_DECLARED) || defined(__in_addr_defined)) || defined(__DOXYGEN__)
53#define _IN_ADDR_DECLARED
54#define __in_addr_defined
57#if !(defined(_SOCKADDR_IN_DECLARED) || defined(__sockaddr_in_defined)) || defined(__DOXYGEN__)
64#define _SOCKADDR_IN_DECLARED
65#define __sockaddr_in_defined
68#if !(defined(_IN6_ADDR_DECLARED) || defined(__in6_addr_defined)) || defined(__DOXYGEN__)
77#define _IN6_ADDR_DECLARED
78#define __in6_addr_defined
81#if !(defined(_SOCKADDR_IN6_DECLARED) || defined(__sockaddr_in6_defined)) || defined(__DOXYGEN__)
91#define _SOCKADDR_IN6_DECLARED
92#define __sockaddr_in6_defined
101#define IN6ADDR_ANY_INIT { { { 0 } } }
103#define IN6ADDR_LOOPBACK_INIT { { { 0, 0, 0, 0, 0, 0, 0, 0, \
104 0, 0, 0, 0, 0, 0, 0, 1 } } }
106#if !(defined(_IPV6_MREQ_DECLARED) || defined(__ipv6_mreq_defined)) || defined(__DOXYGEN__)
112#define _IPV6_MREQ_DECLARED
113#define __ipv6_mreq_defined
117#define IPPROTO_IP NET_IPPROTO_IP
118#define IPPROTO_IPV6 NET_IPPROTO_IPV6
119#define IPPROTO_ICMP NET_IPPROTO_ICMP
120#define IPPROTO_RAW NET_IPPROTO_RAW
121#define IPPROTO_TCP NET_IPPROTO_TCP
122#define IPPROTO_UDP NET_IPPROTO_UDP
125#define INADDR_ANY ((in_addr_t)NET_INADDR_ANY)
127#define INADDR_BROADCAST ((in_addr_t)NET_INADDR_BROADCAST)
129#define INADDR_LOOPBACK ((in_addr_t)0x7f000001)
132#define INET_ADDRSTRLEN NET_INET_ADDRSTRLEN
135#define htonl(x) net_htonl(x)
137#define htons(x) net_htons(x)
139#define ntohl(x) net_ntohl(x)
141#define ntohs(x) net_ntohs(x)
144#define INET6_ADDRSTRLEN NET_INET6_ADDRSTRLEN
148#define IPV6_JOIN_GROUP ZSOCK_IPV6_JOIN_GROUP
150#define IPV6_LEAVE_GROUP ZSOCK_IPV6_LEAVE_GROUP
152#define IPV6_MULTICAST_HOPS ZSOCK_IPV6_MULTICAST_HOPS
154#define IPV6_MULTICAST_IF ZSOCK_IPV6_MULTICAST_IF
156#define IPV6_MULTICAST_LOOP ZSOCK_IPV6_MULTICAST_LOOP
158#define IPV6_UNICAST_HOPS ZSOCK_IPV6_UNICAST_HOPS
160#define IPV6_V6ONLY ZSOCK_IPV6_V6ONLY
164#define IN6_IS_ADDR_UNSPECIFIED(addr) \
165 ZSOCK_IN6_IS_ADDR_UNSPECIFIED((const struct net_in6_addr *)(addr))
167#define IN6_IS_ADDR_LOOPBACK(addr) ZSOCK_IN6_IS_ADDR_LOOPBACK((const struct net_in6_addr *)(addr))
169#define IN6_IS_ADDR_MULTICAST(addr) ZSOCK_IN6_IS_ADDR_MULTICAST((const struct net_in6_addr *)(addr))
171#define IN6_IS_ADDR_LINKLOCAL(addr) ZSOCK_IN6_IS_ADDR_LINKLOCAL((const struct net_in6_addr *)(addr))
173#define IN6_IS_ADDR_SITELOCAL(addr) ZSOCK_IN6_IS_ADDR_SITELOCAL((const struct net_in6_addr *)(addr))
175#define IN6_IS_ADDR_V4MAPPED(addr) ZSOCK_IN6_IS_ADDR_V4MAPPED((const struct net_in6_addr *)(addr))
177static inline int __z_posix_in6_is_addr_v4compat(
const void *addr)
179 const uint8_t *p = (
const uint8_t *)addr;
181 for (
int i = 0; i < 12; i++) {
187 return p[12] != 0 || p[13] != 0 || p[14] != 0 || p[15] > 1;
191#define IN6_IS_ADDR_V4COMPAT(addr) __z_posix_in6_is_addr_v4compat(addr)
193#define IN6_IS_ADDR_MC_NODELOCAL(addr) \
194 ZSOCK_IN6_IS_ADDR_MC_NODELOCAL((const struct net_in6_addr *)(addr))
196#define IN6_IS_ADDR_MC_LINKLOCAL(addr) \
197 ZSOCK_IN6_IS_ADDR_MC_LINKLOCAL((const struct net_in6_addr *)(addr))
199#define IN6_IS_ADDR_MC_SITELOCAL(addr) \
200 ZSOCK_IN6_IS_ADDR_MC_SITELOCAL((const struct net_in6_addr *)(addr))
202#define IN6_IS_ADDR_MC_ORGLOCAL(addr) \
203 ZSOCK_IN6_IS_ADDR_MC_ORGLOCAL((const struct net_in6_addr *)(addr))
205#define IN6_IS_ADDR_MC_GLOBAL(addr) ZSOCK_IN6_IS_ADDR_MC_GLOBAL((const struct net_in6_addr *)(addr))
const struct in6_addr in6addr_loopback
IPv6 loopback address.
uint16_t in_port_t
Unsigned 16-bit Internet port number.
uint32_t in_addr_t
Unsigned 32-bit IPv4 address.
const struct in6_addr in6addr_any
IPv6 wildcard address.
IPv6 address, laid out and aligned like struct net_in6_addr.
uint8_t s6_addr[16]
IPv6 address bytes in network byte order.
uint32_t s6_addr32[4]
IPv6 address as 32-bit words in network byte order.
uint16_t s6_addr16[8]
IPv6 address as 16-bit words in network byte order.
in_addr_t s_addr
IPv4 address in network byte order.
IPv6 multicast group request.
struct in6_addr ipv6mr_multiaddr
Multicast address.
unsigned int ipv6mr_interface
Interface index.
in_port_t sin6_port
Port number in network byte order.
struct in6_addr sin6_addr
IPv6 address.
uint32_t sin6_flowinfo
IPv6 flow information.
uint32_t sin6_scope_id
Scope identifier.
sa_family_t sin6_family
Address family; AF_INET6.
struct in_addr sin_addr
IPv4 address.
sa_family_t sin_family
Address family; AF_INET.
in_port_t sin_port
Port number in network byte order.