#if !defined ISO && !defined POSIX
// in_port_t should have exactly 16 bits
type in_port_t
// in_addr_t should have exactly 32 bits
type in_addr_t

type uint32_t
type uint16_t

macro INET_ADDRSTRLEN
macro INET6_ADDRSTRLEN

// The following can be declared as functions, defined as macros or both:
function uint32_t htonl (uint32_t);
function uint16_t htons (uint16_t);
function uint32_t ntohl (uint32_t);
function uint16_t htons (uint16_t);

function in_addr_t inet_addr (const char*);
function in_addr_t inet_lnaof (struct in_addr);
function {struct in_addr} inet_makeaddr (in_addr_t, in_addr_t);
function in_addr_t inet_netof (struct in_addr);
function in_addr_t inet_network (const char *);
function {char*} inet_ntoa (struct in_addr);
function {const char*} inet_ntop (int, const void*, char*, socklen_t);
function int inet_pton (int, const char*, void*);

allow-header netinet/in.h
allow-header inttypes.h

#endif
