X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Flibcollectdclient%2Fserver.c;h=1095ebaf3119ce7c198c73c901c3bc2b3839639d;hp=4a414bfaeb07d30d0555720ac008b5ba28e88a7e;hb=06a86a60a7dabc685bdbd81ce3d36ea5f7e2c2d4;hpb=a21477bc160169035f250724d7fa027fe3da1106 diff --git a/src/libcollectdclient/server.c b/src/libcollectdclient/server.c index 4a414bfa..1095ebaf 100644 --- a/src/libcollectdclient/server.c +++ b/src/libcollectdclient/server.c @@ -23,9 +23,7 @@ * Florian octo Forster **/ -#if HAVE_CONFIG_H #include "config.h" -#endif #if !defined(__GNUC__) || !__GNUC__ #define __attribute__(x) /**/ @@ -35,18 +33,22 @@ #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 +// clang-format on #include #define DEBUG(...) printf(__VA_ARGS__) -static _Bool is_multicast(struct addrinfo const *ai) { +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)); @@ -83,7 +85,7 @@ static int server_multicast_join(lcc_listener_t *srv, }; #else struct ip_mreq mreq = { - .imr_address.s_addr = INADDR_ANY, .imr_multiaddr.s_addr = sa->s_addr, + .imr_multiaddr.s_addr = sa->sin_addr.s_addr, }; #endif status = setsockopt(srv->conn, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, @@ -108,7 +110,7 @@ static int server_multicast_join(lcc_listener_t *srv, }; memmove(&mreq6.ipv6mr_multiaddr, &sa->sin6_addr, sizeof(struct in6_addr)); - status = setsockopt(srv->conn, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &mreq6, + status = setsockopt(srv->conn, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq6, sizeof(mreq6)); if (status == -1) return errno; @@ -176,7 +178,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); @@ -186,8 +188,10 @@ int lcc_listen_and_write(lcc_listener_t srv) { } if (srv.buffer_size == 0) - /* TODO(octo): this should be a define. */ - srv.buffer_size = 1452; + srv.buffer_size = LCC_NETWORK_BUFFER_SIZE; + + if (srv.parser == NULL) + srv.parser = lcc_network_parse; int ret = 0; while (42) { @@ -200,13 +204,7 @@ int lcc_listen_and_write(lcc_listener_t srv) { break; } - /* TODO(octo): implement parse(). */ - (void)lcc_network_parse(buffer, (size_t)len, - (lcc_network_parse_options_t){ - .writer = srv.writer, - .password_lookup = srv.password_lookup, - .security_level = srv.security_level, - }); + (void)srv.parser(buffer, (size_t)len, srv.parse_options); } if (close_socket) {