X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibcollectdclient%2Fserver.c;h=a81afda8ab8b4370e9d97da9306edfa588ae4fb9;hb=7111bb6df7628edce3a8e538b386fbe27633a191;hp=4a414bfaeb07d30d0555720ac008b5ba28e88a7e;hpb=a21477bc160169035f250724d7fa027fe3da1106;p=collectd.git diff --git a/src/libcollectdclient/server.c b/src/libcollectdclient/server.c index 4a414bfa..a81afda8 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) /**/ @@ -38,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -83,7 +82,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 +107,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; @@ -186,8 +185,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 +201,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) {