X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibcollectdclient%2Fserver.c;h=629c3677693fbcc97ff60cbf0b2ecb0448eeaa2d;hb=711f5b6c86f51061c21bedcaa46214a01de0125c;hp=a81afda8ab8b4370e9d97da9306edfa588ae4fb9;hpb=8fd8f76dc11064e75e44448d16d35e09e46191a2;p=collectd.git diff --git a/src/libcollectdclient/server.c b/src/libcollectdclient/server.c index a81afda8..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,19 +37,27 @@ #include "collectd/network_parse.h" /* for lcc_network_parse_options_t */ #include "collectd/server.h" +// clang-format off #include -#include -#include -#include +#include #include +#include #include #include -#include +#include +#include +#include +// clang-format on #include #define DEBUG(...) printf(__VA_ARGS__) -static _Bool is_multicast(struct addrinfo const *ai) { +#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; return IN_MULTICAST(ntohl(addr->sin_addr.s_addr)); @@ -78,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) @@ -103,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)); @@ -175,7 +194,7 @@ static int server_open(lcc_listener_t *srv) { } int lcc_listen_and_write(lcc_listener_t srv) { - _Bool close_socket = 0; + bool close_socket = 0; if (srv.conn < 0) { int status = server_open(&srv);