libprelude/master: Documentation update and fixes.

[email protected] Wed, 8 Jul 2009 16:51:57 +0200 (CEST)
Newsgroups gmane.comp.security.ids.prelude.cvs
Message-ID <[email protected]>
commit 80b869e15f0e53224922be8eff302a700639c019
Author: Yoann Vandoorselaere <[email protected]>
Date:   Thu Jun 18 09:28:01 2009 +0200

    Documentation update and fixes.
    
    Update gtk-doc.make to a newer version. Use PRELUDE_DISABLED_DEPRECATED to
    properly mark function as deprecated (avoid a gtk-doc warning). Various
    gtk-doc warnings fixes. Document prelude_async_flags_t directly within the
    header file.


========================================

 docs/api/Makefile.am             |    2 +-
 docs/api/libprelude-decl.txt     | 4904 +++++++++++++++++++-------------------
 docs/api/tmpl/prelude-async.sgml |    3 +-
 gtk-doc.make                     |   47 +-
 src/idmef-path.c                 |    8 +-
 src/include/prelude-async.h      |   11 +
 src/include/prelude-client.h     |    9 +-
 src/prelude-client.c             |    3 +-
 src/prelude-option.c             |    2 +-
 9 files changed, 2512 insertions(+), 2477 deletions(-)

========================================

diff --git a/docs/api/Makefile.am b/docs/api/Makefile.am
index 1e34e89..646620e 100644
--- a/docs/api/Makefile.am
+++ b/docs/api/Makefile.am
@@ -24,7 +24,7 @@ SCANGOBJ_OPTIONS=
 
 # Extra options to supply to gtkdoc-scan.
 # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" 
-SCAN_OPTIONS=
+SCAN_OPTIONS=--deprecated-guards="PRELUDE_DISABLE_DEPRECATED"
 
 # Extra options to supply to gtkdoc-mkdb.
 # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
diff --git a/docs/api/libprelude-decl.txt b/docs/api/libprelude-decl.txt
index cd7f339..45490fa 100644
--- a/docs/api/libprelude-decl.txt
+++ b/docs/api/libprelude-decl.txt
@@ -1,571 +1,1094 @@
-<ENUM>
-<NAME>idmef_criterion_operator_t</NAME>
-typedef enum {
-        IDMEF_CRITERION_OPERATOR_NOT               = 0x8000,
-        IDMEF_CRITERION_OPERATOR_NOCASE            = 0x4000,
-
-        IDMEF_CRITERION_OPERATOR_EQUAL             = 0x0001,
-        IDMEF_CRITERION_OPERATOR_EQUAL_NOCASE      = IDMEF_CRITERION_OPERATOR_EQUAL|IDMEF_CRITERION_OPERATOR_NOCASE,
-        IDMEF_CRITERION_OPERATOR_NOT_EQUAL         = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_EQUAL,
-        IDMEF_CRITERION_OPERATOR_NOT_EQUAL_NOCASE  = IDMEF_CRITERION_OPERATOR_NOT_EQUAL|IDMEF_CRITERION_OPERATOR_EQUAL_NOCASE,
-
-        IDMEF_CRITERION_OPERATOR_LESSER            = 0x0002,
-        IDMEF_CRITERION_OPERATOR_LESSER_OR_EQUAL   = IDMEF_CRITERION_OPERATOR_LESSER|IDMEF_CRITERION_OPERATOR_EQUAL,
-
-        IDMEF_CRITERION_OPERATOR_GREATER           = 0x0004,
-        IDMEF_CRITERION_OPERATOR_GREATER_OR_EQUAL  = IDMEF_CRITERION_OPERATOR_GREATER|IDMEF_CRITERION_OPERATOR_EQUAL,
-
-        IDMEF_CRITERION_OPERATOR_SUBSTR            = 0x0008,
-        IDMEF_CRITERION_OPERATOR_SUBSTR_NOCASE     = IDMEF_CRITERION_OPERATOR_SUBSTR|IDMEF_CRITERION_OPERATOR_NOCASE,
-        IDMEF_CRITERION_OPERATOR_NOT_SUBSTR        = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_SUBSTR,
-        IDMEF_CRITERION_OPERATOR_NOT_SUBSTR_NOCASE = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_SUBSTR_NOCASE,
-
-        IDMEF_CRITERION_OPERATOR_REGEX             = 0x0010,
-        IDMEF_CRITERION_OPERATOR_REGEX_NOCASE      = IDMEF_CRITERION_OPERATOR_REGEX|IDMEF_CRITERION_OPERATOR_NOCASE,
-        IDMEF_CRITERION_OPERATOR_NOT_REGEX         = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_REGEX,
-        IDMEF_CRITERION_OPERATOR_NOT_REGEX_NOCASE  = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_REGEX_NOCASE,
-
-        IDMEF_CRITERION_OPERATOR_NULL              = 0x0020,
-        IDMEF_CRITERION_OPERATOR_NOT_NULL          = IDMEF_CRITERION_OPERATOR_NULL|IDMEF_CRITERION_OPERATOR_NOT
-} idmef_criterion_operator_t;
-</ENUM>
-<TYPEDEF>
-<NAME>idmef_criteria_t</NAME>
-typedef struct idmef_criteria idmef_criteria_t;
-</TYPEDEF>
 <TYPEDEF>
-<NAME>idmef_criterion_t</NAME>
-typedef struct idmef_criterion idmef_criterion_t;
+<NAME>prelude_ident_t</NAME>
+typedef struct prelude_ident prelude_ident_t;
 </TYPEDEF>
 <FUNCTION>
-<NAME>idmef_criterion_operator_to_string</NAME>
-<RETURNS>const char *</RETURNS>
-idmef_criterion_operator_t op
+<NAME>prelude_ident_generate</NAME>
+<RETURNS>int </RETURNS>
+prelude_ident_t *ident, prelude_string_t *out
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_new</NAME>
-<RETURNS>int </RETURNS>
-idmef_criterion_t **criterion, idmef_path_t *path,idmef_criterion_value_t *value, idmef_criterion_operator_t op
+<NAME>prelude_ident_inc</NAME>
+<RETURNS>uint64_t </RETURNS>
+prelude_ident_t *ident
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_destroy</NAME>
+<NAME>prelude_ident_destroy</NAME>
 <RETURNS>void </RETURNS>
-idmef_criterion_t *criterion
+prelude_ident_t *ident
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_ref</NAME>
-<RETURNS>idmef_criteria_t *</RETURNS>
-idmef_criteria_t *criteria
+<NAME>prelude_ident_new</NAME>
+<RETURNS>int </RETURNS>
+prelude_ident_t **ret
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_clone</NAME>
+<NAME>idmef_additional_data_read</NAME>
 <RETURNS>int </RETURNS>
-const idmef_criterion_t *criterion, idmef_criterion_t **dst
+idmef_additional_data_t *additional_data, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_print</NAME>
+<NAME>idmef_reference_read</NAME>
 <RETURNS>int </RETURNS>
-const idmef_criterion_t *criterion, prelude_io_t *fd
+idmef_reference_t *reference, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_to_string</NAME>
+<NAME>idmef_classification_read</NAME>
 <RETURNS>int </RETURNS>
-const idmef_criterion_t *criterion, prelude_string_t *out
+idmef_classification_t *classification, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_get_path</NAME>
-<RETURNS>idmef_path_t *</RETURNS>
-const idmef_criterion_t *criterion
+<NAME>idmef_user_id_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_user_id_t *user_id, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_get_value</NAME>
-<RETURNS>idmef_criterion_value_t *</RETURNS>
-const idmef_criterion_t *criterion
+<NAME>idmef_user_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_user_t *user, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_get_operator</NAME>
-<RETURNS>idmef_criterion_operator_t </RETURNS>
-const idmef_criterion_t *criterion
+<NAME>idmef_address_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_address_t *address, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_match</NAME>
+<NAME>idmef_process_read</NAME>
 <RETURNS>int </RETURNS>
-const idmef_criterion_t *criterion, idmef_message_t *message
+idmef_process_t *process, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_new</NAME>
+<NAME>idmef_web_service_read</NAME>
 <RETURNS>int </RETURNS>
-idmef_criteria_t **criteria
+idmef_web_service_t *web_service, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_destroy</NAME>
-<RETURNS>void </RETURNS>
-idmef_criteria_t *criteria
+<NAME>idmef_snmp_service_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_snmp_service_t *snmp_service, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_clone</NAME>
+<NAME>idmef_service_read</NAME>
 <RETURNS>int </RETURNS>
-idmef_criteria_t *src, idmef_criteria_t **dst
+idmef_service_t *service, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_print</NAME>
+<NAME>idmef_node_read</NAME>
 <RETURNS>int </RETURNS>
-const idmef_criteria_t *criteria, prelude_io_t *fd
+idmef_node_t *node, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_to_string</NAME>
+<NAME>idmef_source_read</NAME>
 <RETURNS>int </RETURNS>
-const idmef_criteria_t *criteria, prelude_string_t *out
+idmef_source_t *source, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_is_criterion</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const idmef_criteria_t *criteria
+<NAME>idmef_file_access_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_file_access_t *file_access, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_get_criterion</NAME>
-<RETURNS>idmef_criterion_t *</RETURNS>
-const idmef_criteria_t *criteria
+<NAME>idmef_inode_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_inode_t *inode, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_set_criterion</NAME>
-<RETURNS>void </RETURNS>
-idmef_criteria_t *criteria, idmef_criterion_t *criterion
+<NAME>idmef_checksum_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_checksum_t *checksum, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_or_criteria</NAME>
-<RETURNS>void </RETURNS>
-idmef_criteria_t *criteria, idmef_criteria_t *criteria2
+<NAME>idmef_file_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_file_t *file, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_and_criteria</NAME>
+<NAME>idmef_linkage_read</NAME>
 <RETURNS>int </RETURNS>
-idmef_criteria_t *criteria, idmef_criteria_t *criteria2
+idmef_linkage_t *linkage, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_match</NAME>
+<NAME>idmef_target_read</NAME>
 <RETURNS>int </RETURNS>
-const idmef_criteria_t *criteria, idmef_message_t *message
+idmef_target_t *target, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_get_or</NAME>
-<RETURNS>idmef_criteria_t *</RETURNS>
-const idmef_criteria_t *criteria
+<NAME>idmef_analyzer_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_analyzer_t *analyzer, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_get_and</NAME>
-<RETURNS>idmef_criteria_t *</RETURNS>
-const idmef_criteria_t *criteria
+<NAME>idmef_alertident_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_alertident_t *alertident, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_new_from_string</NAME>
+<NAME>idmef_impact_read</NAME>
 <RETURNS>int </RETURNS>
-idmef_criteria_t **criteria, const char *str
+idmef_impact_t *impact, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_set_negation</NAME>
-<RETURNS>void </RETURNS>
-idmef_criteria_t *criteria, prelude_bool_t negate
+<NAME>idmef_action_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_action_t *action, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criteria_get_negation</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const idmef_criteria_t *criteria
+<NAME>idmef_confidence_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_confidence_t *confidence, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_assessment_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_assessment_t *assessment, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_tool_alert_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_tool_alert_t *tool_alert, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_correlation_alert_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_correlation_alert_t *correlation_alert, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_overflow_alert_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_overflow_alert_t *overflow_alert, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_alert_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_alert_t *alert, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_heartbeat_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_heartbeat_t *heartbeat, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_read</NAME>
+<RETURNS>int </RETURNS>
+idmef_message_t *message, prelude_msg_t *msg
 </FUNCTION>
 <TYPEDEF>
-<NAME>prelude_msg_t</NAME>
-typedef struct prelude_msg prelude_msg_t;
+<NAME>prelude_msgbuf_t</NAME>
+typedef struct prelude_msgbuf prelude_msgbuf_t;
 </TYPEDEF>
 <ENUM>
-<NAME>prelude_msg_priority_t</NAME>
+<NAME>prelude_msgbuf_flags_t</NAME>
 typedef enum {
-        PRELUDE_MSG_PRIORITY_NONE = 0,
-        PRELUDE_MSG_PRIORITY_LOW  = 1,
-        PRELUDE_MSG_PRIORITY_MID  = 2,
-        PRELUDE_MSG_PRIORITY_HIGH = 3
-} prelude_msg_priority_t;
+        PRELUDE_MSGBUF_FLAGS_ASYNC = 0x01
+} prelude_msgbuf_flags_t;
 </ENUM>
 <FUNCTION>
-<NAME>prelude_msg_read</NAME>
+<NAME>prelude_msgbuf_new</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t **msg, prelude_io_t *pio
+prelude_msgbuf_t **msgbuf
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_forward</NAME>
-<RETURNS>int </RETURNS>
-prelude_msg_t *msg, prelude_io_t *dst, prelude_io_t *src
+<NAME>prelude_msgbuf_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_msgbuf_t *msgbuf
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_get</NAME>
+<NAME>prelude_msgbuf_mark_end</NAME>
+<RETURNS>void </RETURNS>
+prelude_msgbuf_t *msgbuf
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msgbuf_set</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t *msg, uint8_t *tag, uint32_t *len, void **buf
+prelude_msgbuf_t *msgbuf, uint8_t tag, uint32_t len, const void *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_recycle</NAME>
+<NAME>prelude_msgbuf_get_msg</NAME>
+<RETURNS>prelude_msg_t *</RETURNS>
+prelude_msgbuf_t *msgbuf
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msgbuf_set_callback</NAME>
 <RETURNS>void </RETURNS>
-prelude_msg_t *msg
+prelude_msgbuf_t *msgbuf, int (*send_msg)(prelude_msgbuf_t *msgbuf, prelude_msg_t *msg)
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_mark_end</NAME>
+<NAME>prelude_msgbuf_set_data</NAME>
 <RETURNS>void </RETURNS>
