| #ifndef WIN32_LEAN_AND_MEAN |
| #define WIN32_LEAN_AND_MEAN |
| #endif |
| #undef __CRT__NO_INLINE |
| #define __CRT__NO_INLINE |
| #include <winsock2.h> |
| #include <ws2tcpip.h> |
| |
| #undef IN6_IS_ADDR_LOOPBACK |
| #define IN6_IS_ADDR_LOOPBACK(a) ( ((a)->s6_words[0] == 0) && \ |
| ((a)->s6_words[1] == 0) && \ |
| ((a)->s6_words[2] == 0) && \ |
| ((a)->s6_words[3] == 0) && \ |
| ((a)->s6_words[4] == 0) && \ |
| ((a)->s6_words[5] == 0) && \ |
| ((a)->s6_words[6] == 0) && \ |
| ((a)->s6_words[7] == 0x0100) ) |
| |
| int IN6ADDR_ISLOOPBACK(const struct sockaddr_in6 *a) |
| { |
| return ((a->sin6_family==AF_INET6) && |
| IN6_IS_ADDR_LOOPBACK(&a->sin6_addr)); |
| } |