X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibcollectdclient%2Fserver.c;h=629c3677693fbcc97ff60cbf0b2ecb0448eeaa2d;hb=126d448bce2ab48300c05f13ee7eb0a75b214d81;hp=6443506fd0d7653fb634350d48a3c61dcb1b05ab;hpb=6a070667d39927f5448c4a25c34e9fb3862e6fcd;p=collectd.git diff --git a/src/libcollectdclient/server.c b/src/libcollectdclient/server.c index 6443506f..629c3677 100644 --- a/src/libcollectdclient/server.c +++ b/src/libcollectdclient/server.c @@ -23,10 +23,12 @@ * Florian octo Forster **/ -#if HAVE_CONFIG_H -#include "config.h" +#ifdef WIN32 +#include "gnulib_config.h" #endif +#include "config.h" + #if !defined(__GNUC__) || !__GNUC__ #define __attribute__(x) /**/ #endif @@ -35,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)); @@ -80,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_address.s_addr = INADDR_ANY, .imr_multiaddr.s_addr = sa->s_addr, + .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) @@ -105,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)); @@ -177,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);