mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-07 23:13:34 +00:00
62 lines
2.2 KiB
C
62 lines
2.2 KiB
C
#ifndef COSMOPOLITAN_LIBC_ISYSTEM_NETINET_IN_H_
|
|
#define COSMOPOLITAN_LIBC_ISYSTEM_NETINET_IN_H_
|
|
#include "libc/calls/weirdtypes.h"
|
|
#include "libc/sock/sock.h"
|
|
#include "libc/sock/struct/in6_pktinfo.h"
|
|
#include "libc/sock/struct/in_pktinfo.h"
|
|
#include "libc/sock/struct/ip_mreq.h"
|
|
#include "libc/sock/struct/sockaddr.h"
|
|
#include "libc/sock/struct/sockaddr6.h"
|
|
#include "libc/sysv/consts/in.h"
|
|
#include "libc/sysv/consts/inaddr.h"
|
|
#include "libc/sysv/consts/inet6.h"
|
|
#include "libc/sysv/consts/ip.h"
|
|
#include "libc/sysv/consts/ipport.h"
|
|
#include "libc/sysv/consts/ipproto.h"
|
|
#include "libc/sysv/consts/ipv6.h"
|
|
#include "libc/sysv/consts/mcast.h"
|
|
#include "libc/sysv/consts/pf.h"
|
|
#include "libc/sysv/consts/sock.h"
|
|
|
|
# define IN6_ARE_ADDR_EQUAL(a,b) \
|
|
((((const uint32_t *) (a))[0] == ((const uint32_t *) (b))[0]) \
|
|
&& (((const uint32_t *) (a))[1] == ((const uint32_t *) (b))[1]) \
|
|
&& (((const uint32_t *) (a))[2] == ((const uint32_t *) (b))[2]) \
|
|
&& (((const uint32_t *) (a))[3] == ((const uint32_t *) (b))[3]))
|
|
|
|
# define IN6_IS_ADDR_UNSPECIFIED(a) \
|
|
(((const uint32_t *) (a))[0] == 0 \
|
|
&& ((const uint32_t *) (a))[1] == 0 \
|
|
&& ((const uint32_t *) (a))[2] == 0 \
|
|
&& ((const uint32_t *) (a))[3] == 0)
|
|
|
|
# define IN6_IS_ADDR_LOOPBACK(a) \
|
|
(((const uint32_t *) (a))[0] == 0 \
|
|
&& ((const uint32_t *) (a))[1] == 0 \
|
|
&& ((const uint32_t *) (a))[2] == 0 \
|
|
&& ((const uint32_t *) (a))[3] == htonl (1))
|
|
|
|
# define IN6_IS_ADDR_LINKLOCAL(a) \
|
|
((((const uint32_t *) (a))[0] & htonl (0xffc00000)) \
|
|
== htonl (0xfe800000))
|
|
|
|
# define IN6_IS_ADDR_SITELOCAL(a) \
|
|
((((const uint32_t *) (a))[0] & htonl (0xffc00000)) \
|
|
== htonl (0xfec00000))
|
|
|
|
# define IN6_IS_ADDR_V4MAPPED(a) \
|
|
((((const uint32_t *) (a))[0] == 0) \
|
|
&& (((const uint32_t *) (a))[1] == 0) \
|
|
&& (((const uint32_t *) (a))[2] == htonl (0xffff)))
|
|
|
|
# define IN6_IS_ADDR_V4COMPAT(a) \
|
|
((((const uint32_t *) (a))[0] == 0) \
|
|
&& (((const uint32_t *) (a))[1] == 0) \
|
|
&& (((const uint32_t *) (a))[2] == 0) \
|
|
&& (ntohl (((const uint32_t *) (a))[3]) > 1))
|
|
|
|
#define IN6_IS_ADDR_MULTICAST(a) (((const uint8_t *) (a))[0] == 0xff)
|
|
|
|
|
|
|
|
#endif /* COSMOPOLITAN_LIBC_ISYSTEM_NETINET_IN_H_ */
|