-prelude_msg_t *msg
+prelude_msgbuf_t *msgbuf, void *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_dynamic_new</NAME>
+<NAME>prelude_msgbuf_get_data</NAME>
+<RETURNS>void *</RETURNS>
+prelude_msgbuf_t *msgbuf
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msgbuf_set_flags</NAME>
+<RETURNS>void </RETURNS>
+prelude_msgbuf_t *msgbuf, prelude_msgbuf_flags_t flags
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msgbuf_get_flags</NAME>
+<RETURNS>prelude_msgbuf_flags_t </RETURNS>
+prelude_msgbuf_t *msgbuf
+</FUNCTION>
+<ENUM>
+<NAME>idmef_data_type_t</NAME>
+typedef enum {
+	IDMEF_DATA_TYPE_UNKNOWN      = 0,
+	IDMEF_DATA_TYPE_CHAR         = 1,
+	IDMEF_DATA_TYPE_BYTE         = 2,
+	IDMEF_DATA_TYPE_UINT32       = 3,
+	IDMEF_DATA_TYPE_UINT64       = 4,
+	IDMEF_DATA_TYPE_FLOAT        = 5,
+	IDMEF_DATA_TYPE_CHAR_STRING  = 6,
+	IDMEF_DATA_TYPE_BYTE_STRING  = 7
+} idmef_data_type_t;
+</ENUM>
+<STRUCT>
+<NAME>data</NAME>
+typedef struct {
+        int refcount;
+
+        int flags;
+        idmef_data_type_t type;
+        size_t len;
+
+        union {
+		char char_data;
+		uint8_t byte_data;
+		uint32_t uint32_data;
+		uint64_t uint64_data;
+		float float_data;
+		void *rw_data;
+		const void *ro_data;
+        } data;
+        
+</STRUCT>
+<FUNCTION>
+<NAME>idmef_data_new</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t **ret, int (*flush_msg_cb)(prelude_msg_t **msg, void *data), void *data
+idmef_data_t **data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_new</NAME>
+<NAME>idmef_data_ref</NAME>
+<RETURNS>idmef_data_t *</RETURNS>
+idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_new_char</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t **ret, size_t msgcount, size_t msglen, uint8_t tag, prelude_msg_priority_t priority
+idmef_data_t **data, char c
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_set</NAME>
+<NAME>idmef_data_new_byte</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t *msg, uint8_t tag, uint32_t len, const void *data
+idmef_data_t **data, uint8_t i
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_write</NAME>
+<NAME>idmef_data_new_uint32</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t *msg, prelude_io_t *dst
+idmef_data_t **data, uint32_t i
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_set_tag</NAME>
+<NAME>idmef_data_new_uint64</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t **data, uint64_t i
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_new_float</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t **data, float f
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_set_char</NAME>
 <RETURNS>void </RETURNS>
-prelude_msg_t *msg, uint8_t tag
+idmef_data_t *data, char c
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_set_priority</NAME>
+<NAME>idmef_data_set_byte</NAME>
 <RETURNS>void </RETURNS>
-prelude_msg_t *msg, prelude_msg_priority_t priority
+idmef_data_t *data, uint8_t i
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_get_tag</NAME>
-<RETURNS>uint8_t </RETURNS>
-prelude_msg_t *msg
+<NAME>idmef_data_set_uint32</NAME>
+<RETURNS>void </RETURNS>
+idmef_data_t *data, uint32_t i
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_get_priority</NAME>
-<RETURNS>prelude_msg_priority_t </RETURNS>
-prelude_msg_t *msg
+<NAME>idmef_data_set_uint64</NAME>
+<RETURNS>void </RETURNS>
+idmef_data_t *data, uint64_t i
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_get_len</NAME>
-<RETURNS>uint32_t </RETURNS>
-prelude_msg_t *msg
+<NAME>idmef_data_set_float</NAME>
+<RETURNS>void </RETURNS>
+idmef_data_t *data, float f
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_get_datalen</NAME>
-<RETURNS>uint32_t </RETURNS>
-prelude_msg_t *msg
+<NAME>idmef_data_set_ptr_dup_fast</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t *data, idmef_data_type_t type, const void *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_get_message_data</NAME>
-<RETURNS>const unsigned char *</RETURNS>
-prelude_msg_t *msg
+<NAME>idmef_data_set_ptr_ref_fast</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t *data, idmef_data_type_t type, const void *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_get_time</NAME>
-<RETURNS>struct timeval *</RETURNS>
-prelude_msg_t *msg, struct timeval *tv
+<NAME>idmef_data_set_ptr_nodup_fast</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t *data, idmef_data_type_t type, void *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_is_empty</NAME>
+<NAME>idmef_data_new_ptr_dup_fast</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t *msg
+idmef_data_t **data, idmef_data_type_t type, const void *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_is_fragment</NAME>
+<NAME>idmef_data_new_ptr_ref_fast</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t *msg
+idmef_data_t **data, idmef_data_type_t type, const void *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_msg_t *msg
+<NAME>idmef_data_new_ptr_nodup_fast</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t **data, idmef_data_type_t type, void *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_set_callback</NAME>
-<RETURNS>void </RETURNS>
-prelude_msg_t *msg, int (*flush_msg_cb)(prelude_msg_t **msg, void *data)
+<NAME>idmef_data_set_char_string_dup_fast</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t *data, const char *str, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_set_data</NAME>
-<RETURNS>void </RETURNS>
-prelude_msg_t *msg, void *data
+<NAME>idmef_data_new_char_string_dup_fast</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t **data, const char *str, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_ref</NAME>
-<RETURNS>prelude_msg_t *</RETURNS>
-prelude_msg_t *msg
+<NAME>idmef_data_new_char_string_ref_fast</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t **data, const char *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_thread_init</NAME>
+<NAME>idmef_data_new_char_string_nodup_fast</NAME>
 <RETURNS>int </RETURNS>
-void *nil
+idmef_data_t **data, char *ptr, size_t len
 </FUNCTION>
-<MACRO>
-<NAME>PRELUDE_OPTION_REPLY_TYPE_SET</NAME>
-#define PRELUDE_OPTION_REPLY_TYPE_SET   0x01
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_OPTION_REPLY_TYPE_GET</NAME>
-#define PRELUDE_OPTION_REPLY_TYPE_GET   0x02
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_OPTION_REPLY_TYPE_LIST</NAME>
-#define PRELUDE_OPTION_REPLY_TYPE_LIST  0x04
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_OPTION_REPLY_TYPE_ERROR</NAME>
-#define PRELUDE_OPTION_REPLY_TYPE_ERROR 0x08
-</MACRO>
 <FUNCTION>
-<NAME>prelude_option_push_request</NAME>
+<NAME>idmef_data_set_char_string_ref_fast</NAME>
 <RETURNS>int </RETURNS>
-prelude_msgbuf_t *msg, int type, const char *request
+idmef_data_t *data, const char *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_option_new_request</NAME>
+<NAME>idmef_data_set_char_string_nodup_fast</NAME>
 <RETURNS>int </RETURNS>
-prelude_msgbuf_t *msgbuf,uint32_t request_id, uint64_t *target_id, size_t size
+idmef_data_t *data, char *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_option_process_request</NAME>
+<NAME>idmef_data_new_char_string_ref</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_t *client, prelude_msg_t *msg, prelude_msgbuf_t *reply
+idmef_data_t **data, const char *ptr
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_option_recv_reply</NAME>
+<NAME>idmef_data_new_char_string_dup</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t *msg, uint64_t *source_id, uint32_t *request_id, void **value
+idmef_data_t **data, const char *ptr
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_new_char_string_nodup</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t **data, char *ptr
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_set_char_string_ref</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t *data, const char *ptr
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_set_char_string_dup</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t *data, const char *ptr
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_set_char_string_nodup</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t *data, char *ptr
 </FUNCTION>
-<STRUCT>
-<NAME>prelude_timer_t</NAME>
-typedef struct {
-        prelude_list_t list;
-
-        int expire;
-        time_t start_time;
-
-        void *data;
-        void (*function)(void *data);
-} prelude_timer_t;
-</STRUCT>
-<MACRO>
-<NAME>prelude_timer_get_expire</NAME>
-#define prelude_timer_get_expire(timer) (timer)->expire
-</MACRO>
-<MACRO>
-<NAME>prelude_timer_get_data</NAME>
-#define prelude_timer_get_data(timer) (timer)->data
-</MACRO>
-<MACRO>
-<NAME>prelude_timer_get_callback</NAME>
-#define prelude_timer_get_callback(timer) (timer)->function
-</MACRO>
-<MACRO>
-<NAME>prelude_timer_set_expire</NAME>
-#define prelude_timer_set_expire(timer, x) prelude_timer_get_expire((timer)) = (x)
-</MACRO>
-<MACRO>
-<NAME>prelude_timer_set_data</NAME>
-#define prelude_timer_set_data(timer, x) prelude_timer_get_data((timer)) = (x)
-</MACRO>
 <MACRO>
-<NAME>prelude_timer_set_callback</NAME>
-#define prelude_timer_set_callback(timer, x) prelude_timer_get_callback((timer)) = (x)
+<NAME>idmef_data_set_char_string_constant</NAME>
+#define idmef_data_set_char_string_constant(string, str)		\
+	idmef_data_set_char_string_ref_fast((string), (str), sizeof((str)) - 1)
 </MACRO>
 <FUNCTION>
-<NAME>prelude_timer_init</NAME>
-<RETURNS>void </RETURNS>
-prelude_timer_t *timer
+<NAME>idmef_data_new_byte_string_ref</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t **data, const unsigned char *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_timer_init_list</NAME>
-<RETURNS>void </RETURNS>
-prelude_timer_t *timer
+<NAME>idmef_data_new_byte_string_dup</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t **data, const unsigned char *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_timer_reset</NAME>
-<RETURNS>void </RETURNS>
-prelude_timer_t *timer
+<NAME>idmef_data_new_byte_string_nodup</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t **data, unsigned char *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_timer_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_timer_t *timer
+<NAME>idmef_data_set_byte_string_ref</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t *data, const unsigned char *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_timer_wake_up</NAME>
-<RETURNS>void </RETURNS>
-void
+<NAME>idmef_data_set_byte_string_dup</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t *data, const unsigned char *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_timer_flush</NAME>
-<RETURNS>void </RETURNS>
-void
+<NAME>idmef_data_set_byte_string_nodup</NAME>
+<RETURNS>int </RETURNS>
+idmef_data_t *data, unsigned char *ptr, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_timer_lock_critical_region</NAME>
+<NAME>idmef_data_destroy</NAME>
 <RETURNS>void </RETURNS>
-void
+idmef_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_timer_unlock_critical_region</NAME>
-<RETURNS>void </RETURNS>
-void
+<NAME>idmef_data_copy_ref</NAME>
+<RETURNS>int </RETURNS>
+const idmef_data_t *src, idmef_data_t *dst
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_write</NAME>
+<NAME>idmef_data_copy_dup</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t *additional_data, prelude_msgbuf_t *msg
+const idmef_data_t *src, idmef_data_t *dst
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_reference_write</NAME>
+<NAME>idmef_data_clone</NAME>
 <RETURNS>int </RETURNS>
-idmef_reference_t *reference, prelude_msgbuf_t *msg
+const idmef_data_t *src, idmef_data_t **dst
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_classification_write</NAME>
+<NAME>idmef_data_get_type</NAME>
+<RETURNS>idmef_data_type_t </RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_get_len</NAME>
+<RETURNS>size_t </RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_get_data</NAME>
+<RETURNS>const void *</RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_get_char</NAME>
+<RETURNS>char </RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_get_byte</NAME>
+<RETURNS>uint8_t </RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_get_uint32</NAME>
+<RETURNS>uint32_t </RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_get_uint64</NAME>
+<RETURNS>uint64_t </RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_get_float</NAME>
+<RETURNS>float </RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_get_char_string</NAME>
+<RETURNS>const char *</RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_get_byte_string</NAME>
+<RETURNS>const unsigned char *</RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_is_empty</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_to_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_classification_t *classification, prelude_msgbuf_t *msg
+const idmef_data_t *data, prelude_string_t *out
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_user_id_write</NAME>
+<NAME>idmef_data_destroy_internal</NAME>
+<RETURNS>void </RETURNS>
+idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_data_compare</NAME>
 <RETURNS>int </RETURNS>
-idmef_user_id_t *user_id, prelude_msgbuf_t *msg
+const idmef_data_t *data1, const idmef_data_t *data2
 </FUNCTION>
+<ENUM>
+<NAME>prelude_client_exit_status_t</NAME>
+typedef enum {
+        PRELUDE_CLIENT_EXIT_STATUS_SUCCESS = 0,
+        PRELUDE_CLIENT_EXIT_STATUS_FAILURE = -1
+} prelude_client_exit_status_t;
+</ENUM>
+<ENUM>
+<NAME>prelude_client_flags_t</NAME>
+typedef enum {
+        PRELUDE_CLIENT_FLAGS_ASYNC_SEND  = 0x01,
+        PRELUDE_CLIENT_FLAGS_ASYNC_TIMER = 0x02,
+        PRELUDE_CLIENT_FLAGS_HEARTBEAT   = 0x04,
+        PRELUDE_CLIENT_FLAGS_CONNECT     = 0x08,
+        PRELUDE_CLIENT_FLAGS_AUTOCONFIG  = 0x10
+} prelude_client_flags_t;
+</ENUM>
+<TYPEDEF>
+<NAME>prelude_client_t</NAME>
+typedef struct prelude_client prelude_client_t;
+</TYPEDEF>
 <FUNCTION>
-<NAME>idmef_user_write</NAME>
+<NAME>prelude_client_get_unique_ident</NAME>
+<RETURNS>prelude_ident_t *</RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_set_connection_pool</NAME>
+<RETURNS>void </RETURNS>
+prelude_client_t *client, prelude_connection_pool_t *pool
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_get_connection_pool</NAME>
+<RETURNS>prelude_connection_pool_t *</RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_start</NAME>
 <RETURNS>int </RETURNS>
-idmef_user_t *user, prelude_msgbuf_t *msg
+prelude_client_t *client
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_address_write</NAME>
+<NAME>prelude_client_init</NAME>
 <RETURNS>int </RETURNS>
-idmef_address_t *address, prelude_msgbuf_t *msg
+prelude_client_t *client
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_process_write</NAME>
+<NAME>prelude_client_new</NAME>
 <RETURNS>int </RETURNS>
-idmef_process_t *process, prelude_msgbuf_t *msg
+prelude_client_t **client, const char *profile
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_web_service_write</NAME>
+<NAME>prelude_client_ref</NAME>
+<RETURNS>prelude_client_t *</RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_get_analyzer</NAME>
+<RETURNS>idmef_analyzer_t *</RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_get_flags</NAME>
+<RETURNS>prelude_client_flags_t </RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_set_required_permission</NAME>
+<RETURNS>void </RETURNS>
+prelude_client_t *client, prelude_connection_permission_t permission
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_get_required_permission</NAME>
+<RETURNS>prelude_connection_permission_t </RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_send_msg</NAME>
+<RETURNS>void </RETURNS>
+prelude_client_t *client, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_recv_msg</NAME>
 <RETURNS>int </RETURNS>
-idmef_web_service_t *web_service, prelude_msgbuf_t *msg
+prelude_client_t *client, int timeout, prelude_msg_t **msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_snmp_service_write</NAME>
+<NAME>prelude_client_set_heartbeat_cb</NAME>
+<RETURNS>void </RETURNS>
+prelude_client_t *client, void (*cb)(prelude_client_t *client, idmef_message_t *hb)
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_send_idmef</NAME>
+<RETURNS>void </RETURNS>
+prelude_client_t *client, idmef_message_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_recv_idmef</NAME>
 <RETURNS>int </RETURNS>
-idmef_snmp_service_t *snmp_service, prelude_msgbuf_t *msg
+prelude_client_t *client, int timeout, idmef_message_t **idmef
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_service_write</NAME>
+<NAME>prelude_client_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_client_t *client, prelude_client_exit_status_t status
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_set_flags</NAME>
 <RETURNS>int </RETURNS>
-idmef_service_t *service, prelude_msgbuf_t *msg
+prelude_client_t *client, prelude_client_flags_t flags
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_node_write</NAME>
+<NAME>prelude_client_set_config_filename</NAME>
 <RETURNS>int </RETURNS>
-idmef_node_t *node, prelude_msgbuf_t *msg
+prelude_client_t *client, const char *filename
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_source_write</NAME>
+<NAME>prelude_client_get_config_filename</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_get_profile</NAME>
+<RETURNS>prelude_client_profile_t *</RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_new_msgbuf</NAME>
 <RETURNS>int </RETURNS>
-idmef_source_t *source, prelude_msgbuf_t *msg
+prelude_client_t *client, prelude_msgbuf_t **msgbuf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_file_access_write</NAME>
+<NAME>prelude_client_handle_msg_default</NAME>
 <RETURNS>int </RETURNS>
-idmef_file_access_t *file_access, prelude_msgbuf_t *msg
+prelude_client_t *client, prelude_msg_t *msg, prelude_msgbuf_t *msgbuf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_inode_write</NAME>
+<NAME>prelude_client_get_setup_error</NAME>
+<DEPRECATED/>
+<RETURNS>const char *</RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_is_setup_needed</NAME>
+<DEPRECATED/>
+<RETURNS>prelude_bool_t </RETURNS>
+int error
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_print_setup_error</NAME>
+<RETURNS>void </RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_additional_data_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_additional_data_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_reference_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_reference_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_classification_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_classification_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_user_id_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_user_id_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_user_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_user_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_address_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_address_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_process_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_process_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_web_service_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_web_service_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_snmp_service_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_snmp_service_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_service_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_service_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_node_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_node_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_source_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_source_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_file_access_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_file_access_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_inode_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_inode_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_checksum_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_checksum_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_file_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_file_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_linkage_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_linkage_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_target_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_target_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_analyzer_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_analyzer_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_alertident_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_alertident_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_impact_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_impact_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_action_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_action_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_confidence_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_confidence_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_assessment_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_assessment_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_tool_alert_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_tool_alert_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_correlation_alert_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_correlation_alert_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_overflow_alert_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_overflow_alert_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_alert_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_alert_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_heartbeat_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_heartbeat_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_print</NAME>
+<RETURNS>void </RETURNS>
+idmef_message_t *ptr, prelude_io_t *fd
+</FUNCTION>
+<ENUM>
+<NAME>prelude_connection_permission_t</NAME>
+typedef enum {
+        PRELUDE_CONNECTION_PERMISSION_IDMEF_READ      = 0x01, /* client might read received IDMEF message */
+        PRELUDE_CONNECTION_PERMISSION_ADMIN_READ      = 0x02, /* client might read received ADMIN message */
+        PRELUDE_CONNECTION_PERMISSION_IDMEF_WRITE     = 0x04, /* client might send IDMEF message          */
+        PRELUDE_CONNECTION_PERMISSION_ADMIN_WRITE     = 0x08  /* client might issue OPTION request        */
+} prelude_connection_permission_t;
+</ENUM>
+<ENUM>
+<NAME>prelude_connection_state_t</NAME>
+typedef enum {
+        PRELUDE_CONNECTION_STATE_ESTABLISHED     = 0x01
+} prelude_connection_state_t;
+</ENUM>
+<TYPEDEF>
+<NAME>prelude_connection_t</NAME>
+typedef struct prelude_connection prelude_connection_t;
+</TYPEDEF>
+<FUNCTION>
+<NAME>prelude_connection_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_t *conn
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_ref</NAME>
+<RETURNS>prelude_connection_t *</RETURNS>
+prelude_connection_t *conn
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_send</NAME>
 <RETURNS>int </RETURNS>
-idmef_inode_t *inode, prelude_msgbuf_t *msg
+prelude_connection_t *cnx, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_checksum_write</NAME>
+<NAME>prelude_connection_recv</NAME>
 <RETURNS>int </RETURNS>
-idmef_checksum_t *checksum, prelude_msgbuf_t *msg
+prelude_connection_t *cnx, prelude_msg_t **outmsg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_file_write</NAME>
+<NAME>prelude_connection_recv_idmef</NAME>
 <RETURNS>int </RETURNS>
-idmef_file_t *file, prelude_msgbuf_t *msg
+prelude_connection_t *con, idmef_message_t **idmef
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_linkage_write</NAME>
+<NAME>prelude_connection_connect</NAME>
 <RETURNS>int </RETURNS>
-idmef_linkage_t *linkage, prelude_msgbuf_t *msg
+prelude_connection_t *cnx,prelude_client_profile_t *profile,prelude_connection_permission_t permission
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_target_write</NAME>
+<NAME>prelude_connection_forward</NAME>
+<RETURNS>ssize_t </RETURNS>
+prelude_connection_t *cnx, prelude_io_t *src, size_t count
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_get_local_addr</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_connection_t *cnx
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_get_local_port</NAME>
+<RETURNS>unsigned int </RETURNS>
+prelude_connection_t *cnx
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_get_peer_addr</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_connection_t *cnx
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_get_peer_port</NAME>
+<RETURNS>unsigned int </RETURNS>
+prelude_connection_t *cnx
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_is_alive</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+prelude_connection_t *cnx
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_get_fd</NAME>
+<RETURNS>prelude_io_t *</RETURNS>
+prelude_connection_t *cnx
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_close</NAME>
 <RETURNS>int </RETURNS>
-idmef_target_t *target, prelude_msgbuf_t *msg
+prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_analyzer_write</NAME>
+<NAME>prelude_connection_set_fd_ref</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_t *cnx, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_set_fd_nodup</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_t *cnx, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_set_state</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_t *cnx, prelude_connection_state_t state
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_get_state</NAME>
+<RETURNS>prelude_connection_state_t </RETURNS>
+prelude_connection_t *cnx
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_set_data</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_t *cnx, void *data
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_get_data</NAME>
+<RETURNS>void *</RETURNS>
+prelude_connection_t *cnx
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_get_default_socket_filename</NAME>
+<RETURNS>const char *</RETURNS>
+void
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_get_permission</NAME>
+<RETURNS>prelude_connection_permission_t </RETURNS>
+prelude_connection_t *conn
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_get_peer_analyzerid</NAME>
+<RETURNS>uint64_t </RETURNS>
+prelude_connection_t *cnx
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_set_peer_analyzerid</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_t *cnx, uint64_t analyzerid
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_new</NAME>
 <RETURNS>int </RETURNS>
-idmef_analyzer_t *analyzer, prelude_msgbuf_t *msg
+prelude_connection_t **ret, const char *addr
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_alertident_write</NAME>
+<NAME>prelude_connection_new_msgbuf</NAME>
 <RETURNS>int </RETURNS>
-idmef_alertident_t *alertident, prelude_msgbuf_t *msg
+prelude_connection_t *connection, prelude_msgbuf_t **msgbuf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_impact_write</NAME>
+<NAME>prelude_connection_permission_to_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_impact_t *impact, prelude_msgbuf_t *msg
+prelude_connection_permission_t perm, prelude_string_t *out
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_action_write</NAME>
+<NAME>prelude_connection_permission_new_from_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_action_t *action, prelude_msgbuf_t *msg
+prelude_connection_permission_t *out, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_confidence_write</NAME>
+<NAME>prelude_connection_ref</NAME>
+<RETURNS>prelude_connection_t *</RETURNS>
+prelude_connection_t *conn
+</FUNCTION>
+<TYPEDEF>
+<NAME>idmef_criterion_value_t</NAME>
+typedef struct idmef_criterion_value idmef_criterion_value_t;
+</TYPEDEF>
+<ENUM>
+<NAME>idmef_criterion_value_type_t</NAME>
+typedef enum {
+        IDMEF_CRITERION_VALUE_TYPE_ERROR            = -1,
+        IDMEF_CRITERION_VALUE_TYPE_VALUE            =  0,
+        IDMEF_CRITERION_VALUE_TYPE_REGEX            =  1,
+        IDMEF_CRITERION_VALUE_TYPE_BROKEN_DOWN_TIME =  2
+} idmef_criterion_value_type_t;
+</ENUM>
+<FUNCTION>
+<NAME>idmef_criterion_value_new</NAME>
 <RETURNS>int </RETURNS>
-idmef_confidence_t *confidence, prelude_msgbuf_t *msg
+idmef_criterion_value_t **cv
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_assessment_write</NAME>
+<NAME>idmef_criterion_value_new_regex</NAME>
 <RETURNS>int </RETURNS>
-idmef_assessment_t *assessment, prelude_msgbuf_t *msg
+idmef_criterion_value_t **cv, const char *regex, idmef_criterion_operator_t op
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_tool_alert_write</NAME>
+<NAME>idmef_criterion_value_new_value</NAME>
 <RETURNS>int </RETURNS>
-idmef_tool_alert_t *tool_alert, prelude_msgbuf_t *msg
+idmef_criterion_value_t **cv, idmef_value_t *value,idmef_criterion_operator_t op
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_correlation_alert_write</NAME>
+<NAME>idmef_criterion_value_new_from_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_correlation_alert_t *correlation_alert, prelude_msgbuf_t *msg
+idmef_criterion_value_t **cv, idmef_path_t *path,const char *value, idmef_criterion_operator_t op
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_overflow_alert_write</NAME>
+<NAME>idmef_criterion_value_new_broken_down_time</NAME>
 <RETURNS>int </RETURNS>
-idmef_overflow_alert_t *overflow_alert, prelude_msgbuf_t *msg
+idmef_criterion_value_t **cv, const char *time, idmef_criterion_operator_t op
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_alert_write</NAME>
+<NAME>idmef_criterion_value_clone</NAME>
 <RETURNS>int </RETURNS>
-idmef_alert_t *alert, prelude_msgbuf_t *msg
+const idmef_criterion_value_t *src, idmef_criterion_value_t **dst
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_heartbeat_write</NAME>
+<NAME>idmef_criterion_value_destroy</NAME>
+<RETURNS>void </RETURNS>
+idmef_criterion_value_t *value
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_value_print</NAME>
 <RETURNS>int </RETURNS>
-idmef_heartbeat_t *heartbeat, prelude_msgbuf_t *msg
+idmef_criterion_value_t *value, prelude_io_t *fd
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_message_write</NAME>
+<NAME>idmef_criterion_value_to_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_message_t *message, prelude_msgbuf_t *msg
+idmef_criterion_value_t *value, prelude_string_t *out
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_value_match</NAME>
+<RETURNS>int </RETURNS>
+idmef_criterion_value_t *cv, idmef_value_t *value, idmef_criterion_operator_t op
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_value_get_value</NAME>
+<RETURNS>const idmef_value_t *</RETURNS>
+idmef_criterion_value_t *cv
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_value_get_regex</NAME>
+<RETURNS>const char *</RETURNS>
+idmef_criterion_value_t *cv
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_value_get_broken_down_time</NAME>
+<RETURNS>const struct tm *</RETURNS>
+idmef_criterion_value_t *cv
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_value_get_type</NAME>
+<RETURNS>idmef_criterion_value_type_t </RETURNS>
+idmef_criterion_value_t *cv
 </FUNCTION>
 <TYPEDEF>
 <NAME>prelude_io_t</NAME>
@@ -676,64 +1199,359 @@ prelude_io_t *pio
 <RETURNS>prelude_bool_t </RETURNS>
 prelude_io_t *pio, int error
 </FUNCTION>
+<FUNCTION>
+<NAME>prelude_thread_init</NAME>
+<RETURNS>int </RETURNS>
+void *nil
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_set_value</NAME>
+<RETURNS>int </RETURNS>
+idmef_message_t *message, const char *path, idmef_value_t *value
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_get_value</NAME>
+<RETURNS>int </RETURNS>
+idmef_message_t *message, const char *path, idmef_value_t **value
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_set_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_message_t *message, const char *path, const char *value
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_get_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_message_t *message, const char *path, char **result
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_set_number</NAME>
+<RETURNS>int </RETURNS>
+idmef_message_t *message, const char *path, double number
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_get_number</NAME>
+<RETURNS>int </RETURNS>
+idmef_message_t *message, const char *path, double *result
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_set_data</NAME>
+<RETURNS>int </RETURNS>
+idmef_message_t *message, const char *path, const unsigned char *data, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_get_data</NAME>
+<RETURNS>int </RETURNS>
+idmef_message_t *message, const char *path, unsigned char **data, size_t *size
+</FUNCTION>
 <TYPEDEF>
-<NAME>prelude_failover_t</NAME>
-typedef struct prelude_failover prelude_failover_t;
+<NAME>prelude_string_t</NAME>
+typedef struct prelude_string prelude_string_t;
 </TYPEDEF>
 <FUNCTION>
-<NAME>prelude_failover_destroy</NAME>
+<NAME>prelude_string_new</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t **string
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_new_nodup</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t **string, char *str
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_new_ref</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t **string, const char *str
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_new_dup</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t **string, const char *str
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_new_dup_fast</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t **string, const char *str, size_t len
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_destroy</NAME>
 <RETURNS>void </RETURNS>
-prelude_failover_t *failover
+prelude_string_t *string
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_new</NAME>
+<NAME>prelude_string_destroy_internal</NAME>
+<RETURNS>void </RETURNS>
+prelude_string_t *string
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_new_nodup_fast</NAME>
 <RETURNS>int </RETURNS>
-prelude_failover_t **ret, const char *dirname
+prelude_string_t **string, char *str, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_set_quota</NAME>
+<NAME>prelude_string_new_ref_fast</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t **string, const char *str, size_t len
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_set_dup_fast</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t *string, const char *buf, size_t len
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_set_dup</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t *string, const char *buf
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_set_nodup_fast</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t *string, char *buf, size_t len
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_set_nodup</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t *string, char *buf
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_set_ref_fast</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t *string, const char *buf, size_t len
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_set_ref</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t *string, const char *buf
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_copy_ref</NAME>
+<RETURNS>int </RETURNS>
+const prelude_string_t *src, prelude_string_t *dst
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_copy_dup</NAME>
+<RETURNS>int </RETURNS>
+const prelude_string_t *src, prelude_string_t *dst
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_ref</NAME>
+<RETURNS>prelude_string_t *</RETURNS>
+prelude_string_t *string
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_clone</NAME>
+<RETURNS>int </RETURNS>
+const prelude_string_t *src, prelude_string_t **dst
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_get_len</NAME>
+<RETURNS>size_t </RETURNS>
+const prelude_string_t *string
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_get_string_or_default</NAME>
+<RETURNS>const char *</RETURNS>
+const prelude_string_t *string, const char *def
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_get_string</NAME>
+<RETURNS>const char *</RETURNS>
+const prelude_string_t *string
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_get_string_released</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t *string, char **outptr
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_is_empty</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const prelude_string_t *string
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_string_clear</NAME>
 <RETURNS>void </RETURNS>
-prelude_failover_t *failover, size_t limit
+prelude_string_t *string
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_save_msg</NAME>
+<NAME>prelude_string_cat</NAME>
 <RETURNS>int </RETURNS>
-prelude_failover_t *failover, prelude_msg_t *msg
+prelude_string_t *dst, const char *str
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_get_saved_msg</NAME>
-<RETURNS>ssize_t </RETURNS>
-prelude_failover_t *failover, prelude_msg_t **out
+<NAME>prelude_string_ncat</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t *dst, const char *str, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_get_deleted_msg_count</NAME>
-<RETURNS>unsigned long </RETURNS>
-prelude_failover_t *failover
+<NAME>prelude_string_sprintf</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t *string, const char *fmt, ...
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_get_available_msg_count</NAME>
-<RETURNS>unsigned long </RETURNS>
-prelude_failover_t *failover
+<NAME>prelude_string_vprintf</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t *string, const char *fmt, va_list ap
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_enable_transaction</NAME>
+<NAME>prelude_string_compare</NAME>
+<RETURNS>int </RETURNS>
+const prelude_string_t *str1, const prelude_string_t *str2
+</FUNCTION>
+<MACRO>
+<NAME>prelude_string_set_constant</NAME>
+#define prelude_string_set_constant(string, str)                         \
+        prelude_string_set_ref_fast((string), (str), strlen((str)))
+</MACRO>
+<MACRO>
+<NAME>prelude_string_new_constant</NAME>
+#define prelude_string_new_constant(string, str)                         \
+        prelude_string_new_ref_fast((string), (str), strlen((str)))
+</MACRO>
+<TYPEDEF>
+<NAME>prelude_uid_t</NAME>
+typedef uid_t prelude_uid_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>prelude_uid_t</NAME>
+typedef int prelude_uid_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>prelude_gid_t</NAME>
+typedef gid_t prelude_gid_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>prelude_gid_t</NAME>
+typedef int prelude_gid_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>prelude_client_profile_t</NAME>
+typedef struct prelude_client_profile prelude_client_profile_t;
+</TYPEDEF>
+<FUNCTION>
+<NAME>prelude_client_profile_new</NAME>
+<RETURNS>int </RETURNS>
+prelude_client_profile_t **ret, const char *name
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_ref</NAME>
+<RETURNS>prelude_client_profile_t *</RETURNS>
+prelude_client_profile_t *cp
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_destroy</NAME>
 <RETURNS>void </RETURNS>
-prelude_failover_t *failover
+prelude_client_profile_t *cp
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_disable_transaction</NAME>
+<NAME>prelude_client_profile_get_config_filename</NAME>
 <RETURNS>void </RETURNS>
-prelude_failover_t *failover
+const prelude_client_profile_t *cp, char *buf, size_t size
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_commit</NAME>
+<NAME>prelude_client_profile_get_default_config_dirname</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_analyzerid_filename</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_tls_key_filename</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_tls_server_ca_cert_filename</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_tls_server_keycert_filename</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_tls_server_crl_filename</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_tls_client_keycert_filename</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_tls_client_trusted_cert_filename</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_backup_dirname</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_profile_dirname</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_set_uid</NAME>
+<RETURNS>void </RETURNS>
+prelude_client_profile_t *cp, prelude_uid_t uid
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_uid</NAME>
+<RETURNS>prelude_uid_t </RETURNS>
+const prelude_client_profile_t *cp
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_set_gid</NAME>
+<RETURNS>void </RETURNS>
+prelude_client_profile_t *cp, prelude_uid_t gid
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_gid</NAME>
+<RETURNS>prelude_gid_t </RETURNS>
+const prelude_client_profile_t *cp
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_set_name</NAME>
 <RETURNS>int </RETURNS>
-prelude_failover_t *failover, prelude_msg_t *msg
+prelude_client_profile_t *cp, const char *name
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_rollback</NAME>
+<NAME>prelude_client_profile_get_name</NAME>
+<RETURNS>const char *</RETURNS>
+const prelude_client_profile_t *cp
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_analyzerid</NAME>
+<RETURNS>uint64_t </RETURNS>
+const prelude_client_profile_t *cp
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_set_analyzerid</NAME>
+<RETURNS>void </RETURNS>
+prelude_client_profile_t *cp, uint64_t analyzerid
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_credentials</NAME>
 <RETURNS>int </RETURNS>
-prelude_failover_t *failover, prelude_msg_t *msg
+prelude_client_profile_t *cp, void **credentials
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_set_prefix</NAME>
+<RETURNS>int </RETURNS>
+prelude_client_profile_t *cp, const char *prefix
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_profile_get_prefix</NAME>
+<RETURNS>void </RETURNS>
+const prelude_client_profile_t *cp, char *buf, size_t size
 </FUNCTION>
 <ENUM>
 <NAME>prelude_option_type_t</NAME>
@@ -1056,1500 +1874,657 @@ prelude_option_t *parent, const char *name,prelude_option_type_t type, prelude_b
 <RETURNS>prelude_option_context_t *</RETURNS>
 prelude_option_t *opt, const char *name
 </FUNCTION>
-<MACRO>
-<NAME>PRELUDE_INT8_MIN</NAME>
-#define PRELUDE_INT8_MIN               (-128)
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_INT16_MIN</NAME>
-#define PRELUDE_INT16_MIN              (-32767 - 1)
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_INT32_MIN</NAME>
-#define PRELUDE_INT32_MIN              (-2147483647 - 1)
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_INT64_MIN</NAME>
-#define PRELUDE_INT64_MIN              (-__PRELUDE_INT64_SUFFIX(9223372036854775807) - 1)
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_INT8_MAX</NAME>
-#define PRELUDE_INT8_MAX               (127)
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_INT16_MAX</NAME>
-#define PRELUDE_INT16_MAX              (32767)
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_INT32_MAX</NAME>
-#define PRELUDE_INT32_MAX              (2147483647)
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_INT64_MAX</NAME>
-#define PRELUDE_INT64_MAX              (__PRELUDE_INT64_SUFFIX(9223372036854775807))
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_UINT8_MAX</NAME>
-#define PRELUDE_UINT8_MAX              (255)
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_UINT16_MAX</NAME>
-#define PRELUDE_UINT16_MAX             (65535)
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_UINT32_MAX</NAME>
-#define PRELUDE_UINT32_MAX             (4294967295U)
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_UINT64_MAX</NAME>
-#define PRELUDE_UINT64_MAX             (__PRELUDE_UINT64_SUFFIX(18446744073709551615))
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_INTMAX_MIN</NAME>
-#define PRELUDE_INTMAX_MIN             INT64_MIN
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_INTMAX_MAX</NAME>
-#define PRELUDE_INTMAX_MAX             INT64_MAX
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_UINTMAX_MAX</NAME>
-#define PRELUDE_UINTMAX_MAX            UINT64_MAX
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRId64</NAME>
-#define PRELUDE_PRId64      __PRELUDE_64BIT_FORMAT_PREFIX "d"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIi64</NAME>
-#define PRELUDE_PRIi64      __PRELUDE_64BIT_FORMAT_PREFIX "i"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIo64</NAME>
-#define PRELUDE_PRIo64      __PRELUDE_64BIT_FORMAT_PREFIX "o"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIx64</NAME>
-#define PRELUDE_PRIx64      __PRELUDE_64BIT_FORMAT_PREFIX "x"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIX64</NAME>
-#define PRELUDE_PRIX64      __PRELUDE_64BIT_FORMAT_PREFIX "X"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIu64</NAME>
-#define PRELUDE_PRIu64      __PRELUDE_64BIT_FORMAT_PREFIX "u"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRId32</NAME>
-#define PRELUDE_PRId32      "d"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIi32</NAME>
-#define PRELUDE_PRIi32      "i"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIo32</NAME>
-#define PRELUDE_PRIo32      "o"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIx32</NAME>
-#define PRELUDE_PRIx32      "x"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIX32</NAME>
-#define PRELUDE_PRIX32      "X"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIu32</NAME>
-#define PRELUDE_PRIu32      "u"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRId16</NAME>
-#define PRELUDE_PRId16      "d"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIi16</NAME>
-#define PRELUDE_PRIi16      "i"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIo16</NAME>
-#define PRELUDE_PRIo16      "o"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIx16</NAME>
-#define PRELUDE_PRIx16      "x"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIX16</NAME>
-#define PRELUDE_PRIX16      "X"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIu16</NAME>
-#define PRELUDE_PRIu16      "u"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRId8</NAME>
-#define PRELUDE_PRId8       "d"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIi8</NAME>
-#define PRELUDE_PRIi8       "i"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIo8</NAME>
-#define PRELUDE_PRIo8       "o"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIx8</NAME>
-#define PRELUDE_PRIx8       "x"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIX8</NAME>
-#define PRELUDE_PRIX8       "X"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_PRIu8</NAME>
-#define PRELUDE_PRIu8       "u"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_SCNd64</NAME>
-#define PRELUDE_SCNd64      __PRELUDE_64BIT_FORMAT_PREFIX "d"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_SCNi64</NAME>
-#define PRELUDE_SCNi64      __PRELUDE_64BIT_FORMAT_PREFIX "i"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_SCNo64</NAME>
-#define PRELUDE_SCNo64      __PRELUDE_64BIT_FORMAT_PREFIX "o"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_SCNx64</NAME>
-#define PRELUDE_SCNx64      __PRELUDE_64BIT_FORMAT_PREFIX "x"
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_SCNu64</NAME>
-#define PRELUDE_SCNu64      __PRELUDE_64BIT_FORMAT_PREFIX "u"
-</MACRO>
-<ENUM>
-<NAME>prelude_bool_t</NAME>
-typedef enum { 
-	PRELUDE_BOOL_TRUE = TRUE, 
-	PRELUDE_BOOL_FALSE = FALSE 
-} prelude_bool_t;
-</ENUM>
-<TYPEDEF>
-<NAME>int8_t</NAME>
- typedef signed char int8_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>uint8_t</NAME>
- typedef unsigned char uint8_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>int16_t</NAME>
- typedef short int16_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>uint16_t</NAME>
- typedef unsigned short uint16_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>int32_t</NAME>
- typedef int int32_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>uint32_t</NAME>
- typedef unsigned int uint32_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>int64_t</NAME>
-  typedef long int64_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>uint64_t</NAME>
-  typedef unsigned long uint64_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>int64_t</NAME>
-  typedef long long int64_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>uint64_t</NAME>
-  typedef unsigned long long uint64_t;
-</TYPEDEF>
 <FUNCTION>
-<NAME>idmef_additional_data_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t *additional_data, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_reference_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_reference_t *reference, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_classification_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_classification_t *classification, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_user_id_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_user_id_t *user_id, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_user_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_user_t *user, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_address_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_address_t *address, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_process_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_process_t *process, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_web_service_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_web_service_t *web_service, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_snmp_service_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_snmp_service_t *snmp_service, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_service_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_service_t *service, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_node_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_node_t *node, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_source_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_source_t *source, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_file_access_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_file_access_t *file_access, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_inode_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_inode_t *inode, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_checksum_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_checksum_t *checksum, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_file_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_file_t *file, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_linkage_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_linkage_t *linkage, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_target_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_target_t *target, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_analyzer_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_analyzer_t *analyzer, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_alertident_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_alertident_t *alertident, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_impact_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_impact_t *impact, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_action_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_action_t *action, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_confidence_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_confidence_t *confidence, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_assessment_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_assessment_t *assessment, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_tool_alert_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_tool_alert_t *tool_alert, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_correlation_alert_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_correlation_alert_t *correlation_alert, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_overflow_alert_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_overflow_alert_t *overflow_alert, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_alert_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_alert_t *alert, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_heartbeat_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_heartbeat_t *heartbeat, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_message_read</NAME>
-<RETURNS>int </RETURNS>
-idmef_message_t *message, prelude_msg_t *msg
-</FUNCTION>
-<TYPEDEF>
-<NAME>idmef_value_t</NAME>
-typedef struct idmef_value idmef_value_t;
-</TYPEDEF>
-<FUNCTION>
-<NAME>idmef_value_new_int8</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, int8_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_uint8</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, uint8_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_int16</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, int16_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_uint16</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, uint16_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_int32</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, int32_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_uint32</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, uint32_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_int64</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, int64_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_uint64</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, uint64_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_float</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, float val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_double</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, double val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_string</NAME>
+<NAME>idmef_additional_data_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, prelude_string_t *string
+idmef_additional_data_t *additional_data, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_time</NAME>
+<NAME>idmef_reference_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_time_t *time
+idmef_reference_t *reference, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_data</NAME>
+<NAME>idmef_classification_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_data_t *data
+idmef_classification_t *classification, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_class</NAME>
+<NAME>idmef_user_id_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_class_id_t classid, void *ptr
+idmef_user_id_t *user_id, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_list</NAME>
+<NAME>idmef_user_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value
+idmef_user_t *user, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_enum</NAME>
+<NAME>idmef_address_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_class_id_t classid, const char *buf
+idmef_address_t *address, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_enum_from_string</NAME>
+<NAME>idmef_process_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_class_id_t classid, const char *buf
+idmef_process_t *process, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_enum_from_numeric</NAME>
+<NAME>idmef_web_service_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_class_id_t classid, int val
+idmef_web_service_t *web_service, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_int8</NAME>
+<NAME>idmef_snmp_service_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, int8_t val
+idmef_snmp_service_t *snmp_service, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_uint8</NAME>
+<NAME>idmef_service_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, uint8_t val
+idmef_service_t *service, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_int16</NAME>
+<NAME>idmef_node_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, int16_t val
+idmef_node_t *node, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_uint16</NAME>
+<NAME>idmef_source_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, uint16_t val
+idmef_source_t *source, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_int32</NAME>
+<NAME>idmef_file_access_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, int32_t val
+idmef_file_access_t *file_access, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_uint32</NAME>
+<NAME>idmef_inode_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, uint32_t val
+idmef_inode_t *inode, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_int64</NAME>
+<NAME>idmef_checksum_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, int64_t val
+idmef_checksum_t *checksum, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_uint64</NAME>
+<NAME>idmef_file_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, uint64_t val
+idmef_file_t *file, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_float</NAME>
+<NAME>idmef_linkage_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, float val
+idmef_linkage_t *linkage, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_double</NAME>
+<NAME>idmef_target_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, double val
+idmef_target_t *target, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_string</NAME>
+<NAME>idmef_analyzer_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, prelude_string_t *string
+idmef_analyzer_t *analyzer, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_time</NAME>
+<NAME>idmef_alertident_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_time_t *time
+idmef_alertident_t *alertident, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_data</NAME>
+<NAME>idmef_impact_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_data_t *data
+idmef_impact_t *impact, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_enum</NAME>
+<NAME>idmef_action_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_class_id_t classid, const char *buf
+idmef_action_t *action, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_enum_from_string</NAME>
+<NAME>idmef_confidence_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_class_id_t classid, const char *buf
+idmef_confidence_t *confidence, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_enum_from_numeric</NAME>
+<NAME>idmef_assessment_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_class_id_t classid, int no
+idmef_assessment_t *assessment, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_set_class</NAME>
+<NAME>idmef_tool_alert_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_class_id_t classid, void *ptr
+idmef_tool_alert_t *tool_alert, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new</NAME>
+<NAME>idmef_correlation_alert_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_value_type_id_t type, void *ptr
+idmef_correlation_alert_t *correlation_alert, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_from_path</NAME>
+<NAME>idmef_overflow_alert_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_path_t *path, const char *buf
+idmef_overflow_alert_t *overflow_alert, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_from_string</NAME>
+<NAME>idmef_alert_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_value_type_id_t type, const char *buf
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_int8</NAME>
-<RETURNS>int8_t </RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_uint8</NAME>
-<RETURNS>uint8_t </RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_int16</NAME>
-<RETURNS>int16_t </RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_uint16</NAME>
-<RETURNS>uint16_t </RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_int32</NAME>
-<RETURNS>int32_t </RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_uint32</NAME>
-<RETURNS>uint32_t </RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_int64</NAME>
-<RETURNS>int64_t </RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_uint64</NAME>
-<RETURNS>uint64_t </RETURNS>
-const idmef_value_t *val
+idmef_alert_t *alert, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get_enum</NAME>
+<NAME>idmef_heartbeat_write</NAME>
 <RETURNS>int </RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_float</NAME>
-<RETURNS>float </RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_double</NAME>
-<RETURNS>double </RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_time</NAME>
-<RETURNS>idmef_time_t *</RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_data</NAME>
-<RETURNS>idmef_data_t *</RETURNS>
-const idmef_value_t *val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_string</NAME>
-<RETURNS>prelude_string_t *</RETURNS>
-const idmef_value_t *val
+idmef_heartbeat_t *heartbeat, prelude_msgbuf_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_list_add</NAME>
+<NAME>idmef_message_write</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t *list, idmef_value_t *item
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_is_list</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const idmef_value_t *list
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_list_is_empty</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const idmef_value_t *list
+idmef_message_t *message, prelude_msgbuf_t *msg
 </FUNCTION>
+<ENUM>
+<NAME>prelude_log_t</NAME>
+typedef enum {
+        PRELUDE_LOG_CRIT  = -1,
+        PRELUDE_LOG_ERR   =  0,
+        PRELUDE_LOG_WARN  =  1,
+        PRELUDE_LOG_INFO  =  2,
+        PRELUDE_LOG_DEBUG  = 3
+} prelude_log_t;
+</ENUM>
+<ENUM>
+<NAME>prelude_log_flags_t</NAME>
+typedef enum {
+        PRELUDE_LOG_FLAGS_QUIET  = 0x01, /* Drop PRELUDE_LOG_PRIORITY_INFO */
+        PRELUDE_LOG_FLAGS_SYSLOG = 0x02
+} prelude_log_flags_t;
+</ENUM>
+<MACRO>
+<NAME>prelude_log</NAME>
+#define prelude_log(level, ...) \
+        _prelude_log(level, __FILE__, __PRELUDE_FUNC__, __LINE__, __VA_ARGS__)
+</MACRO>
+<MACRO>
+<NAME>prelude_log_debug</NAME>
+#define prelude_log_debug(level, ...) \
+        _prelude_log(PRELUDE_LOG_DEBUG + level, __FILE__, __PRELUDE_FUNC__, __LINE__, __VA_ARGS__)
+</MACRO>
 <FUNCTION>
-<NAME>idmef_value_have_own_data</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value
+<NAME>prelude_log</NAME>
+<RETURNS>void </RETURNS>
+prelude_log_t level, const char *fmt, ...
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_dont_have_own_data</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value
+<NAME>prelude_log_debug</NAME>
+<RETURNS>void </RETURNS>
+prelude_log_t level, const char *fmt, ...
 </FUNCTION>
+<MACRO>
+<NAME>prelude_log_v</NAME>
+#define prelude_log_v(level, fmt, ap) \
+        _prelude_log_v(level, __FILE__, __PRELUDE_FUNC__, __LINE__, fmt, ap)
+</MACRO>
+<MACRO>
+<NAME>prelude_log_debug_v</NAME>
+#define prelude_log_debug_v(level, fmt, ap) \
+        _prelude_log_v(PRELUDE_LOG_DEBUG + level, __FILE__, __PRELUDE_FUNC__, __LINE__, fmt, ap)
+</MACRO>
 <FUNCTION>
-<NAME>idmef_value_get_type</NAME>
-<RETURNS>idmef_value_type_id_t </RETURNS>
-const idmef_value_t *value
+<NAME>prelude_log_set_level</NAME>
+<RETURNS>void </RETURNS>
+prelude_log_t level
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get_class</NAME>
-<RETURNS>idmef_class_id_t </RETURNS>
-const idmef_value_t *value
+<NAME>prelude_log_set_debug_level</NAME>
+<RETURNS>void </RETURNS>
+int level
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get_object</NAME>
-<RETURNS>void *</RETURNS>
-const idmef_value_t *value
+<NAME>prelude_log_get_flags</NAME>
+<RETURNS>prelude_log_flags_t </RETURNS>
+void
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_iterate</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *value, int (*callback)(idmef_value_t *ptr, void *extra), void *extra
+<NAME>prelude_log_set_flags</NAME>
+<RETURNS>void </RETURNS>
+prelude_log_flags_t flags
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_iterate_reversed</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *value, int (*callback)(idmef_value_t *ptr, void *extra), void *extra
+<NAME>prelude_log_get_prefix</NAME>
+<RETURNS>char *</RETURNS>
+void
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get_nth</NAME>
-<RETURNS>idmef_value_t *</RETURNS>
-const idmef_value_t *val, int n
+<NAME>prelude_log_set_prefix</NAME>
+<RETURNS>void </RETURNS>
+char *prefix
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get_count</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *val
+<NAME>prelude_log_set_callback</NAME>
+<RETURNS>void </RETURNS>
+void log_cb(prelude_log_t level, const char *str)
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_clone</NAME>
+<NAME>prelude_log_set_logfile</NAME>
 <RETURNS>int </RETURNS>
-const idmef_value_t *val, idmef_value_t **dst
+const char *filename
 </FUNCTION>
+<TYPEDEF>
+<NAME>prelude_failover_t</NAME>
+typedef struct prelude_failover prelude_failover_t;
+</TYPEDEF>
 <FUNCTION>
-<NAME>idmef_value_ref</NAME>
-<RETURNS>idmef_value_t *</RETURNS>
-idmef_value_t *val
+<NAME>prelude_failover_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_failover_t *failover
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_print</NAME>
+<NAME>prelude_failover_new</NAME>
 <RETURNS>int </RETURNS>
-const idmef_value_t *val, prelude_io_t *fd
+prelude_failover_t **ret, const char *dirname
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_to_string</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *val, prelude_string_t *out
+<NAME>prelude_failover_set_quota</NAME>
+<RETURNS>void </RETURNS>
+prelude_failover_t *failover, size_t limit
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get</NAME>
+<NAME>prelude_failover_save_msg</NAME>
 <RETURNS>int </RETURNS>
-const idmef_value_t *val, void *res
+prelude_failover_t *failover, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_match</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *val1, idmef_value_t *val2, idmef_criterion_operator_t op
+<NAME>prelude_failover_get_saved_msg</NAME>
+<RETURNS>ssize_t </RETURNS>
+prelude_failover_t *failover, prelude_msg_t **out
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_check_operator</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *value, idmef_criterion_operator_t op
+<NAME>prelude_failover_get_deleted_msg_count</NAME>
+<RETURNS>unsigned long </RETURNS>
+prelude_failover_t *failover
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get_applicable_operators</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *value, idmef_criterion_operator_t *result
+<NAME>prelude_failover_get_available_msg_count</NAME>
+<RETURNS>unsigned long </RETURNS>
+prelude_failover_t *failover
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_destroy</NAME>
+<NAME>prelude_failover_enable_transaction</NAME>
 <RETURNS>void </RETURNS>
-idmef_value_t *val
-</FUNCTION>
-<TYPEDEF>
-<NAME>idmef_time_t</NAME>
-typedef struct idmef_time idmef_time_t;
-</TYPEDEF>
-<FUNCTION>
-<NAME>idmef_time_ref</NAME>
-<RETURNS>idmef_time_t *</RETURNS>
-idmef_time_t *time
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_new</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t **time
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_new_from_time</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t **time, const time_t *t
+prelude_failover_t *failover
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_new_from_gettimeofday</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t **time
+<NAME>prelude_failover_disable_transaction</NAME>
+<RETURNS>void </RETURNS>
+prelude_failover_t *failover
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_new_from_string</NAME>
+<NAME>prelude_failover_commit</NAME>
 <RETURNS>int </RETURNS>
-idmef_time_t **time, const char *buf
+prelude_failover_t *failover, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_new_from_ntpstamp</NAME>
+<NAME>prelude_failover_rollback</NAME>
 <RETURNS>int </RETURNS>
-idmef_time_t **time, const char *buf
+prelude_failover_t *failover, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_new_from_timeval</NAME>
+<NAME>idmef_additional_data_new_real</NAME>
 <RETURNS>int </RETURNS>
-idmef_time_t **time, const struct timeval *tv
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_set_from_time</NAME>
-<RETURNS>void </RETURNS>
-idmef_time_t *time, const time_t *t
+idmef_additional_data_t **ret, float data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_set_from_gettimeofday</NAME>
+<NAME>idmef_additional_data_new_byte</NAME>
 <RETURNS>int </RETURNS>
-idmef_time_t *time
+idmef_additional_data_t **ret, uint8_t byte
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_set_from_string</NAME>
+<NAME>idmef_additional_data_new_integer</NAME>
 <RETURNS>int </RETURNS>
-idmef_time_t *time, const char *buf
+idmef_additional_data_t **ret, uint32_t data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_set_from_ntpstamp</NAME>
+<NAME>idmef_additional_data_new_boolean</NAME>
 <RETURNS>int </RETURNS>
-idmef_time_t *time, const char *buf
+idmef_additional_data_t **ret, prelude_bool_t data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_set_from_timeval</NAME>
+<NAME>idmef_additional_data_new_character</NAME>
 <RETURNS>int </RETURNS>
-idmef_time_t *time, const struct timeval *tv
+idmef_additional_data_t **ret, char data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_destroy_internal</NAME>
+<NAME>idmef_additional_data_set_real</NAME>
 <RETURNS>void </RETURNS>
-idmef_time_t *time
+idmef_additional_data_t *ptr, float data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_destroy</NAME>
+<NAME>idmef_additional_data_set_byte</NAME>
 <RETURNS>void </RETURNS>
-idmef_time_t *time
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_clone</NAME>
-<RETURNS>int </RETURNS>
-const idmef_time_t *src, idmef_time_t **dst
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_copy</NAME>
-<RETURNS>int </RETURNS>
-const idmef_time_t *src, idmef_time_t *dst
+idmef_additional_data_t *ptr, uint8_t byte
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_set_sec</NAME>
+<NAME>idmef_additional_data_set_integer</NAME>
 <RETURNS>void </RETURNS>
-idmef_time_t *time, uint32_t sec
+idmef_additional_data_t *ptr, uint32_t data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_set_usec</NAME>
+<NAME>idmef_additional_data_set_boolean</NAME>
 <RETURNS>void </RETURNS>
-idmef_time_t *time, uint32_t usec
+idmef_additional_data_t *ptr, prelude_bool_t data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_set_gmt_offset</NAME>
+<NAME>idmef_additional_data_set_character</NAME>
 <RETURNS>void </RETURNS>
-idmef_time_t *time, int32_t gmtoff
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_get_sec</NAME>
-<RETURNS>uint32_t </RETURNS>
-const idmef_time_t *time
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_get_usec</NAME>
-<RETURNS>uint32_t </RETURNS>
-const idmef_time_t *time
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_get_gmt_offset</NAME>
-<RETURNS>int32_t </RETURNS>
-const idmef_time_t *time
+idmef_additional_data_t *ptr, char data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_to_string</NAME>
+<NAME>idmef_additional_data_new_byte_string_ref</NAME>
 <RETURNS>int </RETURNS>
-const idmef_time_t *time, prelude_string_t *out
+idmef_additional_data_t **ad, const unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_to_ntpstamp</NAME>
+<NAME>idmef_additional_data_set_byte_string_ref</NAME>
 <RETURNS>int </RETURNS>
-const idmef_time_t *time, prelude_string_t *out
+idmef_additional_data_t *ad, const unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_compare</NAME>
+<NAME>idmef_additional_data_new_byte_string_dup</NAME>
 <RETURNS>int </RETURNS>
-const idmef_time_t *time1, const idmef_time_t *time2
-</FUNCTION>
-<ENUM>
-<NAME>prelude_connection_permission_t</NAME>
-typedef enum {
-        PRELUDE_CONNECTION_PERMISSION_IDMEF_READ      = 0x01, /* client might read received IDMEF message */
-        PRELUDE_CONNECTION_PERMISSION_ADMIN_READ      = 0x02, /* client might read received ADMIN message */
-        PRELUDE_CONNECTION_PERMISSION_IDMEF_WRITE     = 0x04, /* client might send IDMEF message          */
-        PRELUDE_CONNECTION_PERMISSION_ADMIN_WRITE     = 0x08  /* client might issue OPTION request        */
-} prelude_connection_permission_t;
-</ENUM>
-<ENUM>
-<NAME>prelude_connection_state_t</NAME>
-typedef enum {
-        PRELUDE_CONNECTION_STATE_ESTABLISHED     = 0x01
-} prelude_connection_state_t;
-</ENUM>
-<TYPEDEF>
-<NAME>prelude_connection_t</NAME>
-typedef struct prelude_connection prelude_connection_t;
-</TYPEDEF>
-<FUNCTION>
-<NAME>prelude_connection_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_t *conn
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_ref</NAME>
-<RETURNS>prelude_connection_t *</RETURNS>
-prelude_connection_t *conn
+idmef_additional_data_t **ad, const unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_send</NAME>
+<NAME>idmef_additional_data_set_byte_string_dup</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_t *cnx, prelude_msg_t *msg
+idmef_additional_data_t *ad, const unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_recv</NAME>
+<NAME>idmef_additional_data_new_byte_string_nodup</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_t *cnx, prelude_msg_t **outmsg
+idmef_additional_data_t **ad, unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_recv_idmef</NAME>
+<NAME>idmef_additional_data_set_byte_string_nodup</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_t *con, idmef_message_t **idmef
+idmef_additional_data_t *ad, unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_connect</NAME>
+<NAME>idmef_additional_data_copy_ref</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_t *cnx,prelude_client_profile_t *profile,prelude_connection_permission_t permission
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_forward</NAME>
-<RETURNS>ssize_t </RETURNS>
-prelude_connection_t *cnx, prelude_io_t *src, size_t count
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_get_local_addr</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_connection_t *cnx
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_get_local_port</NAME>
-<RETURNS>unsigned int </RETURNS>
-prelude_connection_t *cnx
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_get_peer_addr</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_connection_t *cnx
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_get_peer_port</NAME>
-<RETURNS>unsigned int </RETURNS>
-prelude_connection_t *cnx
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_is_alive</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-prelude_connection_t *cnx
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_get_fd</NAME>
-<RETURNS>prelude_io_t *</RETURNS>
-prelude_connection_t *cnx
+idmef_additional_data_t *src, idmef_additional_data_t *dst
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_close</NAME>
+<NAME>idmef_additional_data_copy_dup</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_t *cnx
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_set_fd_ref</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_t *cnx, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_set_fd_nodup</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_t *cnx, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_set_state</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_t *cnx, prelude_connection_state_t state
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_get_state</NAME>
-<RETURNS>prelude_connection_state_t </RETURNS>
-prelude_connection_t *cnx
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_set_data</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_t *cnx, void *data
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_get_data</NAME>
-<RETURNS>void *</RETURNS>
-prelude_connection_t *cnx
+idmef_additional_data_t *src, idmef_additional_data_t *dst
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_get_default_socket_filename</NAME>
-<RETURNS>const char *</RETURNS>
-void
+<NAME>idmef_additional_data_get_real</NAME>
+<RETURNS>float </RETURNS>
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_get_permission</NAME>
-<RETURNS>prelude_connection_permission_t </RETURNS>
-prelude_connection_t *conn
+<NAME>idmef_additional_data_get_integer</NAME>
+<RETURNS>uint32_t </RETURNS>
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_get_peer_analyzerid</NAME>
-<RETURNS>uint64_t </RETURNS>
-prelude_connection_t *cnx
+<NAME>idmef_additional_data_get_boolean</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_set_peer_analyzerid</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_t *cnx, uint64_t analyzerid
+<NAME>idmef_additional_data_get_character</NAME>
+<RETURNS>char </RETURNS>
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_new</NAME>
-<RETURNS>int </RETURNS>
-prelude_connection_t **ret, const char *addr
+<NAME>idmef_additional_data_get_byte</NAME>
+<RETURNS>uint8_t </RETURNS>
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_new_msgbuf</NAME>
-<RETURNS>int </RETURNS>
-prelude_connection_t *connection, prelude_msgbuf_t **msgbuf
+<NAME>idmef_additional_data_get_len</NAME>
+<RETURNS>size_t </RETURNS>
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_permission_to_string</NAME>
-<RETURNS>int </RETURNS>
-prelude_connection_permission_t perm, prelude_string_t *out
+<NAME>idmef_additional_data_is_empty</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_permission_new_from_string</NAME>
+<NAME>idmef_additional_data_data_to_string</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_permission_t *out, const char *buf
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_ref</NAME>
-<RETURNS>prelude_connection_t *</RETURNS>
-prelude_connection_t *conn
+idmef_additional_data_t *ad, prelude_string_t *out
 </FUNCTION>
 <ENUM>
-<NAME>prelude_client_exit_status_t</NAME>
-typedef enum {
-        PRELUDE_CLIENT_EXIT_STATUS_SUCCESS = 0,
-        PRELUDE_CLIENT_EXIT_STATUS_FAILURE = -1
-} prelude_client_exit_status_t;
-</ENUM>
-<ENUM>
-<NAME>prelude_client_flags_t</NAME>
+<NAME>idmef_criterion_operator_t</NAME>
 typedef enum {
-        PRELUDE_CLIENT_FLAGS_ASYNC_SEND  = 0x01,
-        PRELUDE_CLIENT_FLAGS_ASYNC_TIMER = 0x02,
-        PRELUDE_CLIENT_FLAGS_HEARTBEAT   = 0x04,
-        PRELUDE_CLIENT_FLAGS_CONNECT     = 0x08,
-        PRELUDE_CLIENT_FLAGS_AUTOCONFIG  = 0x10
-} prelude_client_flags_t;
+        IDMEF_CRITERION_OPERATOR_NOT               = 0x8000,
+        IDMEF_CRITERION_OPERATOR_NOCASE            = 0x4000,
+
+        IDMEF_CRITERION_OPERATOR_EQUAL             = 0x0001,
+        IDMEF_CRITERION_OPERATOR_EQUAL_NOCASE      = IDMEF_CRITERION_OPERATOR_EQUAL|IDMEF_CRITERION_OPERATOR_NOCASE,
+        IDMEF_CRITERION_OPERATOR_NOT_EQUAL         = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_EQUAL,
+        IDMEF_CRITERION_OPERATOR_NOT_EQUAL_NOCASE  = IDMEF_CRITERION_OPERATOR_NOT_EQUAL|IDMEF_CRITERION_OPERATOR_EQUAL_NOCASE,
+
+        IDMEF_CRITERION_OPERATOR_LESSER            = 0x0002,
+        IDMEF_CRITERION_OPERATOR_LESSER_OR_EQUAL   = IDMEF_CRITERION_OPERATOR_LESSER|IDMEF_CRITERION_OPERATOR_EQUAL,
+
+        IDMEF_CRITERION_OPERATOR_GREATER           = 0x0004,
+        IDMEF_CRITERION_OPERATOR_GREATER_OR_EQUAL  = IDMEF_CRITERION_OPERATOR_GREATER|IDMEF_CRITERION_OPERATOR_EQUAL,
+
+        IDMEF_CRITERION_OPERATOR_SUBSTR            = 0x0008,
+        IDMEF_CRITERION_OPERATOR_SUBSTR_NOCASE     = IDMEF_CRITERION_OPERATOR_SUBSTR|IDMEF_CRITERION_OPERATOR_NOCASE,
+        IDMEF_CRITERION_OPERATOR_NOT_SUBSTR        = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_SUBSTR,
+        IDMEF_CRITERION_OPERATOR_NOT_SUBSTR_NOCASE = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_SUBSTR_NOCASE,
+
+        IDMEF_CRITERION_OPERATOR_REGEX             = 0x0010,
+        IDMEF_CRITERION_OPERATOR_REGEX_NOCASE      = IDMEF_CRITERION_OPERATOR_REGEX|IDMEF_CRITERION_OPERATOR_NOCASE,
+        IDMEF_CRITERION_OPERATOR_NOT_REGEX         = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_REGEX,
+        IDMEF_CRITERION_OPERATOR_NOT_REGEX_NOCASE  = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_REGEX_NOCASE,
+
+        IDMEF_CRITERION_OPERATOR_NULL              = 0x0020,
+        IDMEF_CRITERION_OPERATOR_NOT_NULL          = IDMEF_CRITERION_OPERATOR_NULL|IDMEF_CRITERION_OPERATOR_NOT
+} idmef_criterion_operator_t;
 </ENUM>
 <TYPEDEF>
