X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibcollectdclient%2Fcollectd%2Fserver.h;h=e50df17df77b75137c3e7a842b4fd22ccee2044a;hb=711f5b6c86f51061c21bedcaa46214a01de0125c;hp=d7175ece2b50e5ec74c4372960906623415909b9;hpb=10d95b0cf8d2ffe1472cc65a4d403c9c1ca4118d;p=collectd.git diff --git a/src/libcollectdclient/collectd/server.h b/src/libcollectdclient/collectd/server.h index d7175ece..e50df17d 100644 --- a/src/libcollectdclient/collectd/server.h +++ b/src/libcollectdclient/collectd/server.h @@ -28,19 +28,29 @@ #include "collectd/lcc_features.h" +#include "collectd/network.h" /* for lcc_security_level_t */ +#include "collectd/network_parse.h" /* for lcc_network_parse_options_t */ #include "collectd/types.h" #include +#ifndef LCC_NETWORK_BUFFER_SIZE +#define LCC_NETWORK_BUFFER_SIZE 1452 +#endif + LCC_BEGIN_DECLS -/* lcc_value_list_writer_t is a write callback to which value lists are - * dispatched. */ -typedef int (*lcc_value_list_writer_t)(lcc_value_list_t const *); +/* lcc_network_parser_t is a callback that parses received network packets. It + * is expected to call lcc_network_parse_options_t.writer with each + * lcc_value_list_t it parses that has the required security level. */ +typedef int (*lcc_network_parser_t)(void *payload, size_t payload_size, + lcc_network_parse_options_t opts); /* lcc_listener_t holds parameters for running a collectd server. */ typedef struct { - /* conn is a UDP socket for the server to listen on. */ + /* conn is a UDP socket for the server to listen on. If set to <0 node and + * service will be used to open a new UDP socket. If >=0, it is the caller's + * job to clean up the socket. */ int conn; /* node is the local address to listen on if conn is <0. Defaults to "::" (any @@ -51,21 +61,20 @@ typedef struct { * LCC_DEFAULT_PORT. */ char *service; - /* writer is the callback used to send incoming lcc_value_list_t to. */ - lcc_value_list_writer_t writer; - - /* buffer_size determines the maximum packet size to accept. */ - uint16_t buffer_size; + /* parser is the callback used to parse incoming network packets. Defaults to + * lcc_network_parse() if set to NULL. */ + lcc_network_parser_t parser; - /* TODO(octo): User to password lookup. */ - /* char const * (*password_lookup) (char const *); */ + /* parse_options contains options for parser and is passed on verbatimely. */ + lcc_network_parse_options_t parse_options; - /* TODO(octo): Minimal required security level. */ - /* int security_level; */ + /* buffer_size determines the maximum packet size to accept. Defaults to + * LCC_NETWORK_BUFFER_SIZE if set to zero. */ + uint16_t buffer_size; /* interface is the name of the interface to use when subscribing to a * multicast group. Has no effect when using unicast. */ - char *interface; + char *iface; } lcc_listener_t; /* lcc_listen_and_write listens on the provided UDP socket (or opens one using @@ -74,14 +83,6 @@ typedef struct { * failure and does not return otherwise. */ int lcc_listen_and_write(lcc_listener_t srv); -/* lcc_network_parse parses data received from the network and calls "w" with - * the parsed lcc_value_list_ts. */ -/* TODO(octo): the Go code returns a []api.ValueList. Should we return a - * value_list_t** here? */ -int lcc_network_parse(void *buffer, size_t buffer_size, - lcc_value_list_writer_t w); - LCC_END_DECLS -/* vim: set sw=2 sts=2 et : */ #endif /* LIBCOLLECTD_SERVER_H */