X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibcollectdclient%2Fcollectd%2Fserver.h;h=e50df17df77b75137c3e7a842b4fd22ccee2044a;hb=24b87484c7fd2e0998682db6f77e54d8cdc459d4;hp=90c1c0b70b172da2c95c8387f4215ae3b299ad7c;hpb=a21477bc160169035f250724d7fa027fe3da1106;p=collectd.git diff --git a/src/libcollectdclient/collectd/server.h b/src/libcollectdclient/collectd/server.h index 90c1c0b7..e50df17d 100644 --- a/src/libcollectdclient/collectd/server.h +++ b/src/libcollectdclient/collectd/server.h @@ -28,16 +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 "collectd/network.h" /* for lcc_security_level_t */ #include +#ifndef LCC_NETWORK_BUFFER_SIZE +#define LCC_NETWORK_BUFFER_SIZE 1452 +#endif + LCC_BEGIN_DECLS +/* 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 @@ -48,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; + /* parser is the callback used to parse incoming network packets. Defaults to + * lcc_network_parse() if set to NULL. */ + lcc_network_parser_t parser; - /* buffer_size determines the maximum packet size to accept. */ - uint16_t buffer_size; + /* parse_options contains options for parser and is passed on verbatimely. */ + lcc_network_parse_options_t parse_options; - /* password_lookup is used to look up the password for a given username. */ - lcc_password_lookup_t password_lookup; - - /* security_level is the minimal required security level. */ - lcc_security_level_t 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