28inline bool is_loopback_host_order(in_addr_t addr) {
29 return (addr & 0xFF000000) == 0x7F000000;
32inline bool is_link_local_host_order(in_addr_t addr) {
33 return (addr & 0xFFFF0000) == 0xA9FE0000;
36inline bool is_multicast_host_order(in_addr_t addr) {
37 return IN_MULTICAST(addr);
40inline bool is_private_host_order(in_addr_t addr) {
41 return (((addr & 0xFF000000) == 0x0A000000) ||
42 ((addr & 0xFFC00000) == 0x64400000) ||
43 ((addr & 0xFFF00000) == 0xAC100000) ||
44 ((addr & 0xFFFF0000) == 0xC0A80000)
52inline bool is_loopback_network_order(in6_addr
const& addr) {
53 return addr == in6addr_loopback;
56inline bool is_multicast_network_order(in6_addr
const& addr) {
57 return addr.s6_addr[0] == 0xFF;
60inline bool is_link_local_network_order(in6_addr
const& addr) {
61 return addr.s6_addr[0] == 0xFE && (addr.s6_addr[1] & 0xC0) == 0x80;
64inline bool is_private_network_order(in6_addr
const& addr) {
65 return (addr.s6_addr[0] & 0xFE) == 0xFC;
68#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
70inline bool is_loopback_network_order(in_addr_t addr) {
71 return (addr & 0xFF) == 0x7F;
74inline bool is_private_network_order(in_addr_t addr) {
75 return (((addr & 0xFF) == 0x0A) ||
76 ((addr & 0xC0FF) == 0x4064) ||
77 ((addr & 0xF0FF) == 0x10AC) ||
78 ((addr & 0xFFFF) == 0xA8C0)
82inline bool is_link_local_network_order(in_addr_t addr) {
83 return (addr & 0xFFFF) == 0xFEA9;
86inline bool is_multicast_network_order(in_addr_t addr) {
87 return (addr & 0xF0) == 0xE0;
92inline bool is_loopback_network_order(in_addr_t addr) {
93 return is_loopback_host_order(addr);
96inline bool is_link_local_network_order(inaddr_t addr) {
97 return is_link_local_host_order(addr);
100inline bool is_private_network_order(in_addr_t addr) {
101 return is_link_local_host_order(addr);
104inline bool is_multicast_network_order(in_addr_t addr) {
105 return is_multicast_host_order(addr);
114 return ( sa->sa_family == AF_INET && is_loopback_network_order(
reinterpret_cast<sockaddr_in
const *
>(sa)->sin_addr.s_addr)) ||
115 ( sa->sa_family == AF_INET6 && is_loopback_network_order(
reinterpret_cast<sockaddr_in6
const *
>(sa)->sin6_addr))
123 return ( sa->sa_family == AF_INET && is_multicast_network_order(
reinterpret_cast<sockaddr_in
const *
>(sa)->sin_addr.s_addr)) ||
124 ( sa->sa_family == AF_INET6 && is_multicast_network_order(
reinterpret_cast<sockaddr_in6
const *
>(sa)->sin6_addr))
132 return ( sa->sa_family == AF_INET && is_link_local_network_order(
reinterpret_cast<sockaddr_in
const *
>(sa)->sin_addr.s_addr)) ||
133 ( sa->sa_family == AF_INET6 && is_link_local_network_order(
reinterpret_cast<sockaddr_in6
const *
>(sa)->sin6_addr))
141 return ( sa->sa_family == AF_INET && is_private_network_order(
reinterpret_cast<sockaddr_in
const *
>(sa)->sin_addr.s_addr)) ||
142 ( sa->sa_family == AF_INET6 && is_private_network_order(
reinterpret_cast<sockaddr_in6
const *
>(sa)->sin6_addr))