-<NAME>prelude_client_t</NAME>
-typedef struct prelude_client prelude_client_t;
+<NAME>idmef_criteria_t</NAME>
+typedef struct idmef_criteria idmef_criteria_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>idmef_criterion_t</NAME>
+typedef struct idmef_criterion idmef_criterion_t;
 </TYPEDEF>
 <FUNCTION>
-<NAME>prelude_client_get_unique_ident</NAME>
-<RETURNS>prelude_ident_t *</RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_set_connection_pool</NAME>
-<RETURNS>void </RETURNS>
-prelude_client_t *client, prelude_connection_pool_t *pool
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_get_connection_pool</NAME>
-<RETURNS>prelude_connection_pool_t *</RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_start</NAME>
-<RETURNS>int </RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_init</NAME>
-<RETURNS>int </RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_new</NAME>
-<RETURNS>int </RETURNS>
-prelude_client_t **client, const char *profile
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_ref</NAME>
-<RETURNS>prelude_client_t *</RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_get_analyzer</NAME>
-<RETURNS>idmef_analyzer_t *</RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_get_flags</NAME>
-<RETURNS>prelude_client_flags_t </RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_set_required_permission</NAME>
-<RETURNS>void </RETURNS>
-prelude_client_t *client, prelude_connection_permission_t permission
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_get_required_permission</NAME>
-<RETURNS>prelude_connection_permission_t </RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_send_msg</NAME>
-<RETURNS>void </RETURNS>
-prelude_client_t *client, prelude_msg_t *msg
+<NAME>idmef_criterion_operator_to_string</NAME>
+<RETURNS>const char *</RETURNS>
+idmef_criterion_operator_t op
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_recv_msg</NAME>
+<NAME>idmef_criterion_new</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_t *client, int timeout, prelude_msg_t **msg
+idmef_criterion_t **criterion, idmef_path_t *path,idmef_criterion_value_t *value, idmef_criterion_operator_t op
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_set_heartbeat_cb</NAME>
+<NAME>idmef_criterion_destroy</NAME>
 <RETURNS>void </RETURNS>
