X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibcollectdclient%2Fserver.c;h=629c3677693fbcc97ff60cbf0b2ecb0448eeaa2d;hb=711f5b6c86f51061c21bedcaa46214a01de0125c;hp=1733b61a5a062335699a7521fc66ef7a94ae15e0;hpb=61a4ed99b1a5b6d371bb745933d0efc5dff9505c;p=collectd.git diff --git a/src/libcollectdclient/server.c b/src/libcollectdclient/server.c index 1733b61a..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__ @@ -33,6 +37,7 @@ #include "collectd/network_parse.h" /* for lcc_network_parse_options_t */ #include "collectd/server.h" +// clang-format off #include #include #include @@ -42,10 +47,16 @@ #include #include #include +// clang-format on #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; @@ -79,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) @@ -104,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));