X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibcollectdclient%2Fserver.c;h=629c3677693fbcc97ff60cbf0b2ecb0448eeaa2d;hb=711f5b6c86f51061c21bedcaa46214a01de0125c;hp=1095ebaf3119ce7c198c73c901c3bc2b3839639d;hpb=7b0628b4f4688d48d89f94ca381ca6340da05b37;p=collectd.git diff --git a/src/libcollectdclient/server.c b/src/libcollectdclient/server.c index 1095ebaf..629c3677 100644 --- a/src/libcollectdclient/server.c +++ b/src/libcollectdclient/server.c @@ -23,6 +23,10 @@ * Florian octo Forster **/ +#ifdef WIN32 +#include "gnulib_config.h" +#endif + #include "config.h" #if !defined(__GNUC__) || !__GNUC__ @@ -48,6 +52,11 @@ #include #define DEBUG(...) printf(__VA_ARGS__) +#ifdef WIN32 +#include +#define AI_ADDRCONFIG 0 +#endif + static bool is_multicast(struct addrinfo const *ai) { if (ai->ai_family == AF_INET) { struct sockaddr_in *addr = (struct sockaddr_in *)ai->ai_addr; @@ -81,13 +90,20 @@ static int server_multicast_join(lcc_listener_t *srv, struct ip_mreqn mreq = { .imr_address.s_addr = INADDR_ANY, .imr_multiaddr.s_addr = sa->sin_addr.s_addr, - .imr_ifindex = if_nametoindex(srv->interface), + .imr_ifindex = if_nametoindex(srv->iface), }; #else +#ifdef WIN32 struct ip_mreq mreq = { + .imr_interface.s_addr = INADDR_ANY, .imr_multiaddr.s_addr = sa->sin_addr.s_addr, }; -#endif +#else + struct ip_mreq mreq = { + .imr_multiaddr.s_addr = sa->sin_addr.s_addr, + }; +#endif /* WIN32 */ +#endif /* HAVE_STRUCT_IP_MREQN_IMR_IFINDEX */ status = setsockopt(srv->conn, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)); if (status == -1) @@ -106,7 +122,7 @@ static int server_multicast_join(lcc_listener_t *srv, return errno; struct ipv6_mreq mreq6 = { - .ipv6mr_interface = if_nametoindex(srv->interface), + .ipv6mr_interface = if_nametoindex(srv->iface), }; memmove(&mreq6.ipv6mr_multiaddr, &sa->sin6_addr, sizeof(struct in6_addr));