-prelude_client_t *client, void (*cb)(prelude_client_t *client, idmef_message_t *hb)
+idmef_criterion_t *criterion
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_send_idmef</NAME>
-<RETURNS>void </RETURNS>
-prelude_client_t *client, idmef_message_t *msg
+<NAME>idmef_criteria_ref</NAME>
+<RETURNS>idmef_criteria_t *</RETURNS>
+idmef_criteria_t *criteria
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_recv_idmef</NAME>
+<NAME>idmef_criterion_clone</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_t *client, int timeout, idmef_message_t **idmef
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_client_t *client, prelude_client_exit_status_t status
+const idmef_criterion_t *criterion, idmef_criterion_t **dst
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_set_flags</NAME>
+<NAME>idmef_criterion_print</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_t *client, prelude_client_flags_t flags
+const idmef_criterion_t *criterion, prelude_io_t *fd
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_set_config_filename</NAME>
+<NAME>idmef_criterion_to_string</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_t *client, const char *filename
+const idmef_criterion_t *criterion, prelude_string_t *out
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_get_config_filename</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_client_t *client
+<NAME>idmef_criterion_get_path</NAME>
+<RETURNS>idmef_path_t *</RETURNS>
+const idmef_criterion_t *criterion
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_is_setup_needed</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-int error
+<NAME>idmef_criterion_get_value</NAME>
+<RETURNS>idmef_criterion_value_t *</RETURNS>
+const idmef_criterion_t *criterion
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_get_profile</NAME>
-<RETURNS>prelude_client_profile_t *</RETURNS>
-prelude_client_t *client
+<NAME>idmef_criterion_get_operator</NAME>
+<RETURNS>idmef_criterion_operator_t </RETURNS>
+const idmef_criterion_t *criterion
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_new_msgbuf</NAME>
+<NAME>idmef_criterion_match</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_t *client, prelude_msgbuf_t **msgbuf
+const idmef_criterion_t *criterion, idmef_message_t *message
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_handle_msg_default</NAME>
+<NAME>idmef_criteria_new</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_t *client, prelude_msg_t *msg, prelude_msgbuf_t *msgbuf
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_get_setup_error</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_client_t *client
+idmef_criteria_t **criteria
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_print_setup_error</NAME>
+<NAME>idmef_criteria_destroy</NAME>
 <RETURNS>void </RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<TYPEDEF>
-<NAME>idmef_criterion_value_t</NAME>
-typedef struct idmef_criterion_value idmef_criterion_value_t;
-</TYPEDEF>
-<ENUM>
-<NAME>idmef_criterion_value_type_t</NAME>
-typedef enum {
-        IDMEF_CRITERION_VALUE_TYPE_ERROR            = -1,
-        IDMEF_CRITERION_VALUE_TYPE_VALUE            =  0,
-        IDMEF_CRITERION_VALUE_TYPE_REGEX            =  1,
-        IDMEF_CRITERION_VALUE_TYPE_BROKEN_DOWN_TIME =  2
-} idmef_criterion_value_type_t;
-</ENUM>
-<FUNCTION>
-<NAME>idmef_criterion_value_new</NAME>
-<RETURNS>int </RETURNS>
-idmef_criterion_value_t **cv
+idmef_criteria_t *criteria
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_new_regex</NAME>
+<NAME>idmef_criteria_clone</NAME>
 <RETURNS>int </RETURNS>
-idmef_criterion_value_t **cv, const char *regex, idmef_criterion_operator_t op
+idmef_criteria_t *src, idmef_criteria_t **dst
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_new_value</NAME>
+<NAME>idmef_criteria_print</NAME>
 <RETURNS>int </RETURNS>
-idmef_criterion_value_t **cv, idmef_value_t *value,idmef_criterion_operator_t op
+const idmef_criteria_t *criteria, prelude_io_t *fd
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_new_from_string</NAME>
+<NAME>idmef_criteria_to_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_criterion_value_t **cv, idmef_path_t *path,const char *value, idmef_criterion_operator_t op
+const idmef_criteria_t *criteria, prelude_string_t *out
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_new_broken_down_time</NAME>
-<RETURNS>int </RETURNS>
-idmef_criterion_value_t **cv, const char *time, idmef_criterion_operator_t op
+<NAME>idmef_criteria_is_criterion</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const idmef_criteria_t *criteria
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_clone</NAME>
-<RETURNS>int </RETURNS>
-const idmef_criterion_value_t *src, idmef_criterion_value_t **dst
+<NAME>idmef_criteria_get_criterion</NAME>
+<RETURNS>idmef_criterion_t *</RETURNS>
+const idmef_criteria_t *criteria
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_destroy</NAME>
+<NAME>idmef_criteria_set_criterion</NAME>
 <RETURNS>void </RETURNS>
-idmef_criterion_value_t *value
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_value_print</NAME>
-<RETURNS>int </RETURNS>
-idmef_criterion_value_t *value, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_value_to_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_criterion_value_t *value, prelude_string_t *out
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_value_match</NAME>
-<RETURNS>int </RETURNS>
-idmef_criterion_value_t *cv, idmef_value_t *value, idmef_criterion_operator_t op
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_value_get_value</NAME>
-<RETURNS>const idmef_value_t *</RETURNS>
-idmef_criterion_value_t *cv
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_value_get_regex</NAME>
-<RETURNS>const char *</RETURNS>
-idmef_criterion_value_t *cv
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_value_get_broken_down_time</NAME>
-<RETURNS>const struct tm *</RETURNS>
-idmef_criterion_value_t *cv
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_value_get_type</NAME>
-<RETURNS>idmef_criterion_value_type_t </RETURNS>
-idmef_criterion_value_t *cv
-</FUNCTION>
-<TYPEDEF>
-<NAME>prelude_hash_t</NAME>
-typedef struct prelude_hash prelude_hash_t;
-</TYPEDEF>
-<FUNCTION>
-<NAME>prelude_hash_new</NAME>
-<RETURNS>int </RETURNS>
-prelude_hash_t **hash,unsigned int (*hash_func)(const void *),int (*key_cmp_func)(const void *, const void *),void (*key_destroy_func)(void *),void (*value_destroy_func)(void *)
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_hash_new2</NAME>
-<RETURNS>int </RETURNS>
-prelude_hash_t **hash, size_t size,unsigned int (*hash_func)(const void *),int (*key_cmp_func)(const void *, const void *),void (*key_destroy_func)(void *),void (*value_destroy_func)(void *)
+idmef_criteria_t *criteria, idmef_criterion_t *criterion
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_hash_destroy</NAME>
+<NAME>idmef_criteria_or_criteria</NAME>
 <RETURNS>void </RETURNS>
-prelude_hash_t *hash
+idmef_criteria_t *criteria, idmef_criteria_t *criteria2
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_hash_set</NAME>
+<NAME>idmef_criteria_and_criteria</NAME>
 <RETURNS>int </RETURNS>
-prelude_hash_t *hash, void *key, void *value
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_hash_get</NAME>
-<RETURNS>void *</RETURNS>
-prelude_hash_t *hash, const void *key
+idmef_criteria_t *criteria, idmef_criteria_t *criteria2
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_hash_elem_destroy</NAME>
+<NAME>idmef_criteria_match</NAME>
 <RETURNS>int </RETURNS>
-prelude_hash_t *hash, const void *key
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_hash_iterate</NAME>
-<RETURNS>void </RETURNS>
-prelude_hash_t *hash, void (*cb)(void *data)
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_reference_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_reference_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_classification_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_classification_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_user_id_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_user_id_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_user_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_user_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_address_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_address_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_process_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_process_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_web_service_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_web_service_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_snmp_service_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_snmp_service_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_service_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_service_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_node_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_node_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_source_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_source_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_file_access_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_file_access_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_inode_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_inode_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_checksum_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_checksum_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_file_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_file_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_linkage_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_linkage_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_target_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_target_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_analyzer_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_analyzer_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_alertident_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_alertident_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_impact_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_impact_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_action_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_action_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_confidence_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_confidence_t *ptr, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_assessment_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_assessment_t *ptr, prelude_io_t *fd
+const idmef_criteria_t *criteria, idmef_message_t *message
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_tool_alert_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_tool_alert_t *ptr, prelude_io_t *fd
+<NAME>idmef_criteria_get_or</NAME>
+<RETURNS>idmef_criteria_t *</RETURNS>
+const idmef_criteria_t *criteria
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_correlation_alert_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_correlation_alert_t *ptr, prelude_io_t *fd
+<NAME>idmef_criteria_get_and</NAME>
+<RETURNS>idmef_criteria_t *</RETURNS>
+const idmef_criteria_t *criteria
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_overflow_alert_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_overflow_alert_t *ptr, prelude_io_t *fd
+<NAME>idmef_criteria_new_from_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_criteria_t **criteria, const char *str
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_alert_print</NAME>
+<NAME>idmef_criteria_set_negation</NAME>
 <RETURNS>void </RETURNS>
-idmef_alert_t *ptr, prelude_io_t *fd
+idmef_criteria_t *criteria, prelude_bool_t negate
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_heartbeat_print</NAME>
-<RETURNS>void </RETURNS>
-idmef_heartbeat_t *ptr, prelude_io_t *fd
+<NAME>idmef_criteria_get_negation</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const idmef_criteria_t *criteria
 </FUNCTION>
-<FUNCTION>
-<NAME>idmef_message_print</NAME>
+<ENUM>
+<NAME>prelude_async_flags_t</NAME>
+typedef enum {
+        PRELUDE_ASYNC_FLAGS_TIMER   = 0x01
+} prelude_async_flags_t;
+</ENUM>
+<USER_FUNCTION>
+<NAME>prelude_async_callback_t</NAME>
 <RETURNS>void </RETURNS>
-idmef_message_t *ptr, prelude_io_t *fd
-</FUNCTION>
+void *object, void *data
+</USER_FUNCTION>
 <MACRO>
-<NAME>LIBPRELUDE_VERSION</NAME>
-#define LIBPRELUDE_VERSION "0.9.23"
+<NAME>PRELUDE_ASYNC_OBJECT</NAME>
+#define PRELUDE_ASYNC_OBJECT                   \
+        PRELUDE_LINKED_OBJECT;                 \
+        void *_async_data;                     \
+        prelude_async_callback_t _async_func
 </MACRO>
+<STRUCT>
+<NAME>prelude_async_object_t</NAME>
+typedef struct {
+        PRELUDE_ASYNC_OBJECT;
+} prelude_async_object_t;
+</STRUCT>
 <FUNCTION>
-<NAME>prelude_init</NAME>
+<NAME>prelude_async_init</NAME>
 <RETURNS>int </RETURNS>
-int *argc, char **argv
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_deinit</NAME>
-<RETURNS>void </RETURNS>
 void
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_check_version</NAME>
-<RETURNS>const char *</RETURNS>
-const char *req_version
+<NAME>prelude_async_get_flags</NAME>
+<RETURNS>prelude_async_flags_t </RETURNS>
+void
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_thread_init</NAME>
-<RETURNS>int </RETURNS>
-void *future_use
+<NAME>prelude_async_set_flags</NAME>
+<RETURNS>void </RETURNS>
+prelude_async_flags_t flags
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_fork_prepare</NAME>
+<NAME>prelude_async_add</NAME>
 <RETURNS>void </RETURNS>
-void
+prelude_async_object_t *obj
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_fork_parent</NAME>
+<NAME>prelude_async_del</NAME>
 <RETURNS>void </RETURNS>
-void
+prelude_async_object_t *obj
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_fork_child</NAME>
+<NAME>prelude_async_exit</NAME>
 <RETURNS>void </RETURNS>
 void
 </FUNCTION>
@@ -6689,558 +6664,734 @@ idmef_message_t *message
 <NAME>IDMEF_CLASS_ID_MESSAGE</NAME>
 #define IDMEF_CLASS_ID_MESSAGE 49
 </MACRO>
+<MACRO>
+<NAME>LIBPRELUDE_VERSION</NAME>
+#define LIBPRELUDE_VERSION "0.9.23.1"
+</MACRO>
+<FUNCTION>
+<NAME>prelude_init</NAME>
+<RETURNS>int </RETURNS>
+int *argc, char **argv
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_deinit</NAME>
+<RETURNS>void </RETURNS>
+void
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_check_version</NAME>
+<RETURNS>const char *</RETURNS>
+const char *req_version
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_thread_init</NAME>
+<RETURNS>int </RETURNS>
+void *future_use
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_fork_prepare</NAME>
+<RETURNS>void </RETURNS>
+void
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_fork_parent</NAME>
+<RETURNS>void </RETURNS>
+void
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_fork_child</NAME>
+<RETURNS>void </RETURNS>
+void
+</FUNCTION>
 <TYPEDEF>
-<NAME>prelude_ident_t</NAME>
-typedef struct prelude_ident prelude_ident_t;
+<NAME>idmef_path_t</NAME>
+typedef struct idmef_path idmef_path_t;
 </TYPEDEF>
 <FUNCTION>
-<NAME>prelude_ident_generate</NAME>
+<NAME>idmef_path_get</NAME>
 <RETURNS>int </RETURNS>
-prelude_ident_t *ident, prelude_string_t *out
+const idmef_path_t *path, idmef_message_t *message, idmef_value_t **ret
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_ident_inc</NAME>
-<RETURNS>uint64_t </RETURNS>
-prelude_ident_t *ident
+<NAME>idmef_path_set</NAME>
+<RETURNS>int </RETURNS>
+const idmef_path_t *path, idmef_message_t *message, idmef_value_t *value
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_ident_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_ident_t *ident
+<NAME>idmef_path_new</NAME>
+<RETURNS>int </RETURNS>
+idmef_path_t **path, const char *format, ...
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_ident_new</NAME>
+<NAME>idmef_path_new_v</NAME>
 <RETURNS>int </RETURNS>
-prelude_ident_t **ret
+idmef_path_t **path, const char *format, va_list args
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_new_real</NAME>
+<NAME>idmef_path_new_fast</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t **ret, float data
+idmef_path_t **path, const char *buffer
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_new_byte</NAME>
+<NAME>idmef_path_get_class</NAME>
+<RETURNS>idmef_class_id_t </RETURNS>
+const idmef_path_t *path, int depth
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_get_value_type</NAME>
+<RETURNS>idmef_value_type_id_t </RETURNS>
+const idmef_path_t *path, int depth
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_set_index</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t **ret, uint8_t byte
+idmef_path_t *path, unsigned int depth, unsigned int index
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_new_integer</NAME>
+<NAME>idmef_path_undefine_index</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t **ret, uint32_t data
+idmef_path_t *path, unsigned int depth
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_new_boolean</NAME>
+<NAME>idmef_path_get_index</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t **ret, prelude_bool_t data
+const idmef_path_t *path, unsigned int depth
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_new_character</NAME>
+<NAME>idmef_path_make_child</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t **ret, char data
+idmef_path_t *path, const char *child_name, unsigned int index
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_set_real</NAME>
-<RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, float data
+<NAME>idmef_path_make_parent</NAME>
+<RETURNS>int </RETURNS>
+idmef_path_t *path
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_set_byte</NAME>
+<NAME>idmef_path_destroy</NAME>
 <RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, uint8_t byte
+idmef_path_t *path
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_set_integer</NAME>
-<RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, uint32_t data
+<NAME>idmef_path_ncompare</NAME>
+<RETURNS>int </RETURNS>
+const idmef_path_t *p1, const idmef_path_t *p2, unsigned int depth
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_set_boolean</NAME>
-<RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, prelude_bool_t data
+<NAME>idmef_path_compare</NAME>
+<RETURNS>int </RETURNS>
+const idmef_path_t *p1, const idmef_path_t *p2
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_set_character</NAME>
-<RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, char data
+<NAME>idmef_path_clone</NAME>
+<RETURNS>int </RETURNS>
+const idmef_path_t *src, idmef_path_t **dst
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_new_byte_string_ref</NAME>
+<NAME>idmef_path_ref</NAME>
+<RETURNS>idmef_path_t *</RETURNS>
+idmef_path_t *path
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_get_name</NAME>
+<RETURNS>const char *</RETURNS>
+const idmef_path_t *path, int depth
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_is_ambiguous</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const idmef_path_t *path
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_has_lists</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t **ad, const unsigned char *data, size_t len
+const idmef_path_t *path
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_set_byte_string_ref</NAME>
+<NAME>idmef_path_is_list</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const idmef_path_t *path, int depth
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_get_depth</NAME>
+<RETURNS>unsigned int </RETURNS>
+const idmef_path_t *path
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_check_operator</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t *ad, const unsigned char *data, size_t len
+const idmef_path_t *path, idmef_criterion_operator_t op
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_new_byte_string_dup</NAME>
+<NAME>idmef_path_get_applicable_operators</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t **ad, const unsigned char *data, size_t len
+const idmef_path_t *path, idmef_criterion_operator_t *result
 </FUNCTION>
+<TYPEDEF>
+<NAME>idmef_value_t</NAME>
+typedef struct idmef_value idmef_value_t;
+</TYPEDEF>
 <FUNCTION>
-<NAME>idmef_additional_data_set_byte_string_dup</NAME>
+<NAME>idmef_value_new_int8</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t *ad, const unsigned char *data, size_t len
+idmef_value_t **value, int8_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_new_byte_string_nodup</NAME>
+<NAME>idmef_value_new_uint8</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t **ad, unsigned char *data, size_t len
+idmef_value_t **value, uint8_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_set_byte_string_nodup</NAME>
+<NAME>idmef_value_new_int16</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t *ad, unsigned char *data, size_t len
+idmef_value_t **value, int16_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_copy_ref</NAME>
+<NAME>idmef_value_new_uint16</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t *src, idmef_additional_data_t *dst
+idmef_value_t **value, uint16_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_copy_dup</NAME>
+<NAME>idmef_value_new_int32</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t *src, idmef_additional_data_t *dst
+idmef_value_t **value, int32_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_get_real</NAME>
-<RETURNS>float </RETURNS>
-idmef_additional_data_t *data
+<NAME>idmef_value_new_uint32</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, uint32_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_get_integer</NAME>
-<RETURNS>uint32_t </RETURNS>
-idmef_additional_data_t *data
+<NAME>idmef_value_new_int64</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, int64_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_get_boolean</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-idmef_additional_data_t *data
+<NAME>idmef_value_new_uint64</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, uint64_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_get_character</NAME>
-<RETURNS>char </RETURNS>
-idmef_additional_data_t *data
+<NAME>idmef_value_new_float</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, float val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_get_byte</NAME>
-<RETURNS>uint8_t </RETURNS>
-idmef_additional_data_t *data
+<NAME>idmef_value_new_double</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, double val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_get_len</NAME>
-<RETURNS>size_t </RETURNS>
-idmef_additional_data_t *data
+<NAME>idmef_value_new_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, prelude_string_t *string
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_is_empty</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-idmef_additional_data_t *data
+<NAME>idmef_value_new_time</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_time_t *time
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_data_to_string</NAME>
+<NAME>idmef_value_new_data</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t *ad, prelude_string_t *out
+idmef_value_t **value, idmef_data_t *data
 </FUNCTION>
-<ENUM>
-<NAME>prelude_connection_pool_flags_t</NAME>
-typedef enum {
-        PRELUDE_CONNECTION_POOL_FLAGS_RECONNECT        = 0x01,
-        PRELUDE_CONNECTION_POOL_FLAGS_FAILOVER         = 0x02
-} prelude_connection_pool_flags_t;
-</ENUM>
-<ENUM>
-<NAME>prelude_connection_pool_event_t</NAME>
-typedef enum {
-        PRELUDE_CONNECTION_POOL_EVENT_INPUT            = 0x01,
-        PRELUDE_CONNECTION_POOL_EVENT_DEAD             = 0x02,
-        PRELUDE_CONNECTION_POOL_EVENT_ALIVE            = 0x04
-} prelude_connection_pool_event_t;
-</ENUM>
-<TYPEDEF>
-<NAME>prelude_connection_pool_t</NAME>
-typedef struct prelude_connection_pool prelude_connection_pool_t;
-</TYPEDEF>
 <FUNCTION>
-<NAME>prelude_connection_pool_broadcast</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool, prelude_msg_t *msg
+<NAME>idmef_value_new_class</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_class_id_t classid, void *ptr
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_broadcast_async</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool, prelude_msg_t *msg
+<NAME>idmef_value_new_list</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_init</NAME>
+<NAME>idmef_value_new_enum</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool
+idmef_value_t **value, idmef_class_id_t classid, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_new</NAME>
+<NAME>idmef_value_new_enum_from_string</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t **ret,prelude_client_profile_t *cp,prelude_connection_permission_t permission
+idmef_value_t **value, idmef_class_id_t classid, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_get_connection_list</NAME>
-<RETURNS>prelude_list_t *</RETURNS>
-prelude_connection_pool_t *pool
+<NAME>idmef_value_new_enum_from_numeric</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_class_id_t classid, int val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_add_connection</NAME>
+<NAME>idmef_value_set_int8</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_t *cnx
+idmef_value_t *value, int8_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_del_connection</NAME>
+<NAME>idmef_value_set_uint8</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_t *cnx
+idmef_value_t *value, uint8_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_connection_dead</NAME>
+<NAME>idmef_value_set_int16</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_t *cnx
+idmef_value_t *value, int16_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_connection_alive</NAME>
+<NAME>idmef_value_set_uint16</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_t *cnx
+idmef_value_t *value, uint16_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_connection_string</NAME>
+<NAME>idmef_value_set_int32</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, const char *cfgstr
+idmef_value_t *value, int32_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_get_connection_string</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_connection_pool_t *pool
+<NAME>idmef_value_set_uint32</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, uint32_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool
+<NAME>idmef_value_set_int64</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, int64_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_ref</NAME>
-<RETURNS>prelude_connection_pool_t *</RETURNS>
-prelude_connection_pool_t *pool
+<NAME>idmef_value_set_uint64</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, uint64_t val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_get_flags</NAME>
-<RETURNS>prelude_connection_pool_flags_t </RETURNS>
-prelude_connection_pool_t *pool
+<NAME>idmef_value_set_float</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, float val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_flags</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_pool_flags_t flags
+<NAME>idmef_value_set_double</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, double val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_required_permission</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_permission_t req_perm
+<NAME>idmef_value_set_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, prelude_string_t *string
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_data</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool, void *data
+<NAME>idmef_value_set_time</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, idmef_time_t *time
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_get_data</NAME>
-<RETURNS>void *</RETURNS>
-prelude_connection_pool_t *pool
+<NAME>idmef_value_set_data</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, idmef_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_recv</NAME>
+<NAME>idmef_value_set_enum</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, int timeout, prelude_connection_t **outcon, prelude_msg_t **outmsg
+idmef_value_t *value, idmef_class_id_t classid, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_check_event</NAME>
+<NAME>idmef_value_set_enum_from_string</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, int timeout,int (*event_cb)(prelude_connection_pool_t *pool,prelude_connection_pool_event_t event,prelude_connection_t *cnx, void *extra), void *extra
+idmef_value_t *value, idmef_class_id_t classid, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_global_event_handler</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool,prelude_connection_pool_event_t wanted_events,int (*callback)(prelude_connection_pool_t *pool,prelude_connection_pool_event_t events)
+<NAME>idmef_value_set_enum_from_numeric</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, idmef_class_id_t classid, int no
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_event_handler</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool,prelude_connection_pool_event_t wanted_events,int (*callback)(prelude_connection_pool_t *pool,prelude_connection_pool_event_t events,prelude_connection_t *cnx)
+<NAME>idmef_value_set_class</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, idmef_class_id_t classid, void *ptr
 </FUNCTION>
-<TYPEDEF>
-<NAME>prelude_uid_t</NAME>
-typedef uid_t prelude_uid_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>prelude_uid_t</NAME>
-typedef int prelude_uid_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>prelude_gid_t</NAME>
-typedef gid_t prelude_gid_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>prelude_gid_t</NAME>
-typedef int prelude_gid_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>prelude_client_profile_t</NAME>
-typedef struct prelude_client_profile prelude_client_profile_t;
-</TYPEDEF>
 <FUNCTION>
-<NAME>prelude_client_profile_new</NAME>
+<NAME>idmef_value_new</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_profile_t **ret, const char *name
+idmef_value_t **value, idmef_value_type_id_t type, void *ptr
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_ref</NAME>
-<RETURNS>prelude_client_profile_t *</RETURNS>
-prelude_client_profile_t *cp
+<NAME>idmef_value_new_from_path</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_path_t *path, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_client_profile_t *cp
+<NAME>idmef_value_new_from_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_value_type_id_t type, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_config_filename</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_int8</NAME>
+<RETURNS>int8_t </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_default_config_dirname</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_uint8</NAME>
+<RETURNS>uint8_t </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_analyzerid_filename</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_int16</NAME>
+<RETURNS>int16_t </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_tls_key_filename</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_uint16</NAME>
+<RETURNS>uint16_t </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_tls_server_ca_cert_filename</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_int32</NAME>
+<RETURNS>int32_t </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_tls_server_keycert_filename</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_uint32</NAME>
+<RETURNS>uint32_t </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_tls_server_crl_filename</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_int64</NAME>
+<RETURNS>int64_t </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_tls_client_keycert_filename</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_uint64</NAME>
+<RETURNS>uint64_t </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_tls_client_trusted_cert_filename</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_enum</NAME>
+<RETURNS>int </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_backup_dirname</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_float</NAME>
+<RETURNS>float </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_profile_dirname</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_double</NAME>
+<RETURNS>double </RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_set_uid</NAME>
-<RETURNS>void </RETURNS>
-prelude_client_profile_t *cp, prelude_uid_t uid
+<NAME>idmef_value_get_time</NAME>
+<RETURNS>idmef_time_t *</RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_uid</NAME>
-<RETURNS>prelude_uid_t </RETURNS>
-const prelude_client_profile_t *cp
+<NAME>idmef_value_get_data</NAME>
+<RETURNS>idmef_data_t *</RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_set_gid</NAME>
-<RETURNS>void </RETURNS>
-prelude_client_profile_t *cp, prelude_uid_t gid
+<NAME>idmef_value_get_string</NAME>
+<RETURNS>prelude_string_t *</RETURNS>
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_gid</NAME>
-<RETURNS>prelude_gid_t </RETURNS>
-const prelude_client_profile_t *cp
+<NAME>idmef_value_list_add</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *list, idmef_value_t *item
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_set_name</NAME>
+<NAME>idmef_value_is_list</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const idmef_value_t *list
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_list_is_empty</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const idmef_value_t *list
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_have_own_data</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_profile_t *cp, const char *name
+idmef_value_t *value
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_name</NAME>
-<RETURNS>const char *</RETURNS>
-const prelude_client_profile_t *cp
+<NAME>idmef_value_dont_have_own_data</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_analyzerid</NAME>
-<RETURNS>uint64_t </RETURNS>
-const prelude_client_profile_t *cp
+<NAME>idmef_value_get_type</NAME>
+<RETURNS>idmef_value_type_id_t </RETURNS>
+const idmef_value_t *value
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_set_analyzerid</NAME>
-<RETURNS>void </RETURNS>
-prelude_client_profile_t *cp, uint64_t analyzerid
+<NAME>idmef_value_get_class</NAME>
+<RETURNS>idmef_class_id_t </RETURNS>
+const idmef_value_t *value
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_credentials</NAME>
+<NAME>idmef_value_get_object</NAME>
+<RETURNS>void *</RETURNS>
+const idmef_value_t *value
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_iterate</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_profile_t *cp, void **credentials
+const idmef_value_t *value, int (*callback)(idmef_value_t *ptr, void *extra), void *extra
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_set_prefix</NAME>
+<NAME>idmef_value_iterate_reversed</NAME>
 <RETURNS>int </RETURNS>
-prelude_client_profile_t *cp, const char *prefix
+const idmef_value_t *value, int (*callback)(idmef_value_t *ptr, void *extra), void *extra
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_client_profile_get_prefix</NAME>
-<RETURNS>void </RETURNS>
-const prelude_client_profile_t *cp, char *buf, size_t size
+<NAME>idmef_value_get_nth</NAME>
+<RETURNS>idmef_value_t *</RETURNS>
+const idmef_value_t *val, int n
 </FUNCTION>
-<TYPEDEF>
-<NAME>idmef_path_t</NAME>
-typedef struct idmef_path idmef_path_t;
-</TYPEDEF>
 <FUNCTION>
-<NAME>idmef_path_get</NAME>
+<NAME>idmef_value_get_count</NAME>
 <RETURNS>int </RETURNS>
-const idmef_path_t *path, idmef_message_t *message, idmef_value_t **ret
+const idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_set</NAME>
+<NAME>idmef_value_clone</NAME>
 <RETURNS>int </RETURNS>
-const idmef_path_t *path, idmef_message_t *message, idmef_value_t *value
+const idmef_value_t *val, idmef_value_t **dst
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_new</NAME>
-<RETURNS>int </RETURNS>
-idmef_path_t **path, const char *format, ...
+<NAME>idmef_value_ref</NAME>
+<RETURNS>idmef_value_t *</RETURNS>
+idmef_value_t *val
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_new_v</NAME>
+<NAME>idmef_value_print</NAME>
 <RETURNS>int </RETURNS>
-idmef_path_t **path, const char *format, va_list args
+const idmef_value_t *val, prelude_io_t *fd
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_new_fast</NAME>
+<NAME>idmef_value_to_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_path_t **path, const char *buffer
+const idmef_value_t *val, prelude_string_t *out
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_get_class</NAME>
-<RETURNS>idmef_class_id_t </RETURNS>
-const idmef_path_t *path, int depth
+<NAME>idmef_value_get</NAME>
+<RETURNS>int </RETURNS>
+const idmef_value_t *val, void *res
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_get_value_type</NAME>
-<RETURNS>idmef_value_type_id_t </RETURNS>
-const idmef_path_t *path, int depth
+<NAME>idmef_value_match</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *val1, idmef_value_t *val2, idmef_criterion_operator_t op
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_set_index</NAME>
+<NAME>idmef_value_check_operator</NAME>
 <RETURNS>int </RETURNS>
-idmef_path_t *path, unsigned int depth, unsigned int index
+const idmef_value_t *value, idmef_criterion_operator_t op
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_undefine_index</NAME>
+<NAME>idmef_value_get_applicable_operators</NAME>
 <RETURNS>int </RETURNS>
-idmef_path_t *path, unsigned int depth
+const idmef_value_t *value, idmef_criterion_operator_t *result
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_get_index</NAME>
+<NAME>idmef_value_destroy</NAME>
+<RETURNS>void </RETURNS>
+idmef_value_t *val
+</FUNCTION>
+<TYPEDEF>
+<NAME>prelude_msg_t</NAME>
+typedef struct prelude_msg prelude_msg_t;
+</TYPEDEF>
+<ENUM>
+<NAME>prelude_msg_priority_t</NAME>
+typedef enum {
+        PRELUDE_MSG_PRIORITY_NONE = 0,
+        PRELUDE_MSG_PRIORITY_LOW  = 1,
+        PRELUDE_MSG_PRIORITY_MID  = 2,
+        PRELUDE_MSG_PRIORITY_HIGH = 3
+} prelude_msg_priority_t;
+</ENUM>
+<FUNCTION>
+<NAME>prelude_msg_read</NAME>
 <RETURNS>int </RETURNS>
-const idmef_path_t *path, unsigned int depth
+prelude_msg_t **msg, prelude_io_t *pio
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_make_child</NAME>
+<NAME>prelude_msg_forward</NAME>
 <RETURNS>int </RETURNS>
-idmef_path_t *path, const char *child_name, unsigned int index
+prelude_msg_t *msg, prelude_io_t *dst, prelude_io_t *src
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_make_parent</NAME>
+<NAME>prelude_msg_get</NAME>
 <RETURNS>int </RETURNS>
-idmef_path_t *path
+prelude_msg_t *msg, uint8_t *tag, uint32_t *len, void **buf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_destroy</NAME>
+<NAME>prelude_msg_recycle</NAME>
 <RETURNS>void </RETURNS>
-idmef_path_t *path
+prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_ncompare</NAME>
+<NAME>prelude_msg_mark_end</NAME>
+<RETURNS>void </RETURNS>
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_dynamic_new</NAME>
 <RETURNS>int </RETURNS>
-const idmef_path_t *p1, const idmef_path_t *p2, unsigned int depth
+prelude_msg_t **ret, int (*flush_msg_cb)(prelude_msg_t **msg, void *data), void *data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_compare</NAME>
+<NAME>prelude_msg_new</NAME>
 <RETURNS>int </RETURNS>
-const idmef_path_t *p1, const idmef_path_t *p2
+prelude_msg_t **ret, size_t msgcount, size_t msglen, uint8_t tag, prelude_msg_priority_t priority
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_clone</NAME>
+<NAME>prelude_msg_set</NAME>
 <RETURNS>int </RETURNS>
-const idmef_path_t *src, idmef_path_t **dst
+prelude_msg_t *msg, uint8_t tag, uint32_t len, const void *data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_ref</NAME>
-<RETURNS>idmef_path_t *</RETURNS>
-idmef_path_t *path
+<NAME>prelude_msg_write</NAME>
+<RETURNS>int </RETURNS>
+prelude_msg_t *msg, prelude_io_t *dst
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_get_name</NAME>
-<RETURNS>const char *</RETURNS>
-const idmef_path_t *path, int depth
+<NAME>prelude_msg_set_tag</NAME>
+<RETURNS>void </RETURNS>
+prelude_msg_t *msg, uint8_t tag
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_is_ambiguous</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const idmef_path_t *path
+<NAME>prelude_msg_set_priority</NAME>
+<RETURNS>void </RETURNS>
+prelude_msg_t *msg, prelude_msg_priority_t priority
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_has_lists</NAME>
-<RETURNS>int </RETURNS>
-const idmef_path_t *path
+<NAME>prelude_msg_get_tag</NAME>
+<RETURNS>uint8_t </RETURNS>
+prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_is_list</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const idmef_path_t *path, int depth
+<NAME>prelude_msg_get_priority</NAME>
+<RETURNS>prelude_msg_priority_t </RETURNS>
+prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_get_depth</NAME>
-<RETURNS>unsigned int </RETURNS>
-const idmef_path_t *path
+<NAME>prelude_msg_get_len</NAME>
+<RETURNS>uint32_t </RETURNS>
+prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_check_operator</NAME>
+<NAME>prelude_msg_get_datalen</NAME>
+<RETURNS>uint32_t </RETURNS>
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_get_message_data</NAME>
+<RETURNS>const unsigned char *</RETURNS>
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_get_time</NAME>
+<RETURNS>struct timeval *</RETURNS>
+prelude_msg_t *msg, struct timeval *tv
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_is_empty</NAME>
 <RETURNS>int </RETURNS>
-const idmef_path_t *path, idmef_criterion_operator_t op
+prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_get_applicable_operators</NAME>
+<NAME>prelude_msg_is_fragment</NAME>
 <RETURNS>int </RETURNS>
-const idmef_path_t *path, idmef_criterion_operator_t *result
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_set_callback</NAME>
+<RETURNS>void </RETURNS>
+prelude_msg_t *msg, int (*flush_msg_cb)(prelude_msg_t **msg, void *data)
 </FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_set_data</NAME>
+<RETURNS>void </RETURNS>
+prelude_msg_t *msg, void *data
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_ref</NAME>
+<RETURNS>prelude_msg_t *</RETURNS>
+prelude_msg_t *msg
+</FUNCTION>
+<MACRO>
+<NAME>PRELUDE_LIST</NAME>
+#define PRELUDE_LIST(item) prelude_list_t (item) = { &(item), &(item) }
+</MACRO>
+<STRUCT>
+<NAME>prelude_list_t</NAME>
+typedef struct prelude_list {
+        struct prelude_list *next;
+        struct prelude_list *prev;
+} prelude_list_t;
+</STRUCT>
+<MACRO>
+<NAME>prelude_list_entry</NAME>
+#define prelude_list_entry(item, type, member)                             \
+        (type *) ((unsigned long) item - (unsigned long) &((type *) 0)->member)
+</MACRO>
+<MACRO>
+<NAME>prelude_list_for_each</NAME>
+#define prelude_list_for_each(list, pos)                                   \
+        for ( (pos) = (list)->next; (pos) != (list); (pos) = (pos)->next )
+</MACRO>
+<MACRO>
+<NAME>prelude_list_for_each_safe</NAME>
+#define prelude_list_for_each_safe(list, pos, bkp)                         \
+        for ( (pos) = (list)->next, (bkp) = (pos)->next; (pos) != (list); (pos) = (bkp), (bkp) = (pos)->next )
+</MACRO>
+<MACRO>
+<NAME>prelude_list_for_each_reversed</NAME>
+#define prelude_list_for_each_reversed(list, pos)                          \
+        for ( (pos) = (list)->prev; (pos) != (list); (pos) = (pos)->prev ) 
+</MACRO>
+<MACRO>
+<NAME>prelude_list_for_each_reversed_safe</NAME>
+#define prelude_list_for_each_reversed_safe(list, pos, bkp)                \
+        for ( (pos) = (list)->prev, (bkp) = (pos)->prev; (pos) != (list); (pos) = (bkp), (bkp) = (pos)->prev )
+</MACRO>
+<MACRO>
+<NAME>prelude_list_for_each_continue</NAME>
+#define prelude_list_for_each_continue(list, pos)                          \
+        for ( (pos) = ((pos) == NULL) ? (list)->next : (pos)->next; (pos) != (list); (pos) = (pos)->next )
+</MACRO>
+<MACRO>
+<NAME>prelude_list_for_each_continue_safe</NAME>
+#define prelude_list_for_each_continue_safe(list, pos, bkp)                \
+        for ( (pos) = ((bkp) == NULL) ? (list)->next : (bkp); (bkp) = (pos)->next, (pos) != (list); (pos) = (bkp) )
+</MACRO>
+<MACRO>
+<NAME>prelude_list_get_next</NAME>
+#define prelude_list_get_next(list, pos, class, member) \
+        pos ? \
+                ((pos)->member.next == (list)) ? NULL : \
+                                prelude_list_entry((pos)->member.next, class, member) \
+        : \
+                ((list)->next == (list)) ? NULL : \
+                                prelude_list_entry((list)->next, class, member)
+</MACRO>
+<MACRO>
+<NAME>prelude_list_get_next_safe</NAME>
+#define prelude_list_get_next_safe(list, pos, bkp, class, member)                                                                \
+        pos ?                                                                                                            \
+              (((pos) = bkp),                                                                                            \
+               ((bkp) = (! (bkp) || (bkp)->member.next == list) ? NULL : prelude_list_entry((pos)->member.next, class, member)), \
+               (pos))                                                                                                    \
+        :                                                                                                                \
+              (((pos) = ((list)->next == list) ? NULL : prelude_list_entry((list)->next, class, member)),                        \
+               ((bkp) = (! (pos) ||(pos)->member.next == list ) ? NULL : prelude_list_entry((pos)->member.next, class, member)), \
+               (pos))
+</MACRO>
 <MACRO>
 <NAME>PRELUDE_PLUGIN_API_VERSION</NAME>
 #define PRELUDE_PLUGIN_API_VERSION 1
@@ -7444,803 +7595,654 @@ prelude_plugin_generic_t *plugin
 #define prelude_plugin_run(pi, type, member, ...) \
         (((type *)prelude_plugin_instance_get_plugin(pi))->member(__VA_ARGS__))
 </MACRO>
-<TYPEDEF>
-<NAME>prelude_string_t</NAME>
-typedef struct prelude_string prelude_string_t;
-</TYPEDEF>
-<FUNCTION>
-<NAME>prelude_string_new</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t **string
-</FUNCTION>
+<MACRO>
+<NAME>PRELUDE_OPTION_REPLY_TYPE_SET</NAME>
+#define PRELUDE_OPTION_REPLY_TYPE_SET   0x01
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_OPTION_REPLY_TYPE_GET</NAME>
+#define PRELUDE_OPTION_REPLY_TYPE_GET   0x02
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_OPTION_REPLY_TYPE_LIST</NAME>
+#define PRELUDE_OPTION_REPLY_TYPE_LIST  0x04
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_OPTION_REPLY_TYPE_ERROR</NAME>
+#define PRELUDE_OPTION_REPLY_TYPE_ERROR 0x08
+</MACRO>
 <FUNCTION>
-<NAME>prelude_string_new_nodup</NAME>
+<NAME>prelude_option_push_request</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t **string, char *str
+prelude_msgbuf_t *msg, int type, const char *request
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_new_ref</NAME>
+<NAME>prelude_option_new_request</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t **string, const char *str
+prelude_msgbuf_t *msgbuf,uint32_t request_id, uint64_t *target_id, size_t size
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_new_dup</NAME>
+<NAME>prelude_option_process_request</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t **string, const char *str
+prelude_client_t *client, prelude_msg_t *msg, prelude_msgbuf_t *reply
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_new_dup_fast</NAME>
+<NAME>prelude_option_recv_reply</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t **string, const char *str, size_t len
+prelude_msg_t *msg, uint64_t *source_id, uint32_t *request_id, void **value
 </FUNCTION>
