| 164 | } |
| 165 | |
| 166 | bool NAddr::IsLoopback(const IRemoteAddr& addr) { |
| 167 | if (addr.Addr()->sa_family == AF_INET) { |
| 168 | return ((ntohl(InAddr(addr).s_addr) >> 24) & 0xff) == 127; |
| 169 | } |
| 170 | |
| 171 | if (addr.Addr()->sa_family == AF_INET6) { |
| 172 | return 0 == memcmp(&In6Addr(addr), &in6addr_loopback, sizeof(in6_addr)); |
| 173 | } |
| 174 | |
| 175 | return false; |
| 176 | } |
| 177 | |
| 178 | bool NAddr::IsSame(const IRemoteAddr& lhs, const IRemoteAddr& rhs) { |
| 179 | if (lhs.Addr()->sa_family != rhs.Addr()->sa_family) { |