#ifndef ISO
type in_port_t
type in_addr_t

type sa_family_t

type {struct in_addr}

element {struct in_addr} in_addr_t s_addr

type {struct sockaddr_in}

element {struct sockaddr_in} sa_family_t sin_family
element {struct sockaddr_in} in_port_t sin_port
element {struct sockaddr_in} {struct in_addr} sin_addr
element {struct sockaddr_in} {unsigned char} sin_zero [8]

type {struct in6_addr}

element {struct in6_addr} uint8_t s6_addr [16]

type {struct sockaddr_in6}

element {struct sockaddr_in6} sa_family_t sin6_family
element {struct sockaddr_in6} in_port_t sin6_port
element {struct sockaddr_in6} uint32_t sin6_flowinfo
element {struct sockaddr_in6} {struct in6_addr} sin6_addr
element {struct sockaddr_in6} uint32_t sin6_scope_id

variable {const struct in6_addr} in6addr_any

// constant IN6ADDR_ANY_INIT
macro IN6ADDR_ANY_INIT

variable {const struct in6_addr} in6addr_loopback

// constant IN6ADDR_LOOPBACK_INIT
macro IN6ADDR_LOOPBACK_INIT

type {struct ipv6_mreq}

element {struct ipv6_mreq} {struct in6_addr} ipv6mr_multiaddr
element {struct ipv6_mreq} {unsigned int} ipv6mr_interface

macro IPPROTO_IP
macro IPPROTO_IPV6
macro IPPROTO_ICMP
macro IPPROTO_TCP
macro IPPROTO_UDP

macro INADDR_ANY
macro INADDR_BROADCAST

constant INET_ADDRSTRLEN 16

function uint32_t htonl (uint32_t)
function uint16_t htons (uint16_t)
function uint32_t ntohl (uint32_t)
function uint16_t ntohs (uint16_t)

allow-header inttypes.h
allow-header sys/socket.h

constant INET6_ADDRSTRLEN 46

macro IPV6_JOIN_GROUP
macro IPV6_LEAVE_GROUP
macro IPV6_MULTICAST_HOPS
macro IPV6_MULTICAST_IF
macro IPV6_MULTICAST_LOOP
macro IPV6_UNICAST_HOPS

macro IN6_IS_ADDR_UNSPECIFIED
macro IN6_IS_ADDR_LOOPBACK
macro IN6_IS_ADDR_MULTICAST
macro IN6_IS_ADDR_LINKLOCAL
macro IN6_IS_ADDR_SITELOCAL
macro IN6_IS_ADDR_V4MAPPED
macro IN6_IS_ADDR_V4COMPAT
macro IN6_IS_ADDR_MC_NODELOCAL
macro IN6_IS_ADDR_MC_LINKLOCAL
macro IN6_IS_ADDR_MC_SITELOCAL
macro IN6_IS_ADDR_MC_ORGLOCAL
macro IN6_IS_ADDR_MC_GLOBAL

allow IMPLINK_*
allow IN_*
allow IN6_*
allow INADDR_*
allow IP_*
allow IPV6_*
allow IPPORT_*
allow IPPROTO_*
allow SOCK_*
#endif