+<MACRO>
+<NAME>PRELUDE_INT8_MIN</NAME>
+#define PRELUDE_INT8_MIN               (-128)
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_INT16_MIN</NAME>
+#define PRELUDE_INT16_MIN              (-32767 - 1)
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_INT32_MIN</NAME>
+#define PRELUDE_INT32_MIN              (-2147483647 - 1)
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_INT64_MIN</NAME>
+#define PRELUDE_INT64_MIN              (-__PRELUDE_INT64_SUFFIX(9223372036854775807) - 1)
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_INT8_MAX</NAME>
+#define PRELUDE_INT8_MAX               (127)
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_INT16_MAX</NAME>
+#define PRELUDE_INT16_MAX              (32767)
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_INT32_MAX</NAME>
+#define PRELUDE_INT32_MAX              (2147483647)
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_INT64_MAX</NAME>
+#define PRELUDE_INT64_MAX              (__PRELUDE_INT64_SUFFIX(9223372036854775807))
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_UINT8_MAX</NAME>
+#define PRELUDE_UINT8_MAX              (255)
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_UINT16_MAX</NAME>
+#define PRELUDE_UINT16_MAX             (65535)
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_UINT32_MAX</NAME>
+#define PRELUDE_UINT32_MAX             (4294967295U)
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_UINT64_MAX</NAME>
+#define PRELUDE_UINT64_MAX             (__PRELUDE_UINT64_SUFFIX(18446744073709551615))
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_INTMAX_MIN</NAME>
+#define PRELUDE_INTMAX_MIN             INT64_MIN
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_INTMAX_MAX</NAME>
+#define PRELUDE_INTMAX_MAX             INT64_MAX
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_UINTMAX_MAX</NAME>
+#define PRELUDE_UINTMAX_MAX            UINT64_MAX
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRId64</NAME>
+#define PRELUDE_PRId64      __PRELUDE_64BIT_FORMAT_PREFIX "d"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIi64</NAME>
+#define PRELUDE_PRIi64      __PRELUDE_64BIT_FORMAT_PREFIX "i"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIo64</NAME>
+#define PRELUDE_PRIo64      __PRELUDE_64BIT_FORMAT_PREFIX "o"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIx64</NAME>
+#define PRELUDE_PRIx64      __PRELUDE_64BIT_FORMAT_PREFIX "x"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIX64</NAME>
+#define PRELUDE_PRIX64      __PRELUDE_64BIT_FORMAT_PREFIX "X"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIu64</NAME>
+#define PRELUDE_PRIu64      __PRELUDE_64BIT_FORMAT_PREFIX "u"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRId32</NAME>
+#define PRELUDE_PRId32      "d"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIi32</NAME>
+#define PRELUDE_PRIi32      "i"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIo32</NAME>
+#define PRELUDE_PRIo32      "o"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIx32</NAME>
+#define PRELUDE_PRIx32      "x"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIX32</NAME>
+#define PRELUDE_PRIX32      "X"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIu32</NAME>
+#define PRELUDE_PRIu32      "u"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRId16</NAME>
+#define PRELUDE_PRId16      "d"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIi16</NAME>
+#define PRELUDE_PRIi16      "i"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIo16</NAME>
+#define PRELUDE_PRIo16      "o"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIx16</NAME>
+#define PRELUDE_PRIx16      "x"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIX16</NAME>
+#define PRELUDE_PRIX16      "X"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIu16</NAME>
+#define PRELUDE_PRIu16      "u"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRId8</NAME>
+#define PRELUDE_PRId8       "d"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIi8</NAME>
+#define PRELUDE_PRIi8       "i"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIo8</NAME>
+#define PRELUDE_PRIo8       "o"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIx8</NAME>
+#define PRELUDE_PRIx8       "x"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIX8</NAME>
+#define PRELUDE_PRIX8       "X"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_PRIu8</NAME>
+#define PRELUDE_PRIu8       "u"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_SCNd64</NAME>
+#define PRELUDE_SCNd64      __PRELUDE_64BIT_FORMAT_PREFIX "d"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_SCNi64</NAME>
+#define PRELUDE_SCNi64      __PRELUDE_64BIT_FORMAT_PREFIX "i"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_SCNo64</NAME>
+#define PRELUDE_SCNo64      __PRELUDE_64BIT_FORMAT_PREFIX "o"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_SCNx64</NAME>
+#define PRELUDE_SCNx64      __PRELUDE_64BIT_FORMAT_PREFIX "x"
+</MACRO>
+<MACRO>
+<NAME>PRELUDE_SCNu64</NAME>
+#define PRELUDE_SCNu64      __PRELUDE_64BIT_FORMAT_PREFIX "u"
+</MACRO>
+<ENUM>
+<NAME>prelude_bool_t</NAME>
+typedef enum { 
+	PRELUDE_BOOL_TRUE = TRUE, 
+	PRELUDE_BOOL_FALSE = FALSE 
+} prelude_bool_t;
+</ENUM>
+<TYPEDEF>
+<NAME>int8_t</NAME>
+ typedef signed char int8_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>uint8_t</NAME>
+ typedef unsigned char uint8_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>int16_t</NAME>
+ typedef short int16_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>uint16_t</NAME>
+ typedef unsigned short uint16_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>int32_t</NAME>
+ typedef int int32_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>uint32_t</NAME>
+ typedef unsigned int uint32_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>int64_t</NAME>
+  typedef long int64_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>uint64_t</NAME>
+  typedef unsigned long uint64_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>int64_t</NAME>
+  typedef long long int64_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>uint64_t</NAME>
+  typedef unsigned long long uint64_t;
+</TYPEDEF>
+<MACRO>
+<NAME>PRELUDE_LINKED_OBJECT</NAME>
+#define PRELUDE_LINKED_OBJECT   \
+        prelude_list_t _list;   \
+        unsigned int _object_id
+</MACRO>
+<STRUCT>
+<NAME>prelude_linked_object_t</NAME>
+typedef struct {
+        PRELUDE_LINKED_OBJECT;
+} prelude_linked_object_t;
+</STRUCT>
+<MACRO>
+<NAME>prelude_linked_object_get_object</NAME>
+#define prelude_linked_object_get_object(object)  \
+        (void *) prelude_list_entry(object, prelude_linked_object_t, _list)
+</MACRO>
+<ENUM>
+<NAME>prelude_connection_pool_flags_t</NAME>
+typedef enum {
+        PRELUDE_CONNECTION_POOL_FLAGS_RECONNECT        = 0x01,
+        PRELUDE_CONNECTION_POOL_FLAGS_FAILOVER         = 0x02
+} prelude_connection_pool_flags_t;
+</ENUM>
+<ENUM>
+<NAME>prelude_connection_pool_event_t</NAME>
+typedef enum {
+        PRELUDE_CONNECTION_POOL_EVENT_INPUT            = 0x01,
+        PRELUDE_CONNECTION_POOL_EVENT_DEAD             = 0x02,
+        PRELUDE_CONNECTION_POOL_EVENT_ALIVE            = 0x04
+} prelude_connection_pool_event_t;
+</ENUM>
+<TYPEDEF>
+<NAME>prelude_connection_pool_t</NAME>
+typedef struct prelude_connection_pool prelude_connection_pool_t;
+</TYPEDEF>
 <FUNCTION>
-<NAME>prelude_string_destroy</NAME>
+<NAME>prelude_connection_pool_broadcast</NAME>
 <RETURNS>void </RETURNS>
-prelude_string_t *string
+prelude_connection_pool_t *pool, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_destroy_internal</NAME>
+<NAME>prelude_connection_pool_broadcast_async</NAME>
 <RETURNS>void </RETURNS>
-prelude_string_t *string
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_string_new_nodup_fast</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t **string, char *str, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_string_new_ref_fast</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t **string, const char *str, size_t len
+prelude_connection_pool_t *pool, prelude_msg_t *msg
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_set_dup_fast</NAME>
+<NAME>prelude_connection_pool_init</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t *string, const char *buf, size_t len
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_set_dup</NAME>
+<NAME>prelude_connection_pool_new</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t *string, const char *buf
+prelude_connection_pool_t **ret,prelude_client_profile_t *cp,prelude_connection_permission_t permission
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_set_nodup_fast</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t *string, char *buf, size_t len
+<NAME>prelude_connection_pool_get_connection_list</NAME>
+<RETURNS>prelude_list_t *</RETURNS>
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_set_nodup</NAME>
+<NAME>prelude_connection_pool_add_connection</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t *string, char *buf
+prelude_connection_pool_t *pool, prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_set_ref_fast</NAME>
+<NAME>prelude_connection_pool_del_connection</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t *string, const char *buf, size_t len
+prelude_connection_pool_t *pool, prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_set_ref</NAME>
+<NAME>prelude_connection_pool_set_connection_dead</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t *string, const char *buf
+prelude_connection_pool_t *pool, prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_copy_ref</NAME>
+<NAME>prelude_connection_pool_set_connection_alive</NAME>
 <RETURNS>int </RETURNS>
-const prelude_string_t *src, prelude_string_t *dst
+prelude_connection_pool_t *pool, prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_copy_dup</NAME>
+<NAME>prelude_connection_pool_set_connection_string</NAME>
 <RETURNS>int </RETURNS>
-const prelude_string_t *src, prelude_string_t *dst
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_string_ref</NAME>
-<RETURNS>prelude_string_t *</RETURNS>
-prelude_string_t *string
+prelude_connection_pool_t *pool, const char *cfgstr
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_clone</NAME>
-<RETURNS>int </RETURNS>
-const prelude_string_t *src, prelude_string_t **dst
+<NAME>prelude_connection_pool_get_connection_string</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_get_len</NAME>
-<RETURNS>size_t </RETURNS>
-const prelude_string_t *string
+<NAME>prelude_connection_pool_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_get_string_or_default</NAME>
-<RETURNS>const char *</RETURNS>
-const prelude_string_t *string, const char *def
+<NAME>prelude_connection_pool_ref</NAME>
+<RETURNS>prelude_connection_pool_t *</RETURNS>
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_get_string</NAME>
-<RETURNS>const char *</RETURNS>
-const prelude_string_t *string
+<NAME>prelude_connection_pool_get_flags</NAME>
+<RETURNS>prelude_connection_pool_flags_t </RETURNS>
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_get_string_released</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t *string, char **outptr
+<NAME>prelude_connection_pool_set_flags</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_pool_t *pool, prelude_connection_pool_flags_t flags
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_is_empty</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const prelude_string_t *string
+<NAME>prelude_connection_pool_set_required_permission</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_pool_t *pool, prelude_connection_permission_t req_perm
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_clear</NAME>
+<NAME>prelude_connection_pool_set_data</NAME>
 <RETURNS>void </RETURNS>
-prelude_string_t *string
+prelude_connection_pool_t *pool, void *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_cat</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t *dst, const char *str
+<NAME>prelude_connection_pool_get_data</NAME>
+<RETURNS>void *</RETURNS>
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_ncat</NAME>
+<NAME>prelude_connection_pool_recv</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t *dst, const char *str, size_t len
+prelude_connection_pool_t *pool, int timeout, prelude_connection_t **outcon, prelude_msg_t **outmsg
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_sprintf</NAME>
+<NAME>prelude_connection_pool_check_event</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t *string, const char *fmt, ...
+prelude_connection_pool_t *pool, int timeout,int (*event_cb)(prelude_connection_pool_t *pool,prelude_connection_pool_event_t event,prelude_connection_t *cnx, void *extra), void *extra
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_vprintf</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t *string, const char *fmt, va_list ap
+<NAME>prelude_connection_pool_set_global_event_handler</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_pool_t *pool,prelude_connection_pool_event_t wanted_events,int (*callback)(prelude_connection_pool_t *pool,prelude_connection_pool_event_t events)
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_compare</NAME>
-<RETURNS>int </RETURNS>
-const prelude_string_t *str1, const prelude_string_t *str2
+<NAME>prelude_connection_pool_set_event_handler</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_pool_t *pool,prelude_connection_pool_event_t wanted_events,int (*callback)(prelude_connection_pool_t *pool,prelude_connection_pool_event_t events,prelude_connection_t *cnx)
 </FUNCTION>
-<MACRO>
-<NAME>prelude_string_set_constant</NAME>
-#define prelude_string_set_constant(string, str)                         \
-        prelude_string_set_ref_fast((string), (str), strlen((str)))
-</MACRO>
-<MACRO>
-<NAME>prelude_string_new_constant</NAME>
-#define prelude_string_new_constant(string, str)                         \
-        prelude_string_new_ref_fast((string), (str), strlen((str)))
-</MACRO>
-<ENUM>
-<NAME>idmef_data_type_t</NAME>
-typedef enum {
-	IDMEF_DATA_TYPE_UNKNOWN      = 0,
-	IDMEF_DATA_TYPE_CHAR         = 1,
-	IDMEF_DATA_TYPE_BYTE         = 2,
-	IDMEF_DATA_TYPE_UINT32       = 3,
-	IDMEF_DATA_TYPE_UINT64       = 4,
-	IDMEF_DATA_TYPE_FLOAT        = 5,
-	IDMEF_DATA_TYPE_CHAR_STRING  = 6,
-	IDMEF_DATA_TYPE_BYTE_STRING  = 7
-} idmef_data_type_t;
-</ENUM>
 <STRUCT>
-<NAME>data</NAME>
+<NAME>prelude_timer_t</NAME>
 typedef struct {
-        int refcount;
+        prelude_list_t list;
 
-        int flags;
-        idmef_data_type_t type;
-        size_t len;
+        int expire;
+        time_t start_time;
 
-        union {
-		char char_data;
-		uint8_t byte_data;
-		uint32_t uint32_data;
-		uint64_t uint64_data;
-		float float_data;
-		void *rw_data;
-		const void *ro_data;
-        } data;
-        
+        void *data;
+        void (*function)(void *data);
+} prelude_timer_t;
 </STRUCT>
+<MACRO>
+<NAME>prelude_timer_get_expire</NAME>
+#define prelude_timer_get_expire(timer) (timer)->expire
+</MACRO>
+<MACRO>
+<NAME>prelude_timer_get_data</NAME>
+#define prelude_timer_get_data(timer) (timer)->data
+</MACRO>
+<MACRO>
+<NAME>prelude_timer_get_callback</NAME>
+#define prelude_timer_get_callback(timer) (timer)->function
+</MACRO>
+<MACRO>
+<NAME>prelude_timer_set_expire</NAME>
+#define prelude_timer_set_expire(timer, x) prelude_timer_get_expire((timer)) = (x)
+</MACRO>
+<MACRO>
+<NAME>prelude_timer_set_data</NAME>
+#define prelude_timer_set_data(timer, x) prelude_timer_get_data((timer)) = (x)
+</MACRO>
+<MACRO>
+<NAME>prelude_timer_set_callback</NAME>
+#define prelude_timer_set_callback(timer, x) prelude_timer_get_callback((timer)) = (x)
+</MACRO>
 <FUNCTION>
-<NAME>idmef_data_new</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_ref</NAME>
-<RETURNS>idmef_data_t *</RETURNS>
-idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_new_char</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, char c
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_new_byte</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, uint8_t i
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_new_uint32</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, uint32_t i
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_new_uint64</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, uint64_t i
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_new_float</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, float f
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_set_char</NAME>
+<NAME>prelude_timer_init</NAME>
 <RETURNS>void </RETURNS>
-idmef_data_t *data, char c
+prelude_timer_t *timer
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_set_byte</NAME>
+<NAME>prelude_timer_init_list</NAME>
 <RETURNS>void </RETURNS>
-idmef_data_t *data, uint8_t i
+prelude_timer_t *timer
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_set_uint32</NAME>
+<NAME>prelude_timer_reset</NAME>
 <RETURNS>void </RETURNS>
-idmef_data_t *data, uint32_t i
+prelude_timer_t *timer
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_set_uint64</NAME>
+<NAME>prelude_timer_destroy</NAME>
 <RETURNS>void </RETURNS>
-idmef_data_t *data, uint64_t i
+prelude_timer_t *timer
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_set_float</NAME>
+<NAME>prelude_timer_wake_up</NAME>
 <RETURNS>void </RETURNS>
-idmef_data_t *data, float f
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_set_ptr_dup_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t *data, idmef_data_type_t type, const void *ptr, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_set_ptr_ref_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t *data, idmef_data_type_t type, const void *ptr, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_set_ptr_nodup_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t *data, idmef_data_type_t type, void *ptr, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_new_ptr_dup_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, idmef_data_type_t type, const void *ptr, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_new_ptr_ref_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, idmef_data_type_t type, const void *ptr, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_new_ptr_nodup_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, idmef_data_type_t type, void *ptr, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_set_char_string_dup_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t *data, const char *str, size_t len
+void
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_new_char_string_dup_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, const char *str, size_t len
+<NAME>prelude_timer_flush</NAME>
+<RETURNS>void </RETURNS>
+void
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_new_char_string_ref_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, const char *ptr, size_t len
+<NAME>prelude_timer_lock_critical_region</NAME>
+<RETURNS>void </RETURNS>
+void
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_new_char_string_nodup_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, char *ptr, size_t len
+<NAME>prelude_timer_unlock_critical_region</NAME>
+<RETURNS>void </RETURNS>
+void
 </FUNCTION>
+<TYPEDEF>
+<NAME>prelude_hash_t</NAME>
+typedef struct prelude_hash prelude_hash_t;
+</TYPEDEF>
 <FUNCTION>
-<NAME>idmef_data_set_char_string_ref_fast</NAME>
+<NAME>prelude_hash_new</NAME>
 <RETURNS>int </RETURNS>
-idmef_data_t *data, const char *ptr, size_t len
+prelude_hash_t **hash,unsigned int (*hash_func)(const void *),int (*key_cmp_func)(const void *, const void *),void (*key_destroy_func)(void *),void (*value_destroy_func)(void *)
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_set_char_string_nodup_fast</NAME>
+<NAME>prelude_hash_new2</NAME>
 <RETURNS>int </RETURNS>
-idmef_data_t *data, char *ptr, size_t len
+prelude_hash_t **hash, size_t size,unsigned int (*hash_func)(const void *),int (*key_cmp_func)(const void *, const void *),void (*key_destroy_func)(void *),void (*value_destroy_func)(void *)
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_new_char_string_ref</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, const char *ptr
+<NAME>prelude_hash_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_hash_t *hash
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_new_char_string_dup</NAME>
+<NAME>prelude_hash_set</NAME>
 <RETURNS>int </RETURNS>
-idmef_data_t **data, const char *ptr
+prelude_hash_t *hash, void *key, void *value
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_new_char_string_nodup</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t **data, char *ptr
+<NAME>prelude_hash_get</NAME>
+<RETURNS>void *</RETURNS>
+prelude_hash_t *hash, const void *key
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_set_char_string_ref</NAME>
+<NAME>prelude_hash_elem_destroy</NAME>
 <RETURNS>int </RETURNS>
-idmef_data_t *data, const char *ptr
+prelude_hash_t *hash, const void *key
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_set_char_string_dup</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t *data, const char *ptr
+<NAME>prelude_hash_iterate</NAME>
+<RETURNS>void </RETURNS>
+prelude_hash_t *hash, void (*cb)(void *data)
 </FUNCTION>
+<TYPEDEF>
+<NAME>idmef_time_t</NAME>
+typedef struct idmef_time idmef_time_t;
+</TYPEDEF>
 <FUNCTION>
-<NAME>idmef_data_set_char_string_nodup</NAME>
-<RETURNS>int </RETURNS>
-idmef_data_t *data, char *ptr
+<NAME>idmef_time_ref</NAME>
+<RETURNS>idmef_time_t *</RETURNS>
+idmef_time_t *time
 </FUNCTION>
-<MACRO>
-<NAME>idmef_data_set_char_string_constant</NAME>
-#define idmef_data_set_char_string_constant(string, str)		\
-	idmef_data_set_char_string_ref_fast((string), (str), sizeof((str)) - 1)
-</MACRO>
 <FUNCTION>
-<NAME>idmef_data_new_byte_string_ref</NAME>
+<NAME>idmef_time_new</NAME>
 <RETURNS>int </RETURNS>
-idmef_data_t **data, const unsigned char *ptr, size_t len
+idmef_time_t **time
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_new_byte_string_dup</NAME>
+<NAME>idmef_time_new_from_time</NAME>
 <RETURNS>int </RETURNS>
-idmef_data_t **data, const unsigned char *ptr, size_t len
+idmef_time_t **time, const time_t *t
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_new_byte_string_nodup</NAME>
+<NAME>idmef_time_new_from_gettimeofday</NAME>
 <RETURNS>int </RETURNS>
-idmef_data_t **data, unsigned char *ptr, size_t len
+idmef_time_t **time
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_set_byte_string_ref</NAME>
+<NAME>idmef_time_new_from_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_data_t *data, const unsigned char *ptr, size_t len
+idmef_time_t **time, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_set_byte_string_dup</NAME>
+<NAME>idmef_time_new_from_ntpstamp</NAME>
 <RETURNS>int </RETURNS>
-idmef_data_t *data, const unsigned char *ptr, size_t len
+idmef_time_t **time, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_set_byte_string_nodup</NAME>
+<NAME>idmef_time_new_from_timeval</NAME>
 <RETURNS>int </RETURNS>
-idmef_data_t *data, unsigned char *ptr, size_t len
+idmef_time_t **time, const struct timeval *tv
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_destroy</NAME>
+<NAME>idmef_time_set_from_time</NAME>
 <RETURNS>void </RETURNS>
-idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_copy_ref</NAME>
-<RETURNS>int </RETURNS>
-const idmef_data_t *src, idmef_data_t *dst
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_copy_dup</NAME>
-<RETURNS>int </RETURNS>
-const idmef_data_t *src, idmef_data_t *dst
+idmef_time_t *time, const time_t *t
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_clone</NAME>
+<NAME>idmef_time_set_from_gettimeofday</NAME>
 <RETURNS>int </RETURNS>
-const idmef_data_t *src, idmef_data_t **dst
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_get_type</NAME>
-<RETURNS>idmef_data_type_t </RETURNS>
-const idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_get_len</NAME>
-<RETURNS>size_t </RETURNS>
-const idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_get_data</NAME>
-<RETURNS>const void *</RETURNS>
-const idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_get_char</NAME>
-<RETURNS>char </RETURNS>
-const idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_get_byte</NAME>
-<RETURNS>uint8_t </RETURNS>
-const idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_get_uint32</NAME>
-<RETURNS>uint32_t </RETURNS>
-const idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_get_uint64</NAME>
-<RETURNS>uint64_t </RETURNS>
-const idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_get_float</NAME>
-<RETURNS>float </RETURNS>
-const idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_get_char_string</NAME>
-<RETURNS>const char *</RETURNS>
-const idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_get_byte_string</NAME>
-<RETURNS>const unsigned char *</RETURNS>
-const idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_is_empty</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const idmef_data_t *data
+idmef_time_t *time
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_to_string</NAME>
+<NAME>idmef_time_set_from_string</NAME>
 <RETURNS>int </RETURNS>
-const idmef_data_t *data, prelude_string_t *out
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_data_destroy_internal</NAME>
-<RETURNS>void </RETURNS>
-idmef_data_t *data
+idmef_time_t *time, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_data_compare</NAME>
+<NAME>idmef_time_set_from_ntpstamp</NAME>
 <RETURNS>int </RETURNS>
-const idmef_data_t *data1, const idmef_data_t *data2
+idmef_time_t *time, const char *buf
 </FUNCTION>
-<TYPEDEF>
-<NAME>prelude_msgbuf_t</NAME>
-typedef struct prelude_msgbuf prelude_msgbuf_t;
-</TYPEDEF>
-<ENUM>
-<NAME>prelude_msgbuf_flags_t</NAME>
-typedef enum {
-        PRELUDE_MSGBUF_FLAGS_ASYNC = 0x01
-} prelude_msgbuf_flags_t;
-</ENUM>
 <FUNCTION>
-<NAME>prelude_msgbuf_new</NAME>
+<NAME>idmef_time_set_from_timeval</NAME>
 <RETURNS>int </RETURNS>
-prelude_msgbuf_t **msgbuf
+idmef_time_t *time, const struct timeval *tv
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msgbuf_destroy</NAME>
+<NAME>idmef_time_destroy_internal</NAME>
 <RETURNS>void </RETURNS>
-prelude_msgbuf_t *msgbuf
+idmef_time_t *time
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msgbuf_mark_end</NAME>
+<NAME>idmef_time_destroy</NAME>
 <RETURNS>void </RETURNS>
-prelude_msgbuf_t *msgbuf
+idmef_time_t *time
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msgbuf_set</NAME>
+<NAME>idmef_time_clone</NAME>
 <RETURNS>int </RETURNS>
-prelude_msgbuf_t *msgbuf, uint8_t tag, uint32_t len, const void *data
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msgbuf_get_msg</NAME>
-<RETURNS>prelude_msg_t *</RETURNS>
-prelude_msgbuf_t *msgbuf
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msgbuf_set_callback</NAME>
-<RETURNS>void </RETURNS>
-prelude_msgbuf_t *msgbuf, int (*send_msg)(prelude_msgbuf_t *msgbuf, prelude_msg_t *msg)
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msgbuf_set_data</NAME>
-<RETURNS>void </RETURNS>
-prelude_msgbuf_t *msgbuf, void *data
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msgbuf_get_data</NAME>
-<RETURNS>void *</RETURNS>
-prelude_msgbuf_t *msgbuf
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msgbuf_set_flags</NAME>
-<RETURNS>void </RETURNS>
-prelude_msgbuf_t *msgbuf, prelude_msgbuf_flags_t flags
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msgbuf_get_flags</NAME>
-<RETURNS>prelude_msgbuf_flags_t </RETURNS>
-prelude_msgbuf_t *msgbuf
+const idmef_time_t *src, idmef_time_t **dst
 </FUNCTION>
-<ENUM>
-<NAME>prelude_async_flags_t</NAME>
-typedef enum {
-        PRELUDE_ASYNC_FLAGS_TIMER   = 0x01
-} prelude_async_flags_t;
-</ENUM>
-<USER_FUNCTION>
-<NAME>prelude_async_callback_t</NAME>
-<RETURNS>void </RETURNS>
-void *object, void *data
-</USER_FUNCTION>
-<MACRO>
-<NAME>PRELUDE_ASYNC_OBJECT</NAME>
-#define PRELUDE_ASYNC_OBJECT                   \
-        PRELUDE_LINKED_OBJECT;                 \
-        void *_async_data;                     \
-        prelude_async_callback_t _async_func
-</MACRO>
-<STRUCT>
-<NAME>prelude_async_object_t</NAME>
-typedef struct {
-        PRELUDE_ASYNC_OBJECT;
-} prelude_async_object_t;
-</STRUCT>
 <FUNCTION>
-<NAME>prelude_async_init</NAME>
+<NAME>idmef_time_copy</NAME>
 <RETURNS>int </RETURNS>
-void
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_async_get_flags</NAME>
-<RETURNS>prelude_async_flags_t </RETURNS>
-void
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_async_set_flags</NAME>
-<RETURNS>void </RETURNS>
-prelude_async_flags_t flags
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_async_add</NAME>
-<RETURNS>void </RETURNS>
-prelude_async_object_t *obj
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_async_del</NAME>
-<RETURNS>void </RETURNS>
-prelude_async_object_t *obj
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_async_exit</NAME>
-<RETURNS>void </RETURNS>
-void
-</FUNCTION>
-<ENUM>
-<NAME>prelude_log_t</NAME>
-typedef enum {
-        PRELUDE_LOG_CRIT  = -1,
-        PRELUDE_LOG_ERR   =  0,
-        PRELUDE_LOG_WARN  =  1,
-        PRELUDE_LOG_INFO  =  2,
-        PRELUDE_LOG_DEBUG  = 3
-} prelude_log_t;
-</ENUM>
-<ENUM>
-<NAME>prelude_log_flags_t</NAME>
-typedef enum {
-        PRELUDE_LOG_FLAGS_QUIET  = 0x01, /* Drop PRELUDE_LOG_PRIORITY_INFO */
-        PRELUDE_LOG_FLAGS_SYSLOG = 0x02
-} prelude_log_flags_t;
-</ENUM>
-<MACRO>
-<NAME>prelude_log</NAME>
-#define prelude_log(level, ...) \
-        _prelude_log(level, __FILE__, __PRELUDE_FUNC__, __LINE__, __VA_ARGS__)
-</MACRO>
-<MACRO>
-<NAME>prelude_log_debug</NAME>
-#define prelude_log_debug(level, ...) \
-        _prelude_log(PRELUDE_LOG_DEBUG + level, __FILE__, __PRELUDE_FUNC__, __LINE__, __VA_ARGS__)
-</MACRO>
-<FUNCTION>
-<NAME>prelude_log</NAME>
-<RETURNS>void </RETURNS>
-prelude_log_t level, const char *fmt, ...
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_log_debug</NAME>
-<RETURNS>void </RETURNS>
-prelude_log_t level, const char *fmt, ...
-</FUNCTION>
-<MACRO>
-<NAME>prelude_log_v</NAME>
-#define prelude_log_v(level, fmt, ap) \
-        _prelude_log_v(level, __FILE__, __PRELUDE_FUNC__, __LINE__, fmt, ap)
-</MACRO>
-<MACRO>
-<NAME>prelude_log_debug_v</NAME>
-#define prelude_log_debug_v(level, fmt, ap) \
-        _prelude_log_v(PRELUDE_LOG_DEBUG + level, __FILE__, __PRELUDE_FUNC__, __LINE__, fmt, ap)
-</MACRO>
-<FUNCTION>
-<NAME>prelude_log_set_level</NAME>
-<RETURNS>void </RETURNS>
-prelude_log_t level
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_log_set_debug_level</NAME>
-<RETURNS>void </RETURNS>
-int level
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_log_get_flags</NAME>
-<RETURNS>prelude_log_flags_t </RETURNS>
-void
+const idmef_time_t *src, idmef_time_t *dst
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_log_set_flags</NAME>
+<NAME>idmef_time_set_sec</NAME>
 <RETURNS>void </RETURNS>
-prelude_log_flags_t flags
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_log_get_prefix</NAME>
-<RETURNS>char *</RETURNS>
-void
+idmef_time_t *time, uint32_t sec
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_log_set_prefix</NAME>
+<NAME>idmef_time_set_usec</NAME>
 <RETURNS>void </RETURNS>
-char *prefix
+idmef_time_t *time, uint32_t usec
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_log_set_callback</NAME>
+<NAME>idmef_time_set_gmt_offset</NAME>
 <RETURNS>void </RETURNS>
-void log_cb(prelude_log_t level, const char *str)
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_log_set_logfile</NAME>
-<RETURNS>int </RETURNS>
-const char *filename
-</FUNCTION>
-<MACRO>
-<NAME>PRELUDE_LIST</NAME>
-#define PRELUDE_LIST(item) prelude_list_t (item) = { &(item), &(item) }
-</MACRO>
-<STRUCT>
-<NAME>prelude_list_t</NAME>
-typedef struct prelude_list {
-        struct prelude_list *next;
-        struct prelude_list *prev;
-} prelude_list_t;
-</STRUCT>
-<MACRO>
-<NAME>prelude_list_entry</NAME>
-#define prelude_list_entry(item, type, member)                             \
-        (type *) ((unsigned long) item - (unsigned long) &((type *) 0)->member)
-</MACRO>
-<MACRO>
-<NAME>prelude_list_for_each</NAME>
-#define prelude_list_for_each(list, pos)                                   \
-        for ( (pos) = (list)->next; (pos) != (list); (pos) = (pos)->next )
-</MACRO>
-<MACRO>
-<NAME>prelude_list_for_each_safe</NAME>
-#define prelude_list_for_each_safe(list, pos, bkp)                         \
-        for ( (pos) = (list)->next, (bkp) = (pos)->next; (pos) != (list); (pos) = (bkp), (bkp) = (pos)->next )
-</MACRO>
-<MACRO>
-<NAME>prelude_list_for_each_reversed</NAME>
-#define prelude_list_for_each_reversed(list, pos)                          \
-        for ( (pos) = (list)->prev; (pos) != (list); (pos) = (pos)->prev ) 
-</MACRO>
-<MACRO>
-<NAME>prelude_list_for_each_reversed_safe</NAME>
-#define prelude_list_for_each_reversed_safe(list, pos, bkp)                \
-        for ( (pos) = (list)->prev, (bkp) = (pos)->prev; (pos) != (list); (pos) = (bkp), (bkp) = (pos)->prev )
-</MACRO>
-<MACRO>
-<NAME>prelude_list_for_each_continue</NAME>
-#define prelude_list_for_each_continue(list, pos)                          \
-        for ( (pos) = ((pos) == NULL) ? (list)->next : (pos)->next; (pos) != (list); (pos) = (pos)->next )
-</MACRO>
-<MACRO>
-<NAME>prelude_list_for_each_continue_safe</NAME>
-#define prelude_list_for_each_continue_safe(list, pos, bkp)                \
-        for ( (pos) = ((bkp) == NULL) ? (list)->next : (bkp); (bkp) = (pos)->next, (pos) != (list); (pos) = (bkp) )
-</MACRO>
-<MACRO>
-<NAME>prelude_list_get_next</NAME>
-#define prelude_list_get_next(list, pos, class, member) \
-        pos ? \
-                ((pos)->member.next == (list)) ? NULL : \
-                                prelude_list_entry((pos)->member.next, class, member) \
-        : \
-                ((list)->next == (list)) ? NULL : \
-                                prelude_list_entry((list)->next, class, member)
-</MACRO>
-<MACRO>
-<NAME>prelude_list_get_next_safe</NAME>
-#define prelude_list_get_next_safe(list, pos, bkp, class, member)                                                                \
-        pos ?                                                                                                            \
-              (((pos) = bkp),                                                                                            \
-               ((bkp) = (! (bkp) || (bkp)->member.next == list) ? NULL : prelude_list_entry((pos)->member.next, class, member)), \
-               (pos))                                                                                                    \
-        :                                                                                                                \
-              (((pos) = ((list)->next == list) ? NULL : prelude_list_entry((list)->next, class, member)),                        \
-               ((bkp) = (! (pos) ||(pos)->member.next == list ) ? NULL : prelude_list_entry((pos)->member.next, class, member)), \
-               (pos))
-</MACRO>
-<MACRO>
-<NAME>PRELUDE_LINKED_OBJECT</NAME>
-#define PRELUDE_LINKED_OBJECT   \
-        prelude_list_t _list;   \
-        unsigned int _object_id
-</MACRO>
-<STRUCT>
-<NAME>prelude_linked_object_t</NAME>
-typedef struct {
-        PRELUDE_LINKED_OBJECT;
-} prelude_linked_object_t;
-</STRUCT>
-<MACRO>
-<NAME>prelude_linked_object_get_object</NAME>
-#define prelude_linked_object_get_object(object)  \
-        (void *) prelude_list_entry(object, prelude_linked_object_t, _list)
-</MACRO>
-<FUNCTION>
-<NAME>idmef_message_set_value</NAME>
-<RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, idmef_value_t *value
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_message_get_value</NAME>
-<RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, idmef_value_t **value
+idmef_time_t *time, int32_t gmtoff
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_message_set_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, const char *value
+<NAME>idmef_time_get_sec</NAME>
+<RETURNS>uint32_t </RETURNS>
+const idmef_time_t *time
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_message_get_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, char **result
+<NAME>idmef_time_get_usec</NAME>
+<RETURNS>uint32_t </RETURNS>
+const idmef_time_t *time
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_message_set_number</NAME>
-<RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, double number
+<NAME>idmef_time_get_gmt_offset</NAME>
+<RETURNS>int32_t </RETURNS>
+const idmef_time_t *time
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_message_get_number</NAME>
+<NAME>idmef_time_to_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, double *result
+const idmef_time_t *time, prelude_string_t *out
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_message_set_data</NAME>
+<NAME>idmef_time_to_ntpstamp</NAME>
 <RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, const unsigned char *data, size_t size
+const idmef_time_t *time, prelude_string_t *out
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_message_get_data</NAME>
+<NAME>idmef_time_compare</NAME>
 <RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, unsigned char **data, size_t *size
+const idmef_time_t *time1, const idmef_time_t *time2
 </FUNCTION>
 <MACRO>
 <NAME>PRELUDE_ERROR_SYSTEM_ERROR</NAME>
diff --git a/docs/api/tmpl/prelude-async.sgml b/docs/api/tmpl/prelude-async.sgml
index e73b12d..171b68d 100644
--- a/docs/api/tmpl/prelude-async.sgml
+++ b/docs/api/tmpl/prelude-async.sgml
@@ -19,8 +19,7 @@ prelude-async
 
 <!-- ##### ENUM prelude_async_flags_t ##### -->
 <para>
-Provides asynchronous timer, meaning the user specified callback function will be called automatically, from an asynchronous thread.
-If you use this flags, you don't need to call prelude_wake_up_timer() anymore.
+
 </para>
 
 @PRELUDE_ASYNC_FLAGS_TIMER: 
diff --git a/gtk-doc.make b/gtk-doc.make
index 354ffb7..0f87cc7 100644
--- a/gtk-doc.make
+++ b/gtk-doc.make
@@ -7,9 +7,11 @@
 if GTK_DOC_USE_LIBTOOL
 GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = $(LIBTOOL) --mode=execute
 else
 GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = sh -c
 endif
 
 # We set GPATH here; this gives us semantics for GNU make
@@ -53,6 +55,8 @@ endif
 
 docs: html-build.stamp
 
+$(REPORT_FILES): sgml-build.stamp
+
 #### scan ####
 
 scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
@@ -61,7 +65,7 @@ scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
 	cd $(srcdir) && \
 	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
 	if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
-	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
 	else \
 	    cd $(srcdir) ; \
 	    for i in $(SCANOBJ_FILES) ; do \
@@ -107,7 +111,12 @@ html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
 	@-chmod -R u+w $(srcdir)
 	rm -rf $(srcdir)/html
 	mkdir $(srcdir)/html
-	cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+	mkhtml_options=""; \
+	gtkdoc-mkhtml 2>&1 --help | grep  >/dev/null "\-\-path"; \
+	if test "$(?)" = "0"; then \
+	  mkhtml_options=--path="$(srcdir)"; \
+	fi
+	cd $(srcdir)/html && gtkdoc-mkhtml $(mkhtml_options) $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
 	test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
 	@echo 'gtk-doc: Fixing cross-references'
 	cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
@@ -128,24 +137,37 @@ maintainer-clean-local: clean
 	cd $(srcdir) && rm -rf xml html
 
 install-data-local:
-	-installfiles=`echo $(srcdir)/html/*`; \
+	installfiles=`echo $(srcdir)/html/*`; \
 	if test "$$installfiles" = '$(srcdir)/html/*'; \
 	then echo '-- Nothing to install' ; \
 	else \
-	  $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+	  if test -n "$(DOC_MODULE_VERSION)"; then \
+	    installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+	  else \
+	    installdir="$(DESTDIR)$(TARGET_DIR)"; \
+	  fi; \
+	  $(mkinstalldirs) $${installdir} ; \
 	  for i in $$installfiles; do \
 	    echo '-- Installing '$$i ; \
-	    $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+	    $(INSTALL_DATA) $$i $${installdir}; \
 	  done; \
-	  echo '-- Installing $(srcdir)/html/index.sgml' ; \
-	  $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
-	  which gtkdoc-rebase >/dev/null && \
-	    gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) ; \
+	  if test -n "$(DOC_MODULE_VERSION)"; then \
+	    mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+	      $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+	    mv -f $${installdir}/$(DOC_MODULE).devhelp \
+	      $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \
+	  fi; \
+	  ! which gtkdoc-rebase >/dev/null 2>&1 || \
+	    gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir} ; \
 	fi
-	
 
 uninstall-local:
-	rm -f $(DESTDIR)$(TARGET_DIR)/*
+	if test -n "$(DOC_MODULE_VERSION)"; then \
+	  installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+	else \
+	  installdir="$(DESTDIR)$(TARGET_DIR)"; \
+	fi; \
+	rm -rf $${installdir}
 
 #
 # Require gtk-doc when making dist
@@ -168,6 +190,7 @@ dist-hook: dist-check-gtkdoc dist-hook-local
 	-cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
 	-cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
 	cd $(distdir) && rm -f $(DISTCLEANFILES)
-	-gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
+	! which gtkdoc-rebase >/dev/null 2>&1 || \
+	  gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
 
 .PHONY : dist-hook-local docs
diff --git a/src/idmef-path.c b/src/idmef-path.c
index dff2cb4..19e5aea 100644
--- a/src/idmef-path.c
+++ b/src/idmef-path.c
@@ -1135,16 +1135,16 @@ int idmef_path_clone(const idmef_path_t *src, idmef_path_t **dst)
 /**
  * idmef_path_check_operator:
  * @path: Pointer to a #idmef_path_t object.
- * @operator: Operator to check compatibility with.
+ * @op: Operator to check compatibility with.
  *
- * Check whether @operator can apply to value pointed to by @path.
+ * Check whether @op can apply to value pointed to by @path.
  *
  * Returns: 0 on success, a negative value if an error occured.
  */
-int idmef_path_check_operator(const idmef_path_t *path, idmef_criterion_operator_t operator)
+int idmef_path_check_operator(const idmef_path_t *path, idmef_criterion_operator_t op)
 {
         prelude_return_val_if_fail(path, prelude_error(PRELUDE_ERROR_ASSERTION));
-        return idmef_value_type_check_operator(idmef_path_get_value_type(path, -1), operator);
+        return idmef_value_type_check_operator(idmef_path_get_value_type(path, -1), op);
 }
 
 
diff --git a/src/include/prelude-async.h b/src/include/prelude-async.h
index ffe2c9a..006c539 100644
--- a/src/include/prelude-async.h
+++ b/src/include/prelude-async.h
@@ -32,6 +32,17 @@
 #endif
 
 
+/**
+ * prelude_async_flags_t
+ * @PRELUDE_ASYNC_FLAGS_TIMER: Enable asynchronous timer.
+ *
+ * This provides asynchronous timer. When enabled, the heartbeat
+ * function (and user specified callback, if any) will be called
+ * automatically, from an asynchronous thread.
+ *
+ * If you use this flags, you won't need to call prelude_wake_up_timer()
+ * anymore.
+ */
 typedef enum {
         PRELUDE_ASYNC_FLAGS_TIMER   = 0x01
 } prelude_async_flags_t;
diff --git a/src/include/prelude-client.h b/src/include/prelude-client.h
index fe69425..299b227 100644
--- a/src/include/prelude-client.h
+++ b/src/include/prelude-client.h
@@ -93,8 +93,6 @@ int prelude_client_set_config_filename(prelude_client_t *client, const char *fil
 
 const char *prelude_client_get_config_filename(prelude_client_t *client);
 
-prelude_bool_t prelude_client_is_setup_needed(int error);
-
 prelude_client_profile_t *prelude_client_get_profile(prelude_client_t *client);
 
 int prelude_client_new_msgbuf(prelude_client_t *client, prelude_msgbuf_t **msgbuf);
@@ -103,11 +101,12 @@ int prelude_client_handle_msg_default(prelude_client_t *client, prelude_msg_t *m
 
 int _prelude_client_register_options(void);
 
-/*
- * deprecated:
- */
+#ifndef PRELUDE_DISABLE_DEPRECATED
 const char *prelude_client_get_setup_error(prelude_client_t *client);
 
+prelude_bool_t prelude_client_is_setup_needed(int error);
+#endif
+
 void prelude_client_print_setup_error(prelude_client_t *client);
 
 
diff --git a/src/prelude-client.c b/src/prelude-client.c
index d2d0f82..d20d618 100644
--- a/src/prelude-client.c
+++ b/src/prelude-client.c
@@ -1764,6 +1764,7 @@ prelude_client_profile_t *prelude_client_get_profile(prelude_client_t *client)
 
 
 
+#ifndef PRELUDE_DISABLE_DEPRECATED
 /**
  * prelude_client_is_setup_needed:
  * @error: Error returned by prelude_client_start().
@@ -1785,7 +1786,6 @@ prelude_bool_t prelude_client_is_setup_needed(int error)
 }
 
 
-
 const char *prelude_client_get_setup_error(prelude_client_t *client)
 {
         int ret;
@@ -1833,6 +1833,7 @@ const char *prelude_client_get_setup_error(prelude_client_t *client)
 
         return _prelude_thread_get_error();
 }
+#endif
 
 
 
diff --git a/src/prelude-option.c b/src/prelude-option.c
index 4172855..72364ad 100644
--- a/src/prelude-option.c
+++ b/src/prelude-option.c
@@ -704,7 +704,7 @@ static int get_option_from_optlist(void *context, prelude_option_t *optlist,
  * @argc: Number of argument.
  * @argv: Argument list.
  * @err: Pointer to a #prelude_string_t object where to store an error string.
- * @context:
+ * @context: Pointer to an optional option context.
  *
  * prelude_option_read(), parse the given argument and try to
  * match them against option in @option. If an option match, it's associated
_______________________________________________
Prelude-cvslog site list
[email protected]
http://lists.prelude-ids.org/mailman/listinfo/prelude-cvslog