r11154 - libprelude/trunk/docs/api

[email protected]
Newsgroups gmane.comp.security.ids.prelude.cvs
Message-ID <[email protected]>
Author: yoann
Date: 2009-04-20 17:05:34 +0200 (Mon, 20 Apr 2009)
New Revision: 11154

Modified:
   libprelude/trunk/docs/api/libprelude-decl.txt
Log:
Update documentation.

Modified: libprelude/trunk/docs/api/libprelude-decl.txt
===================================================================
--- libprelude/trunk/docs/api/libprelude-decl.txt	2009-04-20 15:05:30 UTC (rev 11153)
+++ libprelude/trunk/docs/api/libprelude-decl.txt	2009-04-20 15:05:34 UTC (rev 11154)
@@ -1,327 +1,2554 @@
+<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;
+</TYPEDEF>
+<FUNCTION>
+<NAME>idmef_criterion_operator_to_string</NAME>
+<RETURNS>const char *</RETURNS>
+idmef_criterion_operator_t op
+</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
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_destroy</NAME>
+<RETURNS>void </RETURNS>
+idmef_criterion_t *criterion
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_ref</NAME>
+<RETURNS>idmef_criteria_t *</RETURNS>
+idmef_criteria_t *criteria
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_clone</NAME>
+<RETURNS>int </RETURNS>
+const idmef_criterion_t *criterion, idmef_criterion_t **dst
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_print</NAME>
+<RETURNS>int </RETURNS>
+const idmef_criterion_t *criterion, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_to_string</NAME>
+<RETURNS>int </RETURNS>
+const idmef_criterion_t *criterion, prelude_string_t *out
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_get_path</NAME>
+<RETURNS>idmef_path_t *</RETURNS>
+const idmef_criterion_t *criterion
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_get_value</NAME>
+<RETURNS>idmef_criterion_value_t *</RETURNS>
+const idmef_criterion_t *criterion
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_get_operator</NAME>
+<RETURNS>idmef_criterion_operator_t </RETURNS>
+const idmef_criterion_t *criterion
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_match</NAME>
+<RETURNS>int </RETURNS>
+const idmef_criterion_t *criterion, idmef_message_t *message
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_new</NAME>
+<RETURNS>int </RETURNS>
+idmef_criteria_t **criteria
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_destroy</NAME>
+<RETURNS>void </RETURNS>
+idmef_criteria_t *criteria
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_clone</NAME>
+<RETURNS>int </RETURNS>
+idmef_criteria_t *src, idmef_criteria_t **dst
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_print</NAME>
+<RETURNS>int </RETURNS>
+const idmef_criteria_t *criteria, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_to_string</NAME>
+<RETURNS>int </RETURNS>
+const idmef_criteria_t *criteria, prelude_string_t *out
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_is_criterion</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const idmef_criteria_t *criteria
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_get_criterion</NAME>
+<RETURNS>idmef_criterion_t *</RETURNS>
+const idmef_criteria_t *criteria
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_set_criterion</NAME>
+<RETURNS>void </RETURNS>
+idmef_criteria_t *criteria, idmef_criterion_t *criterion
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_or_criteria</NAME>
+<RETURNS>void </RETURNS>
+idmef_criteria_t *criteria, idmef_criteria_t *criteria2
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_and_criteria</NAME>
+<RETURNS>int </RETURNS>
+idmef_criteria_t *criteria, idmef_criteria_t *criteria2
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_match</NAME>
+<RETURNS>int </RETURNS>
+const idmef_criteria_t *criteria, idmef_message_t *message
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_get_or</NAME>
+<RETURNS>idmef_criteria_t *</RETURNS>
+const idmef_criteria_t *criteria
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_get_and</NAME>
+<RETURNS>idmef_criteria_t *</RETURNS>
+const idmef_criteria_t *criteria
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_new_from_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_criteria_t **criteria, const char *str
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_set_negation</NAME>
+<RETURNS>void </RETURNS>
+idmef_criteria_t *criteria, prelude_bool_t negate
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criteria_get_negation</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const idmef_criteria_t *criteria
+</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>
+prelude_msg_t **msg, prelude_io_t *pio
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_forward</NAME>
+<RETURNS>int </RETURNS>
+prelude_msg_t *msg, prelude_io_t *dst, prelude_io_t *src
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_get</NAME>
+<RETURNS>int </RETURNS>
+prelude_msg_t *msg, uint8_t *tag, uint32_t *len, void **buf
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_recycle</NAME>
+<RETURNS>void </RETURNS>
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_mark_end</NAME>
+<RETURNS>void </RETURNS>
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_dynamic_new</NAME>
+<RETURNS>int </RETURNS>
+prelude_msg_t **ret, int (*flush_msg_cb)(prelude_msg_t **msg, void *data), void *data
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_new</NAME>
+<RETURNS>int </RETURNS>
+prelude_msg_t **ret, size_t msgcount, size_t msglen, uint8_t tag, prelude_msg_priority_t priority
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_set</NAME>
+<RETURNS>int </RETURNS>
+prelude_msg_t *msg, uint8_t tag, uint32_t len, const void *data
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_write</NAME>
+<RETURNS>int </RETURNS>
+prelude_msg_t *msg, prelude_io_t *dst
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_set_tag</NAME>
+<RETURNS>void </RETURNS>
+prelude_msg_t *msg, uint8_t tag
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_set_priority</NAME>
+<RETURNS>void </RETURNS>
+prelude_msg_t *msg, prelude_msg_priority_t priority
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_get_tag</NAME>
+<RETURNS>uint8_t </RETURNS>
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_get_priority</NAME>
+<RETURNS>prelude_msg_priority_t </RETURNS>
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_get_len</NAME>
+<RETURNS>uint32_t </RETURNS>
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<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>
+prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_msg_is_fragment</NAME>
+<RETURNS>int </RETURNS>
+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>
+<FUNCTION>
+<NAME>prelude_thread_init</NAME>
+<RETURNS>int </RETURNS>
+void *nil
+</FUNCTION>
 <MACRO>
-<NAME>PRELUDE_ERROR_SYSTEM_ERROR</NAME>
-#define PRELUDE_ERROR_SYSTEM_ERROR    (1 << 15)
+<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>
+<RETURNS>int </RETURNS>
+prelude_msgbuf_t *msg, int type, const char *request
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_new_request</NAME>
+<RETURNS>int </RETURNS>
+prelude_msgbuf_t *msgbuf,uint32_t request_id, uint64_t *target_id, size_t size
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_process_request</NAME>
+<RETURNS>int </RETURNS>
+prelude_client_t *client, prelude_msg_t *msg, prelude_msgbuf_t *reply
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_recv_reply</NAME>
+<RETURNS>int </RETURNS>
+prelude_msg_t *msg, uint64_t *source_id, uint32_t *request_id, void **value
+</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)
+</MACRO>
+<FUNCTION>
+<NAME>prelude_timer_init</NAME>
+<RETURNS>void </RETURNS>
+prelude_timer_t *timer
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_timer_init_list</NAME>
+<RETURNS>void </RETURNS>
+prelude_timer_t *timer
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_timer_reset</NAME>
+<RETURNS>void </RETURNS>
+prelude_timer_t *timer
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_timer_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_timer_t *timer
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_timer_wake_up</NAME>
+<RETURNS>void </RETURNS>
+void
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_timer_flush</NAME>
+<RETURNS>void </RETURNS>
+void
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_timer_lock_critical_region</NAME>
+<RETURNS>void </RETURNS>
+void
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_timer_unlock_critical_region</NAME>
+<RETURNS>void </RETURNS>
+void
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_additional_data_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_additional_data_t *additional_data, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_reference_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_reference_t *reference, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_classification_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_classification_t *classification, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_user_id_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_user_id_t *user_id, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_user_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_user_t *user, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_address_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_address_t *address, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_process_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_process_t *process, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_web_service_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_web_service_t *web_service, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_snmp_service_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_snmp_service_t *snmp_service, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_service_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_service_t *service, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_node_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_node_t *node, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_source_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_source_t *source, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_file_access_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_file_access_t *file_access, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_inode_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_inode_t *inode, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_checksum_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_checksum_t *checksum, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_file_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_file_t *file, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_linkage_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_linkage_t *linkage, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_target_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_target_t *target, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_analyzer_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_analyzer_t *analyzer, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_alertident_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_alertident_t *alertident, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_impact_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_impact_t *impact, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_action_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_action_t *action, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_confidence_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_confidence_t *confidence, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_assessment_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_assessment_t *assessment, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_tool_alert_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_tool_alert_t *tool_alert, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_correlation_alert_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_correlation_alert_t *correlation_alert, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_overflow_alert_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_overflow_alert_t *overflow_alert, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_alert_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_alert_t *alert, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_heartbeat_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_heartbeat_t *heartbeat, prelude_msgbuf_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_message_write</NAME>
+<RETURNS>int </RETURNS>
+idmef_message_t *message, prelude_msgbuf_t *msg
+</FUNCTION>
+<TYPEDEF>
+<NAME>prelude_io_t</NAME>
+typedef struct prelude_io prelude_io_t;
+</TYPEDEF>
+<FUNCTION>
+<NAME>prelude_io_new</NAME>
+<RETURNS>int </RETURNS>
+prelude_io_t **ret
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_io_t *pio
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_set_file_io</NAME>
+<RETURNS>void </RETURNS>
+prelude_io_t *pio, FILE *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_set_tls_io</NAME>
+<RETURNS>void </RETURNS>
+prelude_io_t *pio, void *tls
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_set_sys_io</NAME>
+<RETURNS>void </RETURNS>
+prelude_io_t *pio, int fd
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_set_buffer_io</NAME>
+<RETURNS>int </RETURNS>
+prelude_io_t *pio
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_set_fdptr</NAME>
+<RETURNS>void </RETURNS>
+prelude_io_t *pio, void *ptr
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_set_write_callback</NAME>
+<RETURNS>void </RETURNS>
+prelude_io_t *pio, ssize_t (*write)(prelude_io_t *io, const void *buf, size_t count)
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_set_read_callback</NAME>
+<RETURNS>void </RETURNS>
+prelude_io_t *pio, ssize_t (*read)(prelude_io_t *io, void *buf, size_t count)
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_set_pending_callback</NAME>
+<RETURNS>void </RETURNS>
+prelude_io_t *pio, ssize_t (*pending)(prelude_io_t *io)
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_close</NAME>
+<RETURNS>int </RETURNS>
+prelude_io_t *pio
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_read</NAME>
+<RETURNS>ssize_t </RETURNS>
+prelude_io_t *pio, void *buf, size_t count
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_read_wait</NAME>
+<RETURNS>ssize_t </RETURNS>
+prelude_io_t *pio, void *buf, size_t count
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_read_delimited</NAME>
+<RETURNS>ssize_t </RETURNS>
+prelude_io_t *pio, unsigned char **buf
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_write</NAME>
+<RETURNS>ssize_t </RETURNS>
+prelude_io_t *pio, const void *buf, size_t count
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_write_delimited</NAME>
+<RETURNS>ssize_t </RETURNS>
+prelude_io_t *pio, const void *buf, uint16_t count
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_forward</NAME>
+<RETURNS>ssize_t </RETURNS>
+prelude_io_t *dst, prelude_io_t *src, size_t count
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_get_fd</NAME>
+<RETURNS>int </RETURNS>
+prelude_io_t *pio
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_get_fdptr</NAME>
+<RETURNS>void *</RETURNS>
+prelude_io_t *pio
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_pending</NAME>
+<RETURNS>ssize_t </RETURNS>
+prelude_io_t *pio
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_io_is_error_fatal</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+prelude_io_t *pio, int error
+</FUNCTION>
+<TYPEDEF>
+<NAME>prelude_failover_t</NAME>
+typedef struct prelude_failover prelude_failover_t;
+</TYPEDEF>
+<FUNCTION>
+<NAME>prelude_failover_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_failover_t *failover
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_failover_new</NAME>
+<RETURNS>int </RETURNS>
+prelude_failover_t **ret, const char *dirname
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_failover_set_quota</NAME>
+<RETURNS>void </RETURNS>
+prelude_failover_t *failover, size_t limit
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_failover_save_msg</NAME>
+<RETURNS>int </RETURNS>
+prelude_failover_t *failover, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_failover_get_saved_msg</NAME>
+<RETURNS>ssize_t </RETURNS>
+prelude_failover_t *failover, prelude_msg_t **out
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_failover_get_deleted_msg_count</NAME>
+<RETURNS>unsigned long </RETURNS>
+prelude_failover_t *failover
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_failover_get_available_msg_count</NAME>
+<RETURNS>unsigned long </RETURNS>
+prelude_failover_t *failover
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_failover_enable_transaction</NAME>
+<RETURNS>void </RETURNS>
+prelude_failover_t *failover
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_failover_disable_transaction</NAME>
+<RETURNS>void </RETURNS>
+prelude_failover_t *failover
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_failover_commit</NAME>
+<RETURNS>int </RETURNS>
+prelude_failover_t *failover, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_failover_rollback</NAME>
+<RETURNS>int </RETURNS>
+prelude_failover_t *failover, prelude_msg_t *msg
+</FUNCTION>
 <ENUM>
-<NAME>prelude_error_source_t</NAME>
+<NAME>prelude_option_type_t</NAME>
 typedef enum {
-    PRELUDE_ERROR_SOURCE_UNKNOWN = 0,
-    PRELUDE_ERROR_SOURCE_IO = 1,
-    PRELUDE_ERROR_SOURCE_MESSAGE = 2,
-    PRELUDE_ERROR_SOURCE_FAILOVER = 3,
-    PRELUDE_ERROR_SOURCE_CLIENT = 4,
-    PRELUDE_ERROR_SOURCE_CLIENT_PROFILE = 5,
-    PRELUDE_ERROR_SOURCE_EXTRACT = 6,
-    PRELUDE_ERROR_SOURCE_CONNECTION = 7,
-    PRELUDE_ERROR_SOURCE_CONNECTION_POOL = 8,
-    PRELUDE_ERROR_SOURCE_CONFIG_ENGINE = 9,
-    PRELUDE_ERROR_SOURCE_STRING = 10,
-    PRELUDE_ERROR_SOURCE_IDMEF_TREE_WRAP = 11,
-    PRELUDE_ERROR_SOURCE_IDMEF_PATH = 12,
-    PRELUDE_ERROR_SOURCE_IDMEF_TYPE = 13,
-    PRELUDE_ERROR_SOURCE_IDMEF_MESSAGE_READ = 14,
-    PRELUDE_ERROR_SOURCE_IDMEF_CRITERIA = 15,
-    PRELUDE_ERROR_SOURCE_IDMEF_VALUE_TYPE = 16,
-    PRELUDE_ERROR_SOURCE_PRELUDEDB = 255,
-} prelude_error_source_t;
+        PRELUDE_OPTION_TYPE_CLI  = 0x01,
+        PRELUDE_OPTION_TYPE_CFG  = 0x02,
+        PRELUDE_OPTION_TYPE_WIDE = 0x04,
+        PRELUDE_OPTION_TYPE_CONTEXT = 0x08,
+        PRELUDE_OPTION_TYPE_ROOT    = 0x10,
+        PRELUDE_OPTION_TYPE_DESTROY = 0x20
+} prelude_option_type_t;
 </ENUM>
 <ENUM>
-<NAME>prelude_error_code_t</NAME>
+<NAME>prelude_option_input_type_t</NAME>
 typedef enum {
-    PRELUDE_ERROR_NO_ERROR = 0,
-    PRELUDE_ERROR_GENERIC = 1,
-    PRELUDE_ERROR_TLS = 2,
-    PRELUDE_ERROR_INVAL_LENGTH = 3,
-    PRELUDE_ERROR_INVAL_MESSAGE = 4,
-    PRELUDE_ERROR_PROTOCOL_VERSION = 5,
-    PRELUDE_ERROR_EOF = 6,
-    PRELUDE_ERROR_PROFILE = 8,
-    PRELUDE_ERROR_TLS_AUTH_REJECTED = 16,
-    PRELUDE_ERROR_INVAL_INT8 = 17,
-    PRELUDE_ERROR_INVAL_INT16 = 18,
-    PRELUDE_ERROR_INVAL_INT32 = 19,
-    PRELUDE_ERROR_INVAL_INT64 = 20,
-    PRELUDE_ERROR_INVAL_FLOAT = 21,
-    PRELUDE_ERROR_INVAL_CHAR = 22,
-    PRELUDE_ERROR_INVAL_IDMEF_TIME = 23,
-    PRELUDE_ERROR_CONNECTION_STRING = 24,
-    PRELUDE_ERROR_IDMEF_VALUE_TYPE_UNKNOWN = 25,
-    PRELUDE_ERROR_IDMEF_VALUE_TYPE_COPY_UNAVAILABLE = 26,
-    PRELUDE_ERROR_IDMEF_VALUE_TYPE_CLONE_UNAVAILABLE = 27,
-    PRELUDE_ERROR_IDMEF_VALUE_TYPE_COMPARE_UNAVAILABLE = 28,
-    PRELUDE_ERROR_IDMEF_VALUE_TYPE_READ_UNAVAILABLE = 29,
-    PRELUDE_ERROR_IDMEF_VALUE_TYPE_WRITE_UNAVAILABLE = 30,
-    PRELUDE_ERROR_IDMEF_VALUE_TYPE_COMPARE_MISMATCH = 31,
-    PRELUDE_ERROR_IDMEF_VALUE_TYPE_PARSE = 32,
-    PRELUDE_ERROR_IDMEF_CLASS_UNKNOWN = 33,
-    PRELUDE_ERROR_IDMEF_CLASS_UNKNOWN_CHILD = 34,
-    PRELUDE_ERROR_IDMEF_CLASS_UNKNOWN_NAME = 35,
-    PRELUDE_ERROR_IDMEF_PATH_LENGTH = 36,
-    PRELUDE_ERROR_IDMEF_PATH_DEPTH = 37,
-    PRELUDE_ERROR_IDMEF_PATH_PARENT_ROOT = 38,
-    PRELUDE_ERROR_IDMEF_PATH_NTH = 39,
-    PRELUDE_ERROR_IDMEF_PATH_MISS_INDEX = 40,
-    PRELUDE_ERROR_IDMEF_PATH_INTEGRITY = 41,
-    PRELUDE_ERROR_IDMEF_PATH_INDEX_RESERVED = 42,
-    PRELUDE_ERROR_IDMEF_PATH_INDEX_FORBIDDEN = 43,
-    PRELUDE_ERROR_IDMEF_PATH_INDEX_UNDEFINED = 44,
-    PRELUDE_ERROR_IDMEF_TREE_INDEX_UNDEFINED = 45,
-    PRELUDE_ERROR_IDMEF_UNKNOWN_ENUM_STRING = 46,
-    PRELUDE_ERROR_IDMEF_UNKNOWN_TAG = 47,
-    PRELUDE_ERROR_DAEMONIZE_LOCK_HELD = 48,
-    PRELUDE_ERROR_PLUGIN_LTDL_INIT = 49,
-    PRELUDE_ERROR_STRING_NOT_NULL_TERMINATED = 50,
-    PRELUDE_ERROR_CANT_RESOLVE = 51,
-    PRELUDE_ERROR_UNKNOWN_PERMISSION_TYPE = 52,
-    PRELUDE_ERROR_UNKNOWN_PERMISSION_BIT = 53,
-    PRELUDE_ERROR_IDMEF_CRITERIA_PARSE = 55,
-    PRELUDE_ERROR_IDMEF_CRITERION_UNSUPPORTED_OPERATOR = 56,
-    PRELUDE_ERROR_IDMEF_CRITERION_INVALID_REGEX = 57,
-    PRELUDE_ERROR_TLS_WARNING_ALERT = 58,
-    PRELUDE_ERROR_TLS_FATAL_ALERT = 59,
-    PRELUDE_ERROR_IDMEF_CLASS_CHILD_NOT_CLASS = 60,
-    PRELUDE_ERROR_ASSERTION = 61,
-    PRELUDE_ERROR_IDMEF_VALUE_TYPE_REF_UNAVAILABLE = 62,
-    PRELUDE_ERROR_UNKNOWN_ERRNO = 16382,
-    PRELUDE_ERROR_E2BIG = PRELUDE_ERROR_SYSTEM_ERROR | 0,
-    PRELUDE_ERROR_EACCES = PRELUDE_ERROR_SYSTEM_ERROR | 1,
-    PRELUDE_ERROR_EADDRINUSE = PRELUDE_ERROR_SYSTEM_ERROR | 2,
-    PRELUDE_ERROR_EADDRNOTAVAIL = PRELUDE_ERROR_SYSTEM_ERROR | 3,
-    PRELUDE_ERROR_EADV = PRELUDE_ERROR_SYSTEM_ERROR | 4,
-    PRELUDE_ERROR_EAFNOSUPPORT = PRELUDE_ERROR_SYSTEM_ERROR | 5,
-    PRELUDE_ERROR_EAGAIN = PRELUDE_ERROR_SYSTEM_ERROR | 6,
-    PRELUDE_ERROR_EALREADY = PRELUDE_ERROR_SYSTEM_ERROR | 7,
-    PRELUDE_ERROR_EAUTH = PRELUDE_ERROR_SYSTEM_ERROR | 8,
-    PRELUDE_ERROR_EBACKGROUND = PRELUDE_ERROR_SYSTEM_ERROR | 9,
-    PRELUDE_ERROR_EBADE = PRELUDE_ERROR_SYSTEM_ERROR | 10,
-    PRELUDE_ERROR_EBADF = PRELUDE_ERROR_SYSTEM_ERROR | 11,
-    PRELUDE_ERROR_EBADFD = PRELUDE_ERROR_SYSTEM_ERROR | 12,
-    PRELUDE_ERROR_EBADMSG = PRELUDE_ERROR_SYSTEM_ERROR | 13,
-    PRELUDE_ERROR_EBADR = PRELUDE_ERROR_SYSTEM_ERROR | 14,
-    PRELUDE_ERROR_EBADRPC = PRELUDE_ERROR_SYSTEM_ERROR | 15,
-    PRELUDE_ERROR_EBADRQC = PRELUDE_ERROR_SYSTEM_ERROR | 16,
-    PRELUDE_ERROR_EBADSLT = PRELUDE_ERROR_SYSTEM_ERROR | 17,
-    PRELUDE_ERROR_EBFONT = PRELUDE_ERROR_SYSTEM_ERROR | 18,
-    PRELUDE_ERROR_EBUSY = PRELUDE_ERROR_SYSTEM_ERROR | 19,
-    PRELUDE_ERROR_ECANCELED = PRELUDE_ERROR_SYSTEM_ERROR | 20,
-    PRELUDE_ERROR_ECHILD = PRELUDE_ERROR_SYSTEM_ERROR | 21,
-    PRELUDE_ERROR_ECHRNG = PRELUDE_ERROR_SYSTEM_ERROR | 22,
-    PRELUDE_ERROR_ECOMM = PRELUDE_ERROR_SYSTEM_ERROR | 23,
-    PRELUDE_ERROR_ECONNABORTED = PRELUDE_ERROR_SYSTEM_ERROR | 24,
-    PRELUDE_ERROR_ECONNREFUSED = PRELUDE_ERROR_SYSTEM_ERROR | 25,
-    PRELUDE_ERROR_ECONNRESET = PRELUDE_ERROR_SYSTEM_ERROR | 26,
-    PRELUDE_ERROR_ED = PRELUDE_ERROR_SYSTEM_ERROR | 27,
-    PRELUDE_ERROR_EDEADLK = PRELUDE_ERROR_SYSTEM_ERROR | 28,
-    PRELUDE_ERROR_EDEADLOCK = PRELUDE_ERROR_SYSTEM_ERROR | 29,
-    PRELUDE_ERROR_EDESTADDRREQ = PRELUDE_ERROR_SYSTEM_ERROR | 30,
-    PRELUDE_ERROR_EDIED = PRELUDE_ERROR_SYSTEM_ERROR | 31,
-    PRELUDE_ERROR_EDOM = PRELUDE_ERROR_SYSTEM_ERROR | 32,
-    PRELUDE_ERROR_EDOTDOT = PRELUDE_ERROR_SYSTEM_ERROR | 33,
-    PRELUDE_ERROR_EDQUOT = PRELUDE_ERROR_SYSTEM_ERROR | 34,
-    PRELUDE_ERROR_EEXIST = PRELUDE_ERROR_SYSTEM_ERROR | 35,
-    PRELUDE_ERROR_EFAULT = PRELUDE_ERROR_SYSTEM_ERROR | 36,
-    PRELUDE_ERROR_EFBIG = PRELUDE_ERROR_SYSTEM_ERROR | 37,
-    PRELUDE_ERROR_EFTYPE = PRELUDE_ERROR_SYSTEM_ERROR | 38,
-    PRELUDE_ERROR_EGRATUITOUS = PRELUDE_ERROR_SYSTEM_ERROR | 39,
-    PRELUDE_ERROR_EGREGIOUS = PRELUDE_ERROR_SYSTEM_ERROR | 40,
-    PRELUDE_ERROR_EHOSTDOWN = PRELUDE_ERROR_SYSTEM_ERROR | 41,
-    PRELUDE_ERROR_EHOSTUNREACH = PRELUDE_ERROR_SYSTEM_ERROR | 42,
-    PRELUDE_ERROR_EIDRM = PRELUDE_ERROR_SYSTEM_ERROR | 43,
-    PRELUDE_ERROR_EIEIO = PRELUDE_ERROR_SYSTEM_ERROR | 44,
-    PRELUDE_ERROR_EILSEQ = PRELUDE_ERROR_SYSTEM_ERROR | 45,
-    PRELUDE_ERROR_EINPROGRESS = PRELUDE_ERROR_SYSTEM_ERROR | 46,
-    PRELUDE_ERROR_EINTR = PRELUDE_ERROR_SYSTEM_ERROR | 47,
-    PRELUDE_ERROR_EINVAL = PRELUDE_ERROR_SYSTEM_ERROR | 48,
-    PRELUDE_ERROR_EIO = PRELUDE_ERROR_SYSTEM_ERROR | 49,
-    PRELUDE_ERROR_EISCONN = PRELUDE_ERROR_SYSTEM_ERROR | 50,
-    PRELUDE_ERROR_EISDIR = PRELUDE_ERROR_SYSTEM_ERROR | 51,
-    PRELUDE_ERROR_EISNAM = PRELUDE_ERROR_SYSTEM_ERROR | 52,
-    PRELUDE_ERROR_EL2HLT = PRELUDE_ERROR_SYSTEM_ERROR | 53,
-    PRELUDE_ERROR_EL2NSYNC = PRELUDE_ERROR_SYSTEM_ERROR | 54,
-    PRELUDE_ERROR_EL3HLT = PRELUDE_ERROR_SYSTEM_ERROR | 55,
-    PRELUDE_ERROR_EL3RST = PRELUDE_ERROR_SYSTEM_ERROR | 56,
-    PRELUDE_ERROR_ELIBACC = PRELUDE_ERROR_SYSTEM_ERROR | 57,
-    PRELUDE_ERROR_ELIBBAD = PRELUDE_ERROR_SYSTEM_ERROR | 58,
-    PRELUDE_ERROR_ELIBEXEC = PRELUDE_ERROR_SYSTEM_ERROR | 59,
-    PRELUDE_ERROR_ELIBMAX = PRELUDE_ERROR_SYSTEM_ERROR | 60,
-    PRELUDE_ERROR_ELIBSCN = PRELUDE_ERROR_SYSTEM_ERROR | 61,
-    PRELUDE_ERROR_ELNRNG = PRELUDE_ERROR_SYSTEM_ERROR | 62,
-    PRELUDE_ERROR_ELOOP = PRELUDE_ERROR_SYSTEM_ERROR | 63,
-    PRELUDE_ERROR_EMEDIUMTYPE = PRELUDE_ERROR_SYSTEM_ERROR | 64,
-    PRELUDE_ERROR_EMFILE = PRELUDE_ERROR_SYSTEM_ERROR | 65,
-    PRELUDE_ERROR_EMLINK = PRELUDE_ERROR_SYSTEM_ERROR | 66,
-    PRELUDE_ERROR_EMSGSIZE = PRELUDE_ERROR_SYSTEM_ERROR | 67,
-    PRELUDE_ERROR_EMULTIHOP = PRELUDE_ERROR_SYSTEM_ERROR | 68,
-    PRELUDE_ERROR_ENAMETOOLONG = PRELUDE_ERROR_SYSTEM_ERROR | 69,
-    PRELUDE_ERROR_ENAVAIL = PRELUDE_ERROR_SYSTEM_ERROR | 70,
-    PRELUDE_ERROR_ENEEDAUTH = PRELUDE_ERROR_SYSTEM_ERROR | 71,
-    PRELUDE_ERROR_ENETDOWN = PRELUDE_ERROR_SYSTEM_ERROR | 72,
-    PRELUDE_ERROR_ENETRESET = PRELUDE_ERROR_SYSTEM_ERROR | 73,
-    PRELUDE_ERROR_ENETUNREACH = PRELUDE_ERROR_SYSTEM_ERROR | 74,
-    PRELUDE_ERROR_ENFILE = PRELUDE_ERROR_SYSTEM_ERROR | 75,
-    PRELUDE_ERROR_ENOANO = PRELUDE_ERROR_SYSTEM_ERROR | 76,
-    PRELUDE_ERROR_ENOBUFS = PRELUDE_ERROR_SYSTEM_ERROR | 77,
-    PRELUDE_ERROR_ENOCSI = PRELUDE_ERROR_SYSTEM_ERROR | 78,
-    PRELUDE_ERROR_ENODATA = PRELUDE_ERROR_SYSTEM_ERROR | 79,
-    PRELUDE_ERROR_ENODEV = PRELUDE_ERROR_SYSTEM_ERROR | 80,
-    PRELUDE_ERROR_ENOENT = PRELUDE_ERROR_SYSTEM_ERROR | 81,
-    PRELUDE_ERROR_ENOEXEC = PRELUDE_ERROR_SYSTEM_ERROR | 82,
-    PRELUDE_ERROR_ENOLCK = PRELUDE_ERROR_SYSTEM_ERROR | 83,
-    PRELUDE_ERROR_ENOLINK = PRELUDE_ERROR_SYSTEM_ERROR | 84,
-    PRELUDE_ERROR_ENOMEDIUM = PRELUDE_ERROR_SYSTEM_ERROR | 85,
-    PRELUDE_ERROR_ENOMEM = PRELUDE_ERROR_SYSTEM_ERROR | 86,
-    PRELUDE_ERROR_ENOMSG = PRELUDE_ERROR_SYSTEM_ERROR | 87,
-    PRELUDE_ERROR_ENONET = PRELUDE_ERROR_SYSTEM_ERROR | 88,
-    PRELUDE_ERROR_ENOPKG = PRELUDE_ERROR_SYSTEM_ERROR | 89,
-    PRELUDE_ERROR_ENOPROTOOPT = PRELUDE_ERROR_SYSTEM_ERROR | 90,
-    PRELUDE_ERROR_ENOSPC = PRELUDE_ERROR_SYSTEM_ERROR | 91,
-    PRELUDE_ERROR_ENOSR = PRELUDE_ERROR_SYSTEM_ERROR | 92,
-    PRELUDE_ERROR_ENOSTR = PRELUDE_ERROR_SYSTEM_ERROR | 93,
-    PRELUDE_ERROR_ENOSYS = PRELUDE_ERROR_SYSTEM_ERROR | 94,
-    PRELUDE_ERROR_ENOTBLK = PRELUDE_ERROR_SYSTEM_ERROR | 95,
-    PRELUDE_ERROR_ENOTCONN = PRELUDE_ERROR_SYSTEM_ERROR | 96,
-    PRELUDE_ERROR_ENOTDIR = PRELUDE_ERROR_SYSTEM_ERROR | 97,
-    PRELUDE_ERROR_ENOTEMPTY = PRELUDE_ERROR_SYSTEM_ERROR | 98,
-    PRELUDE_ERROR_ENOTNAM = PRELUDE_ERROR_SYSTEM_ERROR | 99,
-    PRELUDE_ERROR_ENOTSOCK = PRELUDE_ERROR_SYSTEM_ERROR | 100,
-    PRELUDE_ERROR_ENOTSUP = PRELUDE_ERROR_SYSTEM_ERROR | 101,
-    PRELUDE_ERROR_ENOTTY = PRELUDE_ERROR_SYSTEM_ERROR | 102,
-    PRELUDE_ERROR_ENOTUNIQ = PRELUDE_ERROR_SYSTEM_ERROR | 103,
-    PRELUDE_ERROR_ENXIO = PRELUDE_ERROR_SYSTEM_ERROR | 104,
-    PRELUDE_ERROR_EOPNOTSUPP = PRELUDE_ERROR_SYSTEM_ERROR | 105,
-    PRELUDE_ERROR_EOVERFLOW = PRELUDE_ERROR_SYSTEM_ERROR | 106,
-    PRELUDE_ERROR_EPERM = PRELUDE_ERROR_SYSTEM_ERROR | 107,
-    PRELUDE_ERROR_EPFNOSUPPORT = PRELUDE_ERROR_SYSTEM_ERROR | 108,
-    PRELUDE_ERROR_EPIPE = PRELUDE_ERROR_SYSTEM_ERROR | 109,
-    PRELUDE_ERROR_EPROCLIM = PRELUDE_ERROR_SYSTEM_ERROR | 110,
-    PRELUDE_ERROR_EPROCUNAVAIL = PRELUDE_ERROR_SYSTEM_ERROR | 111,
-    PRELUDE_ERROR_EPROGMISMATCH = PRELUDE_ERROR_SYSTEM_ERROR | 112,
-    PRELUDE_ERROR_EPROGUNAVAIL = PRELUDE_ERROR_SYSTEM_ERROR | 113,
-    PRELUDE_ERROR_EPROTO = PRELUDE_ERROR_SYSTEM_ERROR | 114,
-    PRELUDE_ERROR_EPROTONOSUPPORT = PRELUDE_ERROR_SYSTEM_ERROR | 115,
-    PRELUDE_ERROR_EPROTOTYPE = PRELUDE_ERROR_SYSTEM_ERROR | 116,
-    PRELUDE_ERROR_ERANGE = PRELUDE_ERROR_SYSTEM_ERROR | 117,
-    PRELUDE_ERROR_EREMCHG = PRELUDE_ERROR_SYSTEM_ERROR | 118,
-    PRELUDE_ERROR_EREMOTE = PRELUDE_ERROR_SYSTEM_ERROR | 119,
-    PRELUDE_ERROR_EREMOTEIO = PRELUDE_ERROR_SYSTEM_ERROR | 120,
-    PRELUDE_ERROR_ERESTART = PRELUDE_ERROR_SYSTEM_ERROR | 121,
-    PRELUDE_ERROR_EROFS = PRELUDE_ERROR_SYSTEM_ERROR | 122,
-    PRELUDE_ERROR_ERPCMISMATCH = PRELUDE_ERROR_SYSTEM_ERROR | 123,
-    PRELUDE_ERROR_ESHUTDOWN = PRELUDE_ERROR_SYSTEM_ERROR | 124,
-    PRELUDE_ERROR_ESOCKTNOSUPPORT = PRELUDE_ERROR_SYSTEM_ERROR | 125,
-    PRELUDE_ERROR_ESPIPE = PRELUDE_ERROR_SYSTEM_ERROR | 126,
-    PRELUDE_ERROR_ESRCH = PRELUDE_ERROR_SYSTEM_ERROR | 127,
-    PRELUDE_ERROR_ESRMNT = PRELUDE_ERROR_SYSTEM_ERROR | 128,
-    PRELUDE_ERROR_ESTALE = PRELUDE_ERROR_SYSTEM_ERROR | 129,
-    PRELUDE_ERROR_ESTRPIPE = PRELUDE_ERROR_SYSTEM_ERROR | 130,
-    PRELUDE_ERROR_ETIME = PRELUDE_ERROR_SYSTEM_ERROR | 131,
-    PRELUDE_ERROR_ETIMEDOUT = PRELUDE_ERROR_SYSTEM_ERROR | 132,
-    PRELUDE_ERROR_ETOOMANYREFS = PRELUDE_ERROR_SYSTEM_ERROR | 133,
-    PRELUDE_ERROR_ETXTBSY = PRELUDE_ERROR_SYSTEM_ERROR | 134,
-    PRELUDE_ERROR_EUCLEAN = PRELUDE_ERROR_SYSTEM_ERROR | 135,
-    PRELUDE_ERROR_EUNATCH = PRELUDE_ERROR_SYSTEM_ERROR | 136,
-    PRELUDE_ERROR_EUSERS = PRELUDE_ERROR_SYSTEM_ERROR | 137,
-    PRELUDE_ERROR_EWOULDBLOCK = PRELUDE_ERROR_SYSTEM_ERROR | 138,
-    PRELUDE_ERROR_EXDEV = PRELUDE_ERROR_SYSTEM_ERROR | 139,
-    PRELUDE_ERROR_EXFULL = PRELUDE_ERROR_SYSTEM_ERROR | 140,
-} prelude_error_code_t;
+        PRELUDE_OPTION_INPUT_TYPE_STRING   = 1,
+        PRELUDE_OPTION_INPUT_TYPE_INTEGER  = 2,
+        PRELUDE_OPTION_INPUT_TYPE_BOOLEAN  = 3
+} prelude_option_input_type_t;
 </ENUM>
+<TYPEDEF>
+<NAME>prelude_option_t</NAME>
+typedef struct prelude_option prelude_option_t;
+</TYPEDEF>
+<TYPEDEF>
+<NAME>prelude_option_context_t</NAME>
+typedef struct prelude_option_context prelude_option_context_t;
+</TYPEDEF>
+<USER_FUNCTION>
+<NAME>prelude_option_destroy_callback_t</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *opt, prelude_string_t *out, void *context
+</USER_FUNCTION>
+<USER_FUNCTION>
+<NAME>prelude_option_commit_callback_t</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *opt, prelude_string_t *out, void *context
+</USER_FUNCTION>
+<USER_FUNCTION>
+<NAME>prelude_option_get_callback_t</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *opt, prelude_string_t *out, void *context
+</USER_FUNCTION>
+<USER_FUNCTION>
+<NAME>prelude_option_set_callback_t</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *opt, const char *optarg, prelude_string_t *err, void *context
+</USER_FUNCTION>
+<ENUM>
+<NAME>prelude_option_argument_t</NAME>
+typedef enum {
+        PRELUDE_OPTION_ARGUMENT_REQUIRED = 1,
+        PRELUDE_OPTION_ARGUMENT_OPTIONAL = 2,
+        PRELUDE_OPTION_ARGUMENT_NONE     = 3
+} prelude_option_argument_t;
+</ENUM>
+<ENUM>
+<NAME>prelude_option_priority_t</NAME>
+typedef enum {
+        PRELUDE_OPTION_PRIORITY_IMMEDIATE = -2,
+        PRELUDE_OPTION_PRIORITY_FIRST     = -1,
+        PRELUDE_OPTION_PRIORITY_NONE      =  0,
+        PRELUDE_OPTION_PRIORITY_LAST      =  2
+} prelude_option_priority_t;
+</ENUM>
+<ENUM>
+<NAME>prelude_option_warning_t</NAME>
+typedef enum {
+        PRELUDE_OPTION_WARNING_OPTION    = 0x1,
+        PRELUDE_OPTION_WARNING_ARG       = 0x2
+} prelude_option_warning_t;
+</ENUM>
+<FUNCTION>
+<NAME>prelude_option_set_priority</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *option, prelude_option_priority_t priority
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_print</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, prelude_option_type_t type, int descoff, FILE *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_wide_send_msg</NAME>
+<RETURNS>int </RETURNS>
+prelude_msgbuf_t *msgbuf, void *context
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *option
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_read</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *option, const char **filename,int *argc, char **argv, prelude_string_t **err, void *context
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_add</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *parent, prelude_option_t **retopt, prelude_option_type_t type,char shortopt, const char *longopt, const char *desc, prelude_option_argument_t has_arg,int (*set)(prelude_option_t *opt, const char *optarg, prelude_string_t *err, void *context),int (*get)(prelude_option_t *opt, prelude_string_t *out, void *context)
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_type</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, prelude_option_type_t type
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_type</NAME>
+<RETURNS>prelude_option_type_t </RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_warnings</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_warning_t new_warnings, prelude_option_warning_t *old_warnings
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_shortname</NAME>
+<RETURNS>char </RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_longname</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_data</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, void *data
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_data</NAME>
+<RETURNS>void *</RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_invoke_commit</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *opt, const char *ctname, prelude_string_t *value, void *context
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_invoke_set</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *opt, const char *ctname, prelude_string_t *value, void **context
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_invoke_get</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *opt, const char *ctname, prelude_string_t *value, void *context
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_invoke_destroy</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *opt, const char *ctname, prelude_string_t *value, void *context
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_new_root</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t **retopt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_new</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *parent, prelude_option_t **retopt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_longopt</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, const char *longopt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_longopt</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_description</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, const char *description
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_description</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_has_arg</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, prelude_option_argument_t has_arg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_has_arg</NAME>
+<RETURNS>prelude_option_argument_t </RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_value</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, const char *value
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_value</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_help</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, const char *help
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_help</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_input_validation_regex</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, const char *regex
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_input_validation_regex</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_input_type</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, prelude_option_input_type_t input_type
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_input_type</NAME>
+<RETURNS>prelude_option_input_type_t </RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_optlist</NAME>
+<RETURNS>prelude_list_t *</RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_next</NAME>
+<RETURNS>prelude_option_t *</RETURNS>
+prelude_option_t *start, prelude_option_t *cur
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_has_optlist</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_parent</NAME>
+<RETURNS>prelude_option_t *</RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_destroy_callback</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt,prelude_option_destroy_callback_t destroy
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_destroy_callback</NAME>
+<RETURNS>prelude_option_destroy_callback_t </RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_set_callback</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt,prelude_option_set_callback_t set
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_set_callback</NAME>
+<RETURNS>prelude_option_set_callback_t </RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_get_callback</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt,int (*get)(prelude_option_t *opt, prelude_string_t *out, void *context)
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_get_callback</NAME>
+<RETURNS>prelude_option_get_callback_t </RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_commit_callback</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, prelude_option_commit_callback_t commit
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_get_commit_callback</NAME>
+<RETURNS>prelude_option_commit_callback_t </RETURNS>
+prelude_option_t *opt
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_set_default_context</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_t *opt, void *context
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_new_context</NAME>
+<RETURNS>int </RETURNS>
+prelude_option_t *opt, prelude_option_context_t **ctx, const char *name, void *data
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_context_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_option_context_t *oc
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_search</NAME>
+<RETURNS>prelude_option_t *</RETURNS>
+prelude_option_t *parent, const char *name,prelude_option_type_t type, prelude_bool_t walk_children
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_option_search_context</NAME>
+<RETURNS>prelude_option_context_t *</RETURNS>
+prelude_option_t *opt, const char *name
+</FUNCTION>
 <MACRO>
-<NAME>PRELUDE_ERROR_SOURCE_DEFAULT</NAME>
- #define PRELUDE_ERROR_SOURCE_DEFAULT  PRELUDE_ERROR_SOURCE_UNKNOWN
+<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>prelude_error_t</NAME>
-typedef signed int prelude_error_t;
+<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>prelude_error_is_verbose</NAME>
+<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>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, prelude_string_t *string
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_new_time</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_time_t *time
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_new_data</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_new_class</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_class_id_t classid, void *ptr
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_new_list</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_new_enum</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_class_id_t classid, const char *buf
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_new_enum_from_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_class_id_t classid, const char *buf
+</FUNCTION>
+<FUNCTION>
+<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>idmef_value_set_int8</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, int8_t val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_uint8</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, uint8_t val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_int16</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, int16_t val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_uint16</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, uint16_t val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_int32</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, int32_t val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_uint32</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, uint32_t val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_int64</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, int64_t val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_uint64</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, uint64_t val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_float</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, float val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_double</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, double val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, prelude_string_t *string
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_time</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, idmef_time_t *time
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_data</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, idmef_data_t *data
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_enum</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, idmef_class_id_t classid, const char *buf
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_set_enum_from_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, idmef_class_id_t classid, const char *buf
+</FUNCTION>
+<FUNCTION>
+<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>idmef_value_set_class</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value, idmef_class_id_t classid, void *ptr
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_new</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_value_type_id_t type, void *ptr
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_new_from_path</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t **value, idmef_path_t *path, const char *buf
+</FUNCTION>
+<FUNCTION>
+<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>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
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_get_enum</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
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_list_add</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>
-prelude_error_t error
+const idmef_value_t *list
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_error_get_code</NAME>
-<RETURNS>prelude_error_code_t </RETURNS>
-prelude_error_t error
+<NAME>idmef_value_list_is_empty</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const idmef_value_t *list
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_error_get_source</NAME>
-<RETURNS>prelude_error_source_t </RETURNS>
-prelude_error_t error
+<NAME>idmef_value_have_own_data</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_error_code_from_errno</NAME>
-<RETURNS>prelude_error_code_t </RETURNS>
-int err
+<NAME>idmef_value_dont_have_own_data</NAME>
+<RETURNS>int </RETURNS>
+idmef_value_t *value
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_error_make</NAME>
-<RETURNS>prelude_error_t </RETURNS>
-prelude_error_source_t source, prelude_error_code_t code
+<NAME>idmef_value_get_type</NAME>
+<RETURNS>idmef_value_type_id_t </RETURNS>
+const idmef_value_t *value
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_error_make_from_errno</NAME>
-<RETURNS>prelude_error_t </RETURNS>
-prelude_error_source_t source, int err
+<NAME>idmef_value_get_class</NAME>
+<RETURNS>idmef_class_id_t </RETURNS>
+const idmef_value_t *value
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_perror</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>
+const idmef_value_t *value, int (*callback)(idmef_value_t *ptr, void *extra), void *extra
+</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
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_get_nth</NAME>
+<RETURNS>idmef_value_t *</RETURNS>
+const idmef_value_t *val, int n
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_get_count</NAME>
+<RETURNS>int </RETURNS>
+const idmef_value_t *val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_clone</NAME>
+<RETURNS>int </RETURNS>
+const idmef_value_t *val, idmef_value_t **dst
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_ref</NAME>
+<RETURNS>idmef_value_t *</RETURNS>
+idmef_value_t *val
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_print</NAME>
+<RETURNS>int </RETURNS>
+const idmef_value_t *val, prelude_io_t *fd
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_to_string</NAME>
+<RETURNS>int </RETURNS>
+const idmef_value_t *val, prelude_string_t *out
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_get</NAME>
+<RETURNS>int </RETURNS>
+const idmef_value_t *val, void *res
+</FUNCTION>
+<FUNCTION>
+<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_value_check_operator</NAME>
+<RETURNS>int </RETURNS>
+const idmef_value_t *value, idmef_criterion_operator_t op
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_value_destroy</NAME>
 <RETURNS>void </RETURNS>
-prelude_error_t error, const char *fmt, ...
+idmef_value_t *val
 </FUNCTION>
+<TYPEDEF>
+<NAME>idmef_time_t</NAME>
+typedef struct idmef_time idmef_time_t;
+</TYPEDEF>
 <FUNCTION>
-<NAME>prelude_strerror</NAME>
+<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
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_new_from_gettimeofday</NAME>
+<RETURNS>int </RETURNS>
+idmef_time_t **time
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_new_from_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_time_t **time, const char *buf
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_new_from_ntpstamp</NAME>
+<RETURNS>int </RETURNS>
+idmef_time_t **time, const char *buf
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_new_from_timeval</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
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_set_from_gettimeofday</NAME>
+<RETURNS>int </RETURNS>
+idmef_time_t *time
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_set_from_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_time_t *time, const char *buf
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_set_from_ntpstamp</NAME>
+<RETURNS>int </RETURNS>
+idmef_time_t *time, const char *buf
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_set_from_timeval</NAME>
+<RETURNS>int </RETURNS>
+idmef_time_t *time, const struct timeval *tv
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_destroy_internal</NAME>
+<RETURNS>void </RETURNS>
+idmef_time_t *time
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_destroy</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
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_set_sec</NAME>
+<RETURNS>void </RETURNS>
+idmef_time_t *time, uint32_t sec
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_set_usec</NAME>
+<RETURNS>void </RETURNS>
+idmef_time_t *time, uint32_t usec
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_set_gmt_offset</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
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_to_string</NAME>
+<RETURNS>int </RETURNS>
+const idmef_time_t *time, prelude_string_t *out
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_to_ntpstamp</NAME>
+<RETURNS>int </RETURNS>
+const idmef_time_t *time, prelude_string_t *out
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_time_compare</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
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_send</NAME>
+<RETURNS>int </RETURNS>
+prelude_connection_t *cnx, prelude_msg_t *msg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_recv</NAME>
+<RETURNS>int </RETURNS>
+prelude_connection_t *cnx, prelude_msg_t **outmsg
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_recv_idmef</NAME>
+<RETURNS>int </RETURNS>
+prelude_connection_t *con, idmef_message_t **idmef
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_connect</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_error_t err
+prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_strsource</NAME>
+<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_error_t err
+prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_error_code_to_errno</NAME>
+<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>
-prelude_error_code_t code
+prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_error_verbose_make_v</NAME>
-<RETURNS>prelude_error_t </RETURNS>
-prelude_error_source_t source,prelude_error_code_t code, const char *fmt, va_list ap
+<NAME>prelude_connection_set_fd_ref</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_t *cnx, prelude_io_t *fd
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_error_verbose_make</NAME>
-<RETURNS>prelude_error_t </RETURNS>
-prelude_error_source_t source,prelude_error_code_t code, const char *fmt, ...
+<NAME>prelude_connection_set_fd_nodup</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_t *cnx, prelude_io_t *fd
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_error_make</NAME>
-<RETURNS>return </RETURNS>
-PRELUDE_ERROR_SOURCE_DEFAULT, code
+<NAME>prelude_connection_set_state</NAME>
+<RETURNS>void </RETURNS>
+prelude_connection_t *cnx, prelude_connection_state_t state
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_error_make</NAME>
-<RETURNS>return </RETURNS>
-PRELUDE_ERROR_SOURCE_DEFAULT, prelude_error_code_from_errno(err)
+<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>
+prelude_connection_t **ret, const char *addr
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_new_msgbuf</NAME>
+<RETURNS>int </RETURNS>
+prelude_connection_t *connection, prelude_msgbuf_t **msgbuf
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_permission_to_string</NAME>
+<RETURNS>int </RETURNS>
+prelude_connection_permission_t perm, prelude_string_t *out
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_connection_permission_new_from_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
+</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>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
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_recv_msg</NAME>
+<RETURNS>int </RETURNS>
+prelude_client_t *client, int timeout, prelude_msg_t **msg
+</FUNCTION>
+<FUNCTION>
+<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>
+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
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_set_flags</NAME>
+<RETURNS>int </RETURNS>
+prelude_client_t *client, prelude_client_flags_t flags
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_set_config_filename</NAME>
+<RETURNS>int </RETURNS>
+prelude_client_t *client, const char *filename
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_get_config_filename</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_client_t *client
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_is_setup_needed</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+int error
+</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>
+prelude_client_t *client, prelude_msgbuf_t **msgbuf
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_handle_msg_default</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
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_client_print_setup_error</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
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_value_new_regex</NAME>
+<RETURNS>int </RETURNS>
+idmef_criterion_value_t **cv, const char *regex, idmef_criterion_operator_t op
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_value_new_value</NAME>
+<RETURNS>int </RETURNS>
+idmef_criterion_value_t **cv, idmef_value_t *value,idmef_criterion_operator_t op
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_value_new_from_string</NAME>
+<RETURNS>int </RETURNS>
+idmef_criterion_value_t **cv, idmef_path_t *path,const char *value, idmef_criterion_operator_t op
+</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
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_criterion_value_clone</NAME>
+<RETURNS>int </RETURNS>
+const idmef_criterion_value_t *src, idmef_criterion_value_t **dst
+</FUNCTION>
+<FUNCTION>
+<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_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 *)
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_hash_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_hash_t *hash
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_hash_set</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
+</FUNCTION>
+<FUNCTION>
+<NAME>prelude_hash_elem_destroy</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
+</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>
 <MACRO>
-<NAME>PRELUDE_LINKED_OBJECT</NAME>
-#define PRELUDE_LINKED_OBJECT   \
-        prelude_list_t _list;   \
-        unsigned int _object_id
+<NAME>LIBPRELUDE_VERSION</NAME>
+#define LIBPRELUDE_VERSION "0.9.22"
 </MACRO>
-<STRUCT>
-<NAME>prelude_linked_object_t</NAME>
-typedef struct {
-        PRELUDE_LINKED_OBJECT;
-} prelude_linked_object_t;
-</STRUCT>
+<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>
 <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>
-<MACRO>
 <NAME>IDMEF_LIST_APPEND</NAME>
 #define IDMEF_LIST_APPEND  INT_MAX
 </MACRO>
@@ -4458,1558 +6685,288 @@
 #define IDMEF_CLASS_ID_MESSAGE 49
 </MACRO>
 <TYPEDEF>
-<NAME>prelude_io_t</NAME>
-typedef struct prelude_io prelude_io_t;
+<NAME>prelude_ident_t</NAME>
+typedef struct prelude_ident prelude_ident_t;
 </TYPEDEF>
 <FUNCTION>
-<NAME>prelude_io_new</NAME>
+<NAME>prelude_ident_generate</NAME>
 <RETURNS>int </RETURNS>
-prelude_io_t **ret
+prelude_ident_t *ident, prelude_string_t *out
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_io_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_io_t *pio
+<NAME>prelude_ident_inc</NAME>
+<RETURNS>uint64_t </RETURNS>
+prelude_ident_t *ident
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_io_set_file_io</NAME>
+<NAME>prelude_ident_destroy</NAME>
 <RETURNS>void </RETURNS>
-prelude_io_t *pio, FILE *fd
+prelude_ident_t *ident
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_io_set_tls_io</NAME>
-<RETURNS>void </RETURNS>
-prelude_io_t *pio, void *tls
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_set_sys_io</NAME>
-<RETURNS>void </RETURNS>
-prelude_io_t *pio, int fd
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_set_buffer_io</NAME>
+<NAME>prelude_ident_new</NAME>
 <RETURNS>int </RETURNS>
-prelude_io_t *pio
+prelude_ident_t **ret
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_io_set_fdptr</NAME>
-<RETURNS>void </RETURNS>
-prelude_io_t *pio, void *ptr
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_set_write_callback</NAME>
-<RETURNS>void </RETURNS>
-prelude_io_t *pio, ssize_t (*write)(prelude_io_t *io, const void *buf, size_t count)
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_set_read_callback</NAME>
-<RETURNS>void </RETURNS>
-prelude_io_t *pio, ssize_t (*read)(prelude_io_t *io, void *buf, size_t count)
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_set_pending_callback</NAME>
-<RETURNS>void </RETURNS>
-prelude_io_t *pio, ssize_t (*pending)(prelude_io_t *io)
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_close</NAME>
+<NAME>idmef_additional_data_new_real</NAME>
 <RETURNS>int </RETURNS>
-prelude_io_t *pio
+idmef_additional_data_t **ret, float data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_io_read</NAME>
-<RETURNS>ssize_t </RETURNS>
-prelude_io_t *pio, void *buf, size_t count
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_read_wait</NAME>
-<RETURNS>ssize_t </RETURNS>
-prelude_io_t *pio, void *buf, size_t count
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_read_delimited</NAME>
-<RETURNS>ssize_t </RETURNS>
-prelude_io_t *pio, unsigned char **buf
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_write</NAME>
-<RETURNS>ssize_t </RETURNS>
-prelude_io_t *pio, const void *buf, size_t count
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_write_delimited</NAME>
-<RETURNS>ssize_t </RETURNS>
-prelude_io_t *pio, const void *buf, uint16_t count
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_forward</NAME>
-<RETURNS>ssize_t </RETURNS>
-prelude_io_t *dst, prelude_io_t *src, size_t count
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_get_fd</NAME>
+<NAME>idmef_additional_data_new_byte</NAME>
 <RETURNS>int </RETURNS>
-prelude_io_t *pio
+idmef_additional_data_t **ret, uint8_t byte
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_io_get_fdptr</NAME>
-<RETURNS>void *</RETURNS>
-prelude_io_t *pio
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_pending</NAME>
-<RETURNS>ssize_t </RETURNS>
-prelude_io_t *pio
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_io_is_error_fatal</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-prelude_io_t *pio, int error
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_message_set_value</NAME>
+<NAME>idmef_additional_data_new_integer</NAME>
 <RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, idmef_value_t *value
+idmef_additional_data_t **ret, uint32_t data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_message_get_value</NAME>
+<NAME>idmef_additional_data_new_boolean</NAME>
 <RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, idmef_value_t **value
+idmef_additional_data_t **ret, prelude_bool_t data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_message_set_string</NAME>
+<NAME>idmef_additional_data_new_character</NAME>
 <RETURNS>int </RETURNS>
-idmef_message_t *message, const char *path, const char *value
+idmef_additional_data_t **ret, char data
 </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>
-<FUNCTION>
-<NAME>prelude_thread_init</NAME>
-<RETURNS>int </RETURNS>
-void *nil
-</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>
+<NAME>idmef_additional_data_set_real</NAME>
 <RETURNS>void </RETURNS>
-prelude_log_t level, const char *fmt, ...
+idmef_additional_data_t *ptr, float data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_log_debug</NAME>
+<NAME>idmef_additional_data_set_byte</NAME>
 <RETURNS>void </RETURNS>
-prelude_log_t level, const char *fmt, ...
+idmef_additional_data_t *ptr, uint8_t byte
 </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>
+<NAME>idmef_additional_data_set_integer</NAME>
 <RETURNS>void </RETURNS>
-prelude_log_t level
+idmef_additional_data_t *ptr, uint32_t data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_log_set_debug_level</NAME>
+<NAME>idmef_additional_data_set_boolean</NAME>
 <RETURNS>void </RETURNS>
-int level
+idmef_additional_data_t *ptr, prelude_bool_t data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_log_get_flags</NAME>
-<RETURNS>prelude_log_flags_t </RETURNS>
-void
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_log_set_flags</NAME>
+<NAME>idmef_additional_data_set_character</NAME>
 <RETURNS>void </RETURNS>
-prelude_log_flags_t flags
+idmef_additional_data_t *ptr, char data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_log_get_prefix</NAME>
-<RETURNS>char *</RETURNS>
-void
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_log_set_prefix</NAME>
-<RETURNS>void </RETURNS>
-char *prefix
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_log_set_callback</NAME>
-<RETURNS>void </RETURNS>
-void log_cb(prelude_log_t level, const char *str)
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_log_set_logfile</NAME>
+<NAME>idmef_additional_data_new_byte_string_ref</NAME>
 <RETURNS>int </RETURNS>
-const char *filename
+idmef_additional_data_t **ad, const unsigned char *data, size_t len
 </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>
+<NAME>idmef_additional_data_set_byte_string_ref</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t **msg, prelude_io_t *pio
+idmef_additional_data_t *ad, const unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_forward</NAME>
+<NAME>idmef_additional_data_new_byte_string_dup</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t *msg, prelude_io_t *dst, prelude_io_t *src
+idmef_additional_data_t **ad, const unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_get</NAME>
+<NAME>idmef_additional_data_set_byte_string_dup</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t *msg, uint8_t *tag, uint32_t *len, void **buf
+idmef_additional_data_t *ad, const unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_recycle</NAME>
-<RETURNS>void </RETURNS>
-prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msg_mark_end</NAME>
-<RETURNS>void </RETURNS>
-prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msg_dynamic_new</NAME>
+<NAME>idmef_additional_data_new_byte_string_nodup</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t **ret, int (*flush_msg_cb)(prelude_msg_t **msg, void *data), void *data
+idmef_additional_data_t **ad, unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_new</NAME>
+<NAME>idmef_additional_data_set_byte_string_nodup</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t **ret, size_t msgcount, size_t msglen, uint8_t tag, prelude_msg_priority_t priority
+idmef_additional_data_t *ad, unsigned char *data, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_set</NAME>
+<NAME>idmef_additional_data_copy_ref</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t *msg, uint8_t tag, uint32_t len, const void *data
+idmef_additional_data_t *src, idmef_additional_data_t *dst
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_write</NAME>
+<NAME>idmef_additional_data_copy_dup</NAME>
 <RETURNS>int </RETURNS>
-prelude_msg_t *msg, prelude_io_t *dst
+idmef_additional_data_t *src, idmef_additional_data_t *dst
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_set_tag</NAME>
-<RETURNS>void </RETURNS>
-prelude_msg_t *msg, uint8_t tag
+<NAME>idmef_additional_data_get_real</NAME>
+<RETURNS>float </RETURNS>
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_set_priority</NAME>
-<RETURNS>void </RETURNS>
-prelude_msg_t *msg, prelude_msg_priority_t priority
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msg_get_tag</NAME>
-<RETURNS>uint8_t </RETURNS>
-prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msg_get_priority</NAME>
-<RETURNS>prelude_msg_priority_t </RETURNS>
-prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msg_get_len</NAME>
+<NAME>idmef_additional_data_get_integer</NAME>
 <RETURNS>uint32_t </RETURNS>
-prelude_msg_t *msg
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_msg_get_datalen</NAME>
-<RETURNS>uint32_t </RETURNS>
-prelude_msg_t *msg
+<NAME>idmef_additional_data_get_boolean</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+idmef_additional_data_t *data
 </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>
-prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msg_is_fragment</NAME>
-<RETURNS>int </RETURNS>
-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>
-<ENUM>
-<NAME>prelude_option_type_t</NAME>
-typedef enum {
-        PRELUDE_OPTION_TYPE_CLI  = 0x01,
-        PRELUDE_OPTION_TYPE_CFG  = 0x02,
-        PRELUDE_OPTION_TYPE_WIDE = 0x04,
-        PRELUDE_OPTION_TYPE_CONTEXT = 0x08,
-        PRELUDE_OPTION_TYPE_ROOT    = 0x10,
-        PRELUDE_OPTION_TYPE_DESTROY = 0x20
-} prelude_option_type_t;
-</ENUM>
-<ENUM>
-<NAME>prelude_option_input_type_t</NAME>
-typedef enum {
-        PRELUDE_OPTION_INPUT_TYPE_STRING   = 1,
-        PRELUDE_OPTION_INPUT_TYPE_INTEGER  = 2,
-        PRELUDE_OPTION_INPUT_TYPE_BOOLEAN  = 3
-} prelude_option_input_type_t;
-</ENUM>
-<TYPEDEF>
-<NAME>prelude_option_t</NAME>
-typedef struct prelude_option prelude_option_t;
-</TYPEDEF>
-<TYPEDEF>
-<NAME>prelude_option_context_t</NAME>
-typedef struct prelude_option_context prelude_option_context_t;
-</TYPEDEF>
-<USER_FUNCTION>
-<NAME>prelude_option_destroy_callback_t</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *opt, prelude_string_t *out, void *context
-</USER_FUNCTION>
-<USER_FUNCTION>
-<NAME>prelude_option_commit_callback_t</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *opt, prelude_string_t *out, void *context
-</USER_FUNCTION>
-<USER_FUNCTION>
-<NAME>prelude_option_get_callback_t</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *opt, prelude_string_t *out, void *context
-</USER_FUNCTION>
-<USER_FUNCTION>
-<NAME>prelude_option_set_callback_t</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *opt, const char *optarg, prelude_string_t *err, void *context
-</USER_FUNCTION>
-<ENUM>
-<NAME>prelude_option_argument_t</NAME>
-typedef enum {
-        PRELUDE_OPTION_ARGUMENT_REQUIRED = 1,
-        PRELUDE_OPTION_ARGUMENT_OPTIONAL = 2,
-        PRELUDE_OPTION_ARGUMENT_NONE     = 3
-} prelude_option_argument_t;
-</ENUM>
-<ENUM>
-<NAME>prelude_option_priority_t</NAME>
-typedef enum {
-        PRELUDE_OPTION_PRIORITY_IMMEDIATE = -2,
-        PRELUDE_OPTION_PRIORITY_FIRST     = -1,
-        PRELUDE_OPTION_PRIORITY_NONE      =  0,
-        PRELUDE_OPTION_PRIORITY_LAST      =  2
-} prelude_option_priority_t;
-</ENUM>
-<ENUM>
-<NAME>prelude_option_warning_t</NAME>
-typedef enum {
-        PRELUDE_OPTION_WARNING_OPTION    = 0x1,
-        PRELUDE_OPTION_WARNING_ARG       = 0x2
-} prelude_option_warning_t;
-</ENUM>
-<FUNCTION>
-<NAME>prelude_option_set_priority</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *option, prelude_option_priority_t priority
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_print</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, prelude_option_type_t type, int descoff, FILE *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_wide_send_msg</NAME>
-<RETURNS>int </RETURNS>
-prelude_msgbuf_t *msgbuf, void *context
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *option
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_read</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *option, const char **filename,int *argc, char **argv, prelude_string_t **err, void *context
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_add</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *parent, prelude_option_t **retopt, prelude_option_type_t type,char shortopt, const char *longopt, const char *desc, prelude_option_argument_t has_arg,int (*set)(prelude_option_t *opt, const char *optarg, prelude_string_t *err, void *context),int (*get)(prelude_option_t *opt, prelude_string_t *out, void *context)
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_type</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, prelude_option_type_t type
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_type</NAME>
-<RETURNS>prelude_option_type_t </RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_warnings</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_warning_t new_warnings, prelude_option_warning_t *old_warnings
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_shortname</NAME>
+<NAME>idmef_additional_data_get_character</NAME>
 <RETURNS>char </RETURNS>
-prelude_option_t *opt
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_option_get_longname</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_option_t *opt
+<NAME>idmef_additional_data_get_byte</NAME>
+<RETURNS>uint8_t </RETURNS>
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_option_set_data</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, void *data
+<NAME>idmef_additional_data_get_len</NAME>
+<RETURNS>size_t </RETURNS>
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_option_get_data</NAME>
-<RETURNS>void *</RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_invoke_commit</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *opt, const char *ctname, prelude_string_t *value, void *context
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_invoke_set</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *opt, const char *ctname, prelude_string_t *value, void **context
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_invoke_get</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *opt, const char *ctname, prelude_string_t *value, void *context
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_invoke_destroy</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *opt, const char *ctname, prelude_string_t *value, void *context
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_new_root</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t **retopt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_new</NAME>
-<RETURNS>int </RETURNS>
-prelude_option_t *parent, prelude_option_t **retopt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_longopt</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, const char *longopt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_longopt</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_description</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, const char *description
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_description</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_has_arg</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, prelude_option_argument_t has_arg
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_has_arg</NAME>
-<RETURNS>prelude_option_argument_t </RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_value</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, const char *value
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_value</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_help</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, const char *help
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_help</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_input_validation_regex</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, const char *regex
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_input_validation_regex</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_input_type</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, prelude_option_input_type_t input_type
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_input_type</NAME>
-<RETURNS>prelude_option_input_type_t </RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_optlist</NAME>
-<RETURNS>prelude_list_t *</RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_next</NAME>
-<RETURNS>prelude_option_t *</RETURNS>
-prelude_option_t *start, prelude_option_t *cur
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_has_optlist</NAME>
+<NAME>idmef_additional_data_is_empty</NAME>
 <RETURNS>prelude_bool_t </RETURNS>
-prelude_option_t *opt
+idmef_additional_data_t *data
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_option_get_parent</NAME>
-<RETURNS>prelude_option_t *</RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_destroy_callback</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt,prelude_option_destroy_callback_t destroy
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_destroy_callback</NAME>
-<RETURNS>prelude_option_destroy_callback_t </RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_set_callback</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt,prelude_option_set_callback_t set
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_set_callback</NAME>
-<RETURNS>prelude_option_set_callback_t </RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_get_callback</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt,int (*get)(prelude_option_t *opt, prelude_string_t *out, void *context)
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_get_callback</NAME>
-<RETURNS>prelude_option_get_callback_t </RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_commit_callback</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, prelude_option_commit_callback_t commit
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_get_commit_callback</NAME>
-<RETURNS>prelude_option_commit_callback_t </RETURNS>
-prelude_option_t *opt
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_set_default_context</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_t *opt, void *context
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_new_context</NAME>
+<NAME>idmef_additional_data_data_to_string</NAME>
 <RETURNS>int </RETURNS>
-prelude_option_t *opt, prelude_option_context_t **ctx, const char *name, void *data
+idmef_additional_data_t *ad, prelude_string_t *out
 </FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_context_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_option_context_t *oc
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_search</NAME>
-<RETURNS>prelude_option_t *</RETURNS>
-prelude_option_t *parent, const char *name,prelude_option_type_t type, prelude_bool_t walk_children
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_search_context</NAME>
-<RETURNS>prelude_option_context_t *</RETURNS>
-prelude_option_t *opt, const char *name
-</FUNCTION>
 <ENUM>
-<NAME>prelude_connection_permission_t</NAME>
+<NAME>prelude_connection_pool_flags_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;
+        PRELUDE_CONNECTION_POOL_FLAGS_RECONNECT        = 0x01,
+        PRELUDE_CONNECTION_POOL_FLAGS_FAILOVER         = 0x02
+} prelude_connection_pool_flags_t;
 </ENUM>
 <ENUM>
-<NAME>prelude_connection_state_t</NAME>
+<NAME>prelude_connection_pool_event_t</NAME>
 typedef enum {
-        PRELUDE_CONNECTION_STATE_ESTABLISHED     = 0x01
-} prelude_connection_state_t;
+        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_t</NAME>
-typedef struct prelude_connection prelude_connection_t;
+<NAME>prelude_connection_pool_t</NAME>
+typedef struct prelude_connection_pool prelude_connection_pool_t;
 </TYPEDEF>
 <FUNCTION>
-<NAME>prelude_connection_destroy</NAME>
+<NAME>prelude_connection_pool_broadcast</NAME>
 <RETURNS>void </RETURNS>
-prelude_connection_t *conn
+prelude_connection_pool_t *pool, prelude_msg_t *msg
 </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>
-prelude_connection_t *cnx, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_recv</NAME>
-<RETURNS>int </RETURNS>
-prelude_connection_t *cnx, prelude_msg_t **outmsg
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_recv_idmef</NAME>
-<RETURNS>int </RETURNS>
-prelude_connection_t *con, idmef_message_t **idmef
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_connect</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
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_close</NAME>
-<RETURNS>int </RETURNS>
-prelude_connection_t *cnx
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_set_fd_ref</NAME>
+<NAME>prelude_connection_pool_broadcast_async</NAME>
 <RETURNS>void </RETURNS>
-prelude_connection_t *cnx, prelude_io_t *fd
+prelude_connection_pool_t *pool, prelude_msg_t *msg
 </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>
+<NAME>prelude_connection_pool_init</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_t **ret, const char *addr
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_new_msgbuf</NAME>
+<NAME>prelude_connection_pool_new</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_t *connection, prelude_msgbuf_t **msgbuf
+prelude_connection_pool_t **ret,prelude_client_profile_t *cp,prelude_connection_permission_t permission
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_permission_to_string</NAME>
-<RETURNS>int </RETURNS>
-prelude_connection_permission_t perm, prelude_string_t *out
+<NAME>prelude_connection_pool_get_connection_list</NAME>
+<RETURNS>prelude_list_t *</RETURNS>
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_permission_new_from_string</NAME>
+<NAME>prelude_connection_pool_add_connection</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_permission_t *out, const char *buf
+prelude_connection_pool_t *pool, prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_ref</NAME>
-<RETURNS>prelude_connection_t *</RETURNS>
-prelude_connection_t *conn
-</FUNCTION>
-<TYPEDEF>
-<NAME>prelude_string_t</NAME>
-typedef struct prelude_string prelude_string_t;
-</TYPEDEF>
-<FUNCTION>
-<NAME>prelude_string_new</NAME>
+<NAME>prelude_connection_pool_del_connection</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t **string
+prelude_connection_pool_t *pool, prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_new_nodup</NAME>
+<NAME>prelude_connection_pool_set_connection_dead</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t **string, char *str
+prelude_connection_pool_t *pool, prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_new_ref</NAME>
+<NAME>prelude_connection_pool_set_connection_alive</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t **string, const char *str
+prelude_connection_pool_t *pool, prelude_connection_t *cnx
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_new_dup</NAME>
+<NAME>prelude_connection_pool_set_connection_string</NAME>
 <RETURNS>int </RETURNS>
-prelude_string_t **string, const char *str
+prelude_connection_pool_t *pool, const char *cfgstr
 </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_string_t *string
-</FUNCTION>
-<FUNCTION>
-<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_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
-</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>
+<NAME>prelude_connection_pool_get_connection_string</NAME>
 <RETURNS>const char *</RETURNS>
-const prelude_string_t *string, const char *def
+prelude_connection_pool_t *pool
 </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>
+<NAME>prelude_connection_pool_destroy</NAME>
 <RETURNS>void </RETURNS>
-prelude_string_t *string
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_cat</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t *dst, const char *str
+<NAME>prelude_connection_pool_ref</NAME>
+<RETURNS>prelude_connection_pool_t *</RETURNS>
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_ncat</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t *dst, const char *str, size_t len
+<NAME>prelude_connection_pool_get_flags</NAME>
+<RETURNS>prelude_connection_pool_flags_t </RETURNS>
+prelude_connection_pool_t *pool
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_string_sprintf</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t *string, const char *fmt, ...
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_string_vprintf</NAME>
-<RETURNS>int </RETURNS>
-prelude_string_t *string, const char *fmt, va_list ap
-</FUNCTION>
-<FUNCTION>
-<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>
-<FUNCTION>
-<NAME>idmef_additional_data_print</NAME>
+<NAME>prelude_connection_pool_set_flags</NAME>
 <RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, prelude_io_t *fd
+prelude_connection_pool_t *pool, prelude_connection_pool_flags_t flags
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_reference_print</NAME>
+<NAME>prelude_connection_pool_set_required_permission</NAME>
 <RETURNS>void </RETURNS>
-idmef_reference_t *ptr, prelude_io_t *fd
+prelude_connection_pool_t *pool, prelude_connection_permission_t req_perm
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_classification_print</NAME>
+<NAME>prelude_connection_pool_set_data</NAME>
 <RETURNS>void </RETURNS>
-idmef_classification_t *ptr, prelude_io_t *fd
+prelude_connection_pool_t *pool, void *data
 </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>
-<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>
-<RETURNS>int </RETURNS>
-prelude_msgbuf_t **msgbuf
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msgbuf_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_msgbuf_t *msgbuf
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msgbuf_mark_end</NAME>
-<RETURNS>void </RETURNS>
-prelude_msgbuf_t *msgbuf
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_msgbuf_set</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>
+<NAME>prelude_connection_pool_get_data</NAME>
 <RETURNS>void *</RETURNS>
-prelude_msgbuf_t *msgbuf
+prelude_connection_pool_t *pool
 </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>
-<FUNCTION>
-<NAME>idmef_additional_data_write</NAME>
+<NAME>prelude_connection_pool_recv</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t *additional_data, prelude_msgbuf_t *msg
+prelude_connection_pool_t *pool, int timeout, prelude_connection_t **outcon, prelude_msg_t **outmsg
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_reference_write</NAME>
+<NAME>prelude_connection_pool_check_event</NAME>
 <RETURNS>int </RETURNS>
-idmef_reference_t *reference, prelude_msgbuf_t *msg
+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>idmef_classification_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_classification_t *classification, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_user_id_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_user_id_t *user_id, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_user_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_user_t *user, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_address_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_address_t *address, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_process_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_process_t *process, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_web_service_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_web_service_t *web_service, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_snmp_service_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_snmp_service_t *snmp_service, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_service_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_service_t *service, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_node_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_node_t *node, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_source_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_source_t *source, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_file_access_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_file_access_t *file_access, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_inode_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_inode_t *inode, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_checksum_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_checksum_t *checksum, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_file_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_file_t *file, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_linkage_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_linkage_t *linkage, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_target_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_target_t *target, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_analyzer_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_analyzer_t *analyzer, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_alertident_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_alertident_t *alertident, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_impact_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_impact_t *impact, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_action_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_action_t *action, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_confidence_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_confidence_t *confidence, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_assessment_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_assessment_t *assessment, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_tool_alert_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_tool_alert_t *tool_alert, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_correlation_alert_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_correlation_alert_t *correlation_alert, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_overflow_alert_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_overflow_alert_t *overflow_alert, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_alert_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_alert_t *alert, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_heartbeat_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_heartbeat_t *heartbeat, prelude_msgbuf_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_message_write</NAME>
-<RETURNS>int </RETURNS>
-idmef_message_t *message, prelude_msgbuf_t *msg
-</FUNCTION>
-<TYPEDEF>
-<NAME>prelude_ident_t</NAME>
-typedef struct prelude_ident prelude_ident_t;
-</TYPEDEF>
-<FUNCTION>
-<NAME>prelude_ident_generate</NAME>
-<RETURNS>int </RETURNS>
-prelude_ident_t *ident, prelude_string_t *out
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_ident_inc</NAME>
-<RETURNS>uint64_t </RETURNS>
-prelude_ident_t *ident
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_ident_destroy</NAME>
+<NAME>prelude_connection_pool_set_global_event_handler</NAME>
 <RETURNS>void </RETURNS>
-prelude_ident_t *ident
+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_ident_new</NAME>
-<RETURNS>int </RETURNS>
-prelude_ident_t **ret
-</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>prelude_client_get_unique_ident</NAME>
-<RETURNS>prelude_ident_t *</RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_set_connection_pool</NAME>
+<NAME>prelude_connection_pool_set_event_handler</NAME>
 <RETURNS>void </RETURNS>
-prelude_client_t *client, prelude_connection_pool_t *pool
+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>
-<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
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_recv_msg</NAME>
-<RETURNS>int </RETURNS>
-prelude_client_t *client, int timeout, prelude_msg_t **msg
-</FUNCTION>
-<FUNCTION>
-<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>
-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
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_set_flags</NAME>
-<RETURNS>int </RETURNS>
-prelude_client_t *client, prelude_client_flags_t flags
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_set_config_filename</NAME>
-<RETURNS>int </RETURNS>
-prelude_client_t *client, const char *filename
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_get_config_filename</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_client_t *client
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_is_setup_needed</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-int error
-</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>
-prelude_client_t *client, prelude_msgbuf_t **msgbuf
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_handle_msg_default</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
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_client_print_setup_error</NAME>
-<RETURNS>void </RETURNS>
-prelude_client_t *client
-</FUNCTION>
 <TYPEDEF>
 <NAME>prelude_uid_t</NAME>
 typedef uid_t prelude_uid_t;
@@ -6155,6 +7112,120 @@
 <RETURNS>void </RETURNS>
 const prelude_client_profile_t *cp, char *buf, size_t size
 </FUNCTION>
+<TYPEDEF>
+<NAME>idmef_path_t</NAME>
+typedef struct idmef_path idmef_path_t;
+</TYPEDEF>
+<FUNCTION>
+<NAME>idmef_path_get</NAME>
+<RETURNS>int </RETURNS>
+const idmef_path_t *path, idmef_message_t *message, idmef_value_t **ret
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_set</NAME>
+<RETURNS>int </RETURNS>
+const idmef_path_t *path, idmef_message_t *message, idmef_value_t *value
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_new</NAME>
+<RETURNS>int </RETURNS>
+idmef_path_t **path, const char *format, ...
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_new_v</NAME>
+<RETURNS>int </RETURNS>
+idmef_path_t **path, const char *format, va_list args
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_new_fast</NAME>
+<RETURNS>int </RETURNS>
+idmef_path_t **path, const char *buffer
+</FUNCTION>
+<FUNCTION>
+<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_path_t *path, unsigned int depth, unsigned int index
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_undefine_index</NAME>
+<RETURNS>int </RETURNS>
+idmef_path_t *path, unsigned int depth
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_get_index</NAME>
+<RETURNS>int </RETURNS>
+const idmef_path_t *path, unsigned int depth
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_make_child</NAME>
+<RETURNS>int </RETURNS>
+idmef_path_t *path, const char *child_name, unsigned int index
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_make_parent</NAME>
+<RETURNS>int </RETURNS>
+idmef_path_t *path
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_destroy</NAME>
+<RETURNS>void </RETURNS>
+idmef_path_t *path
+</FUNCTION>
+<FUNCTION>
+<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_path_compare</NAME>
+<RETURNS>int </RETURNS>
+const idmef_path_t *p1, const idmef_path_t *p2
+</FUNCTION>
+<FUNCTION>
+<NAME>idmef_path_clone</NAME>
+<RETURNS>int </RETURNS>
+const idmef_path_t *src, idmef_path_t **dst
+</FUNCTION>
+<FUNCTION>
+<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>
+const idmef_path_t *path
+</FUNCTION>
+<FUNCTION>
+<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>
 <MACRO>
 <NAME>PRELUDE_PLUGIN_API_VERSION</NAME>
 #define PRELUDE_PLUGIN_API_VERSION 1
@@ -6359,977 +7430,170 @@
         (((type *)prelude_plugin_instance_get_plugin(pi))->member(__VA_ARGS__))
 </MACRO>
 <TYPEDEF>
-<NAME>prelude_hash_t</NAME>
-typedef struct prelude_hash prelude_hash_t;
+<NAME>prelude_string_t</NAME>
+typedef struct prelude_string prelude_string_t;
 </TYPEDEF>
 <FUNCTION>
-<NAME>prelude_hash_new</NAME>
+<NAME>prelude_string_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 *)
+prelude_string_t **string
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_hash_new2</NAME>
+<NAME>prelude_string_new_nodup</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 *)
+prelude_string_t **string, char *str
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_hash_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_hash_t *hash
+<NAME>prelude_string_new_ref</NAME>
+<RETURNS>int </RETURNS>
+prelude_string_t **string, const char *str
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_hash_set</NAME>
+<NAME>prelude_string_new_dup</NAME>
 <RETURNS>int </RETURNS>
-prelude_hash_t *hash, void *key, void *value
+prelude_string_t **string, const char *str
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_hash_get</NAME>
-<RETURNS>void *</RETURNS>
-prelude_hash_t *hash, const void *key
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_hash_elem_destroy</NAME>
+<NAME>prelude_string_new_dup_fast</NAME>
 <RETURNS>int </RETURNS>
-prelude_hash_t *hash, const void *key
+prelude_string_t **string, const char *str, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_hash_iterate</NAME>
+<NAME>prelude_string_destroy</NAME>
 <RETURNS>void </RETURNS>
-prelude_hash_t *hash, void (*cb)(void *data)
+prelude_string_t *string
 </FUNCTION>
-<TYPEDEF>
-<NAME>prelude_failover_t</NAME>
-typedef struct prelude_failover prelude_failover_t;
-</TYPEDEF>
 <FUNCTION>
-<NAME>prelude_failover_destroy</NAME>
+<NAME>prelude_string_destroy_internal</NAME>
 <RETURNS>void </RETURNS>
-prelude_failover_t *failover
+prelude_string_t *string
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_new</NAME>
+<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>
-<RETURNS>void </RETURNS>
-prelude_failover_t *failover, size_t limit
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_failover_save_msg</NAME>
+<NAME>prelude_string_new_ref_fast</NAME>
 <RETURNS>int </RETURNS>
-prelude_failover_t *failover, prelude_msg_t *msg
+prelude_string_t **string, const char *str, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_get_saved_msg</NAME>
-<RETURNS>ssize_t </RETURNS>
-prelude_failover_t *failover, prelude_msg_t **out
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_failover_get_deleted_msg_count</NAME>
-<RETURNS>unsigned long </RETURNS>
-prelude_failover_t *failover
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_failover_get_available_msg_count</NAME>
-<RETURNS>unsigned long </RETURNS>
-prelude_failover_t *failover
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_failover_enable_transaction</NAME>
-<RETURNS>void </RETURNS>
-prelude_failover_t *failover
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_failover_disable_transaction</NAME>
-<RETURNS>void </RETURNS>
-prelude_failover_t *failover
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_failover_commit</NAME>
+<NAME>prelude_string_set_dup_fast</NAME>
 <RETURNS>int </RETURNS>
-prelude_failover_t *failover, prelude_msg_t *msg
+prelude_string_t *string, const char *buf, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_failover_rollback</NAME>
+<NAME>prelude_string_set_dup</NAME>
 <RETURNS>int </RETURNS>
-prelude_failover_t *failover, prelude_msg_t *msg
+prelude_string_t *string, const char *buf
 </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
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_pool_broadcast_async</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool, prelude_msg_t *msg
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_pool_init</NAME>
+<NAME>prelude_string_set_nodup_fast</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool
+prelude_string_t *string, char *buf, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_new</NAME>
+<NAME>prelude_string_set_nodup</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t **ret,prelude_client_profile_t *cp,prelude_connection_permission_t permission
+prelude_string_t *string, char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_get_connection_list</NAME>
-<RETURNS>prelude_list_t *</RETURNS>
-prelude_connection_pool_t *pool
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_pool_add_connection</NAME>
+<NAME>prelude_string_set_ref_fast</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_t *cnx
+prelude_string_t *string, const char *buf, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_del_connection</NAME>
+<NAME>prelude_string_set_ref</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_t *cnx
+prelude_string_t *string, const char *buf
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_connection_dead</NAME>
+<NAME>prelude_string_copy_ref</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_t *cnx
+const prelude_string_t *src, prelude_string_t *dst
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_connection_alive</NAME>
+<NAME>prelude_string_copy_dup</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_t *cnx
+const prelude_string_t *src, prelude_string_t *dst
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_set_connection_string</NAME>
-<RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, const char *cfgstr
+<NAME>prelude_string_ref</NAME>
+<RETURNS>prelude_string_t *</RETURNS>
+prelude_string_t *string
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_get_connection_string</NAME>
-<RETURNS>const char *</RETURNS>
-prelude_connection_pool_t *pool
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_pool_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_pool_ref</NAME>
-<RETURNS>prelude_connection_pool_t *</RETURNS>
-prelude_connection_pool_t *pool
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_pool_get_flags</NAME>
-<RETURNS>prelude_connection_pool_flags_t </RETURNS>
-prelude_connection_pool_t *pool
-</FUNCTION>
-<FUNCTION>
-<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_connection_pool_set_required_permission</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool, prelude_connection_permission_t req_perm
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_pool_set_data</NAME>
-<RETURNS>void </RETURNS>
-prelude_connection_pool_t *pool, void *data
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_pool_get_data</NAME>
-<RETURNS>void *</RETURNS>
-prelude_connection_pool_t *pool
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_connection_pool_recv</NAME>
+<NAME>prelude_string_clone</NAME>
 <RETURNS>int </RETURNS>
-prelude_connection_pool_t *pool, int timeout, prelude_connection_t **outcon, prelude_msg_t **outmsg
+const prelude_string_t *src, prelude_string_t **dst
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_connection_pool_check_event</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
+<NAME>prelude_string_get_len</NAME>
+<RETURNS>size_t </RETURNS>
+const prelude_string_t *string
 </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>prelude_string_get_string_or_default</NAME>
+<RETURNS>const char *</RETURNS>
+const prelude_string_t *string, const char *def
 </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>prelude_string_get_string</NAME>
+<RETURNS>const char *</RETURNS>
+const prelude_string_t *string
 </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>prelude_string_get_string_released</NAME>
 <RETURNS>int </RETURNS>
-void
+prelude_string_t *string, char **outptr
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_async_get_flags</NAME>
-<RETURNS>prelude_async_flags_t </RETURNS>
-void
+<NAME>prelude_string_is_empty</NAME>
+<RETURNS>prelude_bool_t </RETURNS>
+const prelude_string_t *string
 </FUNCTION>
 <FUNCTION>
-<NAME>prelude_async_set_flags</NAME>
+<NAME>prelude_string_clear</NAME>
 <RETURNS>void </RETURNS>
-prelude_async_flags_t flags
+prelude_string_t *string
 </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>
-<FUNCTION>
-<NAME>idmef_additional_data_read</NAME>
+<NAME>prelude_string_cat</NAME>
 <RETURNS>int </RETURNS>
-idmef_additional_data_t *additional_data, prelude_msg_t *msg
+prelude_string_t *dst, const char *str
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_reference_read</NAME>
+<NAME>prelude_string_ncat</NAME>
 <RETURNS>int </RETURNS>
-idmef_reference_t *reference, prelude_msg_t *msg
+prelude_string_t *dst, const char *str, size_t len
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_classification_read</NAME>
+<NAME>prelude_string_sprintf</NAME>
 <RETURNS>int </RETURNS>
-idmef_classification_t *classification, prelude_msg_t *msg
+prelude_string_t *string, const char *fmt, ...
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_user_id_read</NAME>
+<NAME>prelude_string_vprintf</NAME>
 <RETURNS>int </RETURNS>
-idmef_user_id_t *user_id, prelude_msg_t *msg
+prelude_string_t *string, const char *fmt, va_list ap
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_user_read</NAME>
+<NAME>prelude_string_compare</NAME>
 <RETURNS>int </RETURNS>
-idmef_user_t *user, prelude_msg_t *msg
+const prelude_string_t *str1, const prelude_string_t *str2
 </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>
 <MACRO>
-<NAME>PRELUDE_LIST</NAME>
-#define PRELUDE_LIST(item) prelude_list_t (item) = { &(item), &(item) }
+<NAME>prelude_string_set_constant</NAME>
+#define prelude_string_set_constant(string, str)                         \
+        prelude_string_set_ref_fast((string), (str), strlen((str)))
 </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)
+<NAME>prelude_string_new_constant</NAME>
+#define prelude_string_new_constant(string, str)                         \
+        prelude_string_new_ref_fast((string), (str), strlen((str)))
 </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_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>LIBPRELUDE_VERSION</NAME>
-#define LIBPRELUDE_VERSION "0.9.21.3"
-</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>
-<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>
-<RETURNS>int </RETURNS>
-prelude_msgbuf_t *msg, int type, const char *request
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_new_request</NAME>
-<RETURNS>int </RETURNS>
-prelude_msgbuf_t *msgbuf,uint32_t request_id, uint64_t *target_id, size_t size
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_process_request</NAME>
-<RETURNS>int </RETURNS>
-prelude_client_t *client, prelude_msg_t *msg, prelude_msgbuf_t *reply
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_option_recv_reply</NAME>
-<RETURNS>int </RETURNS>
-prelude_msg_t *msg, uint64_t *source_id, uint32_t *request_id, void **value
-</FUNCTION>
-<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;
-</TYPEDEF>
-<FUNCTION>
-<NAME>idmef_criterion_operator_to_string</NAME>
-<RETURNS>const char *</RETURNS>
-idmef_criterion_operator_t op
-</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
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_destroy</NAME>
-<RETURNS>void </RETURNS>
-idmef_criterion_t *criterion
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_ref</NAME>
-<RETURNS>idmef_criteria_t *</RETURNS>
-idmef_criteria_t *criteria
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_clone</NAME>
-<RETURNS>int </RETURNS>
-const idmef_criterion_t *criterion, idmef_criterion_t **dst
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_print</NAME>
-<RETURNS>int </RETURNS>
-const idmef_criterion_t *criterion, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_to_string</NAME>
-<RETURNS>int </RETURNS>
-const idmef_criterion_t *criterion, prelude_string_t *out
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_get_path</NAME>
-<RETURNS>idmef_path_t *</RETURNS>
-const idmef_criterion_t *criterion
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_get_value</NAME>
-<RETURNS>idmef_criterion_value_t *</RETURNS>
-const idmef_criterion_t *criterion
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_get_operator</NAME>
-<RETURNS>idmef_criterion_operator_t </RETURNS>
-const idmef_criterion_t *criterion
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criterion_match</NAME>
-<RETURNS>int </RETURNS>
-const idmef_criterion_t *criterion, idmef_message_t *message
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_new</NAME>
-<RETURNS>int </RETURNS>
-idmef_criteria_t **criteria
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_destroy</NAME>
-<RETURNS>void </RETURNS>
-idmef_criteria_t *criteria
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_clone</NAME>
-<RETURNS>int </RETURNS>
-idmef_criteria_t *src, idmef_criteria_t **dst
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_print</NAME>
-<RETURNS>int </RETURNS>
-const idmef_criteria_t *criteria, prelude_io_t *fd
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_to_string</NAME>
-<RETURNS>int </RETURNS>
-const idmef_criteria_t *criteria, prelude_string_t *out
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_is_criterion</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const idmef_criteria_t *criteria
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_get_criterion</NAME>
-<RETURNS>idmef_criterion_t *</RETURNS>
-const idmef_criteria_t *criteria
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_set_criterion</NAME>
-<RETURNS>void </RETURNS>
-idmef_criteria_t *criteria, idmef_criterion_t *criterion
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_or_criteria</NAME>
-<RETURNS>void </RETURNS>
-idmef_criteria_t *criteria, idmef_criteria_t *criteria2
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_and_criteria</NAME>
-<RETURNS>int </RETURNS>
-idmef_criteria_t *criteria, idmef_criteria_t *criteria2
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_match</NAME>
-<RETURNS>int </RETURNS>
-const idmef_criteria_t *criteria, idmef_message_t *message
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_get_or</NAME>
-<RETURNS>idmef_criteria_t *</RETURNS>
-const idmef_criteria_t *criteria
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_get_and</NAME>
-<RETURNS>idmef_criteria_t *</RETURNS>
-const idmef_criteria_t *criteria
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_new_from_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_criteria_t **criteria, const char *str
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_set_negation</NAME>
-<RETURNS>void </RETURNS>
-idmef_criteria_t *criteria, prelude_bool_t negate
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_criteria_get_negation</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const idmef_criteria_t *criteria
-</FUNCTION>
-<ENUM>
 <NAME>idmef_data_type_t</NAME>
 typedef enum {
 	IDMEF_DATA_TYPE_UNKNOWN      = 0,
@@ -7638,898 +7902,634 @@
 const idmef_data_t *data1, const idmef_data_t *data2
 </FUNCTION>
 <TYPEDEF>
-<NAME>idmef_criterion_value_t</NAME>
-typedef struct idmef_criterion_value idmef_criterion_value_t;
+<NAME>prelude_msgbuf_t</NAME>
+typedef struct prelude_msgbuf prelude_msgbuf_t;
 </TYPEDEF>
 <ENUM>
-<NAME>idmef_criterion_value_type_t</NAME>
+<NAME>prelude_msgbuf_flags_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;
+        PRELUDE_MSGBUF_FLAGS_ASYNC = 0x01
+} prelude_msgbuf_flags_t;
 </ENUM>
 <FUNCTION>
-<NAME>idmef_criterion_value_new</NAME>
+<NAME>prelude_msgbuf_new</NAME>
 <RETURNS>int </RETURNS>
-idmef_criterion_value_t **cv
+prelude_msgbuf_t **msgbuf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_new_regex</NAME>
-<RETURNS>int </RETURNS>
-idmef_criterion_value_t **cv, const char *regex, idmef_criterion_operator_t op
+<NAME>prelude_msgbuf_destroy</NAME>
+<RETURNS>void </RETURNS>
+prelude_msgbuf_t *msgbuf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_new_value</NAME>
-<RETURNS>int </RETURNS>
-idmef_criterion_value_t **cv, idmef_value_t *value,idmef_criterion_operator_t op
+<NAME>prelude_msgbuf_mark_end</NAME>
+<RETURNS>void </RETURNS>
+prelude_msgbuf_t *msgbuf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_new_from_string</NAME>
+<NAME>prelude_msgbuf_set</NAME>
 <RETURNS>int </RETURNS>
-idmef_criterion_value_t **cv, idmef_path_t *path,const char *value, idmef_criterion_operator_t op
+prelude_msgbuf_t *msgbuf, uint8_t tag, uint32_t len, const void *data
 </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>prelude_msgbuf_get_msg</NAME>
+<RETURNS>prelude_msg_t *</RETURNS>
+prelude_msgbuf_t *msgbuf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_clone</NAME>
-<RETURNS>int </RETURNS>
-const idmef_criterion_value_t *src, idmef_criterion_value_t **dst
+<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>idmef_criterion_value_destroy</NAME>
+<NAME>prelude_msgbuf_set_data</NAME>
 <RETURNS>void </RETURNS>
-idmef_criterion_value_t *value
+prelude_msgbuf_t *msgbuf, void *data
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_print</NAME>
-<RETURNS>int </RETURNS>
-idmef_criterion_value_t *value, prelude_io_t *fd
+<NAME>prelude_msgbuf_get_data</NAME>
+<RETURNS>void *</RETURNS>
+prelude_msgbuf_t *msgbuf
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_criterion_value_to_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_criterion_value_t *value, prelude_string_t *out
+<NAME>prelude_msgbuf_set_flags</NAME>
+<RETURNS>void </RETURNS>
+prelude_msgbuf_t *msgbuf, prelude_msgbuf_flags_t flags
 </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
+<NAME>prelude_msgbuf_get_flags</NAME>
+<RETURNS>prelude_msgbuf_flags_t </RETURNS>
+prelude_msgbuf_t *msgbuf
 </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>idmef_path_t</NAME>
-typedef struct idmef_path idmef_path_t;
-</TYPEDEF>
-<FUNCTION>
-<NAME>idmef_path_get</NAME>
-<RETURNS>int </RETURNS>
-const idmef_path_t *path, idmef_message_t *message, idmef_value_t **ret
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_path_set</NAME>
-<RETURNS>int </RETURNS>
-const idmef_path_t *path, idmef_message_t *message, idmef_value_t *value
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_path_new</NAME>
-<RETURNS>int </RETURNS>
-idmef_path_t **path, const char *format, ...
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_path_new_v</NAME>
-<RETURNS>int </RETURNS>
-idmef_path_t **path, const char *format, va_list args
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_path_new_fast</NAME>
-<RETURNS>int </RETURNS>
-idmef_path_t **path, const char *buffer
-</FUNCTION>
-<FUNCTION>
-<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_path_t *path, unsigned int depth, unsigned int index
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_path_undefine_index</NAME>
-<RETURNS>int </RETURNS>
-idmef_path_t *path, unsigned int depth
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_path_get_index</NAME>
-<RETURNS>int </RETURNS>
-const idmef_path_t *path, unsigned int depth
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_path_make_child</NAME>
-<RETURNS>int </RETURNS>
-idmef_path_t *path, const char *child_name, unsigned int index
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_path_make_parent</NAME>
-<RETURNS>int </RETURNS>
-idmef_path_t *path
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_path_destroy</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_path_t *path
-</FUNCTION>
+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>idmef_path_ncompare</NAME>
+<NAME>prelude_async_init</NAME>
 <RETURNS>int </RETURNS>
-const idmef_path_t *p1, const idmef_path_t *p2, unsigned int depth
+void
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_compare</NAME>
-<RETURNS>int </RETURNS>
-const idmef_path_t *p1, const idmef_path_t *p2
+<NAME>prelude_async_get_flags</NAME>
+<RETURNS>prelude_async_flags_t </RETURNS>
+void
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_path_clone</NAME>
-<RETURNS>int </RETURNS>
-const idmef_path_t *src, idmef_path_t **dst
-</FUNCTION>
-<FUNCTION>
-<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>
-const idmef_path_t *path
-</FUNCTION>
-<FUNCTION>
-<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_additional_data_new_real</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t **ret, float data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_new_byte</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t **ret, uint8_t byte
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_new_integer</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t **ret, uint32_t data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_new_boolean</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t **ret, prelude_bool_t data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_new_character</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t **ret, char data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_set_real</NAME>
+<NAME>prelude_async_set_flags</NAME>
 <RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, float data
+prelude_async_flags_t flags
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_set_byte</NAME>
+<NAME>prelude_async_add</NAME>
 <RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, uint8_t byte
+prelude_async_object_t *obj
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_set_integer</NAME>
+<NAME>prelude_async_del</NAME>
 <RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, uint32_t data
+prelude_async_object_t *obj
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_set_boolean</NAME>
+<NAME>prelude_async_exit</NAME>
 <RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, prelude_bool_t data
+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>idmef_additional_data_set_character</NAME>
+<NAME>prelude_log</NAME>
 <RETURNS>void </RETURNS>
-idmef_additional_data_t *ptr, char data
+prelude_log_t level, const char *fmt, ...
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_additional_data_new_byte_string_ref</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t **ad, const unsigned char *data, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_set_byte_string_ref</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t *ad, const unsigned char *data, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_new_byte_string_dup</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t **ad, const unsigned char *data, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_set_byte_string_dup</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t *ad, const unsigned char *data, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_new_byte_string_nodup</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t **ad, unsigned char *data, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_set_byte_string_nodup</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t *ad, unsigned char *data, size_t len
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_copy_ref</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t *src, idmef_additional_data_t *dst
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_copy_dup</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t *src, idmef_additional_data_t *dst
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_get_real</NAME>
-<RETURNS>float </RETURNS>
-idmef_additional_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_get_integer</NAME>
-<RETURNS>uint32_t </RETURNS>
-idmef_additional_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_get_boolean</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-idmef_additional_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_get_character</NAME>
-<RETURNS>char </RETURNS>
-idmef_additional_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_get_byte</NAME>
-<RETURNS>uint8_t </RETURNS>
-idmef_additional_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_get_len</NAME>
-<RETURNS>size_t </RETURNS>
-idmef_additional_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_is_empty</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-idmef_additional_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_additional_data_data_to_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_additional_data_t *ad, prelude_string_t *out
-</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
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_new_from_gettimeofday</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t **time
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_new_from_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t **time, const char *buf
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_new_from_ntpstamp</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t **time, const char *buf
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_new_from_timeval</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t **time, const struct timeval *tv
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_set_from_time</NAME>
+<NAME>prelude_log_debug</NAME>
 <RETURNS>void </RETURNS>
-idmef_time_t *time, const time_t *t
+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_time_set_from_gettimeofday</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t *time
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_set_from_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t *time, const char *buf
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_set_from_ntpstamp</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t *time, const char *buf
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_set_from_timeval</NAME>
-<RETURNS>int </RETURNS>
-idmef_time_t *time, const struct timeval *tv
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_destroy_internal</NAME>
+<NAME>prelude_log_set_level</NAME>
 <RETURNS>void </RETURNS>
-idmef_time_t *time
+prelude_log_t level
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_destroy</NAME>
+<NAME>prelude_log_set_debug_level</NAME>
 <RETURNS>void </RETURNS>
-idmef_time_t *time
+int level
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_clone</NAME>
-<RETURNS>int </RETURNS>
-const idmef_time_t *src, idmef_time_t **dst
+<NAME>prelude_log_get_flags</NAME>
+<RETURNS>prelude_log_flags_t </RETURNS>
+void
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_copy</NAME>
-<RETURNS>int </RETURNS>
-const idmef_time_t *src, idmef_time_t *dst
+<NAME>prelude_log_set_flags</NAME>
+<RETURNS>void </RETURNS>
+prelude_log_flags_t flags
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_set_sec</NAME>
-<RETURNS>void </RETURNS>
-idmef_time_t *time, uint32_t sec
+<NAME>prelude_log_get_prefix</NAME>
+<RETURNS>char *</RETURNS>
+void
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_set_usec</NAME>
+<NAME>prelude_log_set_prefix</NAME>
 <RETURNS>void </RETURNS>
-idmef_time_t *time, uint32_t usec
+char *prefix
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_time_set_gmt_offset</NAME>
+<NAME>prelude_log_set_callback</NAME>
 <RETURNS>void </RETURNS>
-idmef_time_t *time, int32_t gmtoff
+void log_cb(prelude_log_t level, const char *str)
 </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
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_to_string</NAME>
+<NAME>prelude_log_set_logfile</NAME>
 <RETURNS>int </RETURNS>
-const idmef_time_t *time, prelude_string_t *out
+const char *filename
 </FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_to_ntpstamp</NAME>
-<RETURNS>int </RETURNS>
-const idmef_time_t *time, prelude_string_t *out
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_time_compare</NAME>
-<RETURNS>int </RETURNS>
-const idmef_time_t *time1, const idmef_time_t *time2
-</FUNCTION>
+<MACRO>
+<NAME>PRELUDE_LIST</NAME>
+#define PRELUDE_LIST(item) prelude_list_t (item) = { &(item), &(item) }
+</MACRO>
 <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;
+<NAME>prelude_list_t</NAME>
+typedef struct prelude_list {
+        struct prelude_list *next;
+        struct prelude_list *prev;
+} prelude_list_t;
 </STRUCT>
 <MACRO>
-<NAME>prelude_timer_get_expire</NAME>
-#define prelude_timer_get_expire(timer) (timer)->expire
+<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_timer_get_data</NAME>
-#define prelude_timer_get_data(timer) (timer)->data
+<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_timer_get_callback</NAME>
-#define prelude_timer_get_callback(timer) (timer)->function
+<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_timer_set_expire</NAME>
-#define prelude_timer_set_expire(timer, x) prelude_timer_get_expire((timer)) = (x)
+<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_timer_set_data</NAME>
-#define prelude_timer_set_data(timer, x) prelude_timer_get_data((timer)) = (x)
+<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_timer_set_callback</NAME>
-#define prelude_timer_set_callback(timer, x) prelude_timer_get_callback((timer)) = (x)
+<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>prelude_timer_init</NAME>
-<RETURNS>void </RETURNS>
-prelude_timer_t *timer
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_timer_init_list</NAME>
-<RETURNS>void </RETURNS>
-prelude_timer_t *timer
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_timer_reset</NAME>
-<RETURNS>void </RETURNS>
-prelude_timer_t *timer
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_timer_destroy</NAME>
-<RETURNS>void </RETURNS>
-prelude_timer_t *timer
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_timer_wake_up</NAME>
-<RETURNS>void </RETURNS>
-void
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_timer_flush</NAME>
-<RETURNS>void </RETURNS>
-void
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_timer_lock_critical_region</NAME>
-<RETURNS>void </RETURNS>
-void
-</FUNCTION>
-<FUNCTION>
-<NAME>prelude_timer_unlock_critical_region</NAME>
-<RETURNS>void </RETURNS>
-void
-</FUNCTION>
-<TYPEDEF>
-<NAME>idmef_value_t</NAME>
-typedef struct idmef_value idmef_value_t;
-</TYPEDEF>
-<FUNCTION>
-<NAME>idmef_value_new_int8</NAME>
+<NAME>idmef_message_set_value</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, int8_t val
+idmef_message_t *message, const char *path, idmef_value_t *value
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_uint8</NAME>
+<NAME>idmef_message_get_value</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, uint8_t val
+idmef_message_t *message, const char *path, idmef_value_t **value
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_int16</NAME>
+<NAME>idmef_message_set_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, int16_t val
+idmef_message_t *message, const char *path, const char *value
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_uint16</NAME>
+<NAME>idmef_message_get_string</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, uint16_t val
+idmef_message_t *message, const char *path, char **result
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_int32</NAME>
+<NAME>idmef_message_set_number</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, int32_t val
+idmef_message_t *message, const char *path, double number
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_uint32</NAME>
+<NAME>idmef_message_get_number</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, uint32_t val
+idmef_message_t *message, const char *path, double *result
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_int64</NAME>
+<NAME>idmef_message_set_data</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, int64_t val
+idmef_message_t *message, const char *path, const unsigned char *data, size_t size
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_new_uint64</NAME>
+<NAME>idmef_message_get_data</NAME>
 <RETURNS>int </RETURNS>
-idmef_value_t **value, uint64_t val
+idmef_message_t *message, const char *path, unsigned char **data, size_t *size
 </FUNCTION>
+<MACRO>
+<NAME>PRELUDE_ERROR_SYSTEM_ERROR</NAME>
+#define PRELUDE_ERROR_SYSTEM_ERROR    (1 << 15)
+</MACRO>
+<ENUM>
+<NAME>prelude_error_source_t</NAME>
+typedef enum {
+    PRELUDE_ERROR_SOURCE_UNKNOWN = 0,
+    PRELUDE_ERROR_SOURCE_IO = 1,
+    PRELUDE_ERROR_SOURCE_MESSAGE = 2,
+    PRELUDE_ERROR_SOURCE_FAILOVER = 3,
+    PRELUDE_ERROR_SOURCE_CLIENT = 4,
+    PRELUDE_ERROR_SOURCE_CLIENT_PROFILE = 5,
+    PRELUDE_ERROR_SOURCE_EXTRACT = 6,
+    PRELUDE_ERROR_SOURCE_CONNECTION = 7,
+    PRELUDE_ERROR_SOURCE_CONNECTION_POOL = 8,
+    PRELUDE_ERROR_SOURCE_CONFIG_ENGINE = 9,
+    PRELUDE_ERROR_SOURCE_STRING = 10,
+    PRELUDE_ERROR_SOURCE_IDMEF_TREE_WRAP = 11,
+    PRELUDE_ERROR_SOURCE_IDMEF_PATH = 12,
+    PRELUDE_ERROR_SOURCE_IDMEF_TYPE = 13,
+    PRELUDE_ERROR_SOURCE_IDMEF_MESSAGE_READ = 14,
+    PRELUDE_ERROR_SOURCE_IDMEF_CRITERIA = 15,
+    PRELUDE_ERROR_SOURCE_IDMEF_VALUE_TYPE = 16,
+    PRELUDE_ERROR_SOURCE_PRELUDEDB = 255,
+} prelude_error_source_t;
+</ENUM>
+<ENUM>
+<NAME>prelude_error_code_t</NAME>
+typedef enum {
+    PRELUDE_ERROR_NO_ERROR = 0,
+    PRELUDE_ERROR_GENERIC = 1,
+    PRELUDE_ERROR_TLS = 2,
+    PRELUDE_ERROR_INVAL_LENGTH = 3,
+    PRELUDE_ERROR_INVAL_MESSAGE = 4,
+    PRELUDE_ERROR_PROTOCOL_VERSION = 5,
+    PRELUDE_ERROR_EOF = 6,
+    PRELUDE_ERROR_PROFILE = 8,
+    PRELUDE_ERROR_TLS_AUTH_REJECTED = 16,
+    PRELUDE_ERROR_INVAL_INT8 = 17,
+    PRELUDE_ERROR_INVAL_INT16 = 18,
+    PRELUDE_ERROR_INVAL_INT32 = 19,
+    PRELUDE_ERROR_INVAL_INT64 = 20,
+    PRELUDE_ERROR_INVAL_FLOAT = 21,
+    PRELUDE_ERROR_INVAL_CHAR = 22,
+    PRELUDE_ERROR_INVAL_IDMEF_TIME = 23,
+    PRELUDE_ERROR_CONNECTION_STRING = 24,
+    PRELUDE_ERROR_IDMEF_VALUE_TYPE_UNKNOWN = 25,
+    PRELUDE_ERROR_IDMEF_VALUE_TYPE_COPY_UNAVAILABLE = 26,
+    PRELUDE_ERROR_IDMEF_VALUE_TYPE_CLONE_UNAVAILABLE = 27,
+    PRELUDE_ERROR_IDMEF_VALUE_TYPE_COMPARE_UNAVAILABLE = 28,
+    PRELUDE_ERROR_IDMEF_VALUE_TYPE_READ_UNAVAILABLE = 29,
+    PRELUDE_ERROR_IDMEF_VALUE_TYPE_WRITE_UNAVAILABLE = 30,
+    PRELUDE_ERROR_IDMEF_VALUE_TYPE_COMPARE_MISMATCH = 31,
+    PRELUDE_ERROR_IDMEF_VALUE_TYPE_PARSE = 32,
+    PRELUDE_ERROR_IDMEF_CLASS_UNKNOWN = 33,
+    PRELUDE_ERROR_IDMEF_CLASS_UNKNOWN_CHILD = 34,
+    PRELUDE_ERROR_IDMEF_CLASS_UNKNOWN_NAME = 35,
+    PRELUDE_ERROR_IDMEF_PATH_LENGTH = 36,
+    PRELUDE_ERROR_IDMEF_PATH_DEPTH = 37,
+    PRELUDE_ERROR_IDMEF_PATH_PARENT_ROOT = 38,
+    PRELUDE_ERROR_IDMEF_PATH_NTH = 39,
+    PRELUDE_ERROR_IDMEF_PATH_MISS_INDEX = 40,
+    PRELUDE_ERROR_IDMEF_PATH_INTEGRITY = 41,
+    PRELUDE_ERROR_IDMEF_PATH_INDEX_RESERVED = 42,
+    PRELUDE_ERROR_IDMEF_PATH_INDEX_FORBIDDEN = 43,
+    PRELUDE_ERROR_IDMEF_PATH_INDEX_UNDEFINED = 44,
+    PRELUDE_ERROR_IDMEF_TREE_INDEX_UNDEFINED = 45,
+    PRELUDE_ERROR_IDMEF_UNKNOWN_ENUM_STRING = 46,
+    PRELUDE_ERROR_IDMEF_UNKNOWN_TAG = 47,
+    PRELUDE_ERROR_DAEMONIZE_LOCK_HELD = 48,
+    PRELUDE_ERROR_PLUGIN_LTDL_INIT = 49,
+    PRELUDE_ERROR_STRING_NOT_NULL_TERMINATED = 50,
+    PRELUDE_ERROR_CANT_RESOLVE = 51,
+    PRELUDE_ERROR_UNKNOWN_PERMISSION_TYPE = 52,
+    PRELUDE_ERROR_UNKNOWN_PERMISSION_BIT = 53,
+    PRELUDE_ERROR_IDMEF_CRITERIA_PARSE = 55,
+    PRELUDE_ERROR_IDMEF_CRITERION_UNSUPPORTED_OPERATOR = 56,
+    PRELUDE_ERROR_IDMEF_CRITERION_INVALID_REGEX = 57,
+    PRELUDE_ERROR_TLS_WARNING_ALERT = 58,
+    PRELUDE_ERROR_TLS_FATAL_ALERT = 59,
+    PRELUDE_ERROR_IDMEF_CLASS_CHILD_NOT_CLASS = 60,
+    PRELUDE_ERROR_ASSERTION = 61,
+    PRELUDE_ERROR_IDMEF_VALUE_TYPE_REF_UNAVAILABLE = 62,
+    PRELUDE_ERROR_UNKNOWN_ERRNO = 16382,
+    PRELUDE_ERROR_E2BIG = PRELUDE_ERROR_SYSTEM_ERROR | 0,
+    PRELUDE_ERROR_EACCES = PRELUDE_ERROR_SYSTEM_ERROR | 1,
+    PRELUDE_ERROR_EADDRINUSE = PRELUDE_ERROR_SYSTEM_ERROR | 2,
+    PRELUDE_ERROR_EADDRNOTAVAIL = PRELUDE_ERROR_SYSTEM_ERROR | 3,
+    PRELUDE_ERROR_EADV = PRELUDE_ERROR_SYSTEM_ERROR | 4,
+    PRELUDE_ERROR_EAFNOSUPPORT = PRELUDE_ERROR_SYSTEM_ERROR | 5,
+    PRELUDE_ERROR_EAGAIN = PRELUDE_ERROR_SYSTEM_ERROR | 6,
+    PRELUDE_ERROR_EALREADY = PRELUDE_ERROR_SYSTEM_ERROR | 7,
+    PRELUDE_ERROR_EAUTH = PRELUDE_ERROR_SYSTEM_ERROR | 8,
+    PRELUDE_ERROR_EBACKGROUND = PRELUDE_ERROR_SYSTEM_ERROR | 9,
+    PRELUDE_ERROR_EBADE = PRELUDE_ERROR_SYSTEM_ERROR | 10,
+    PRELUDE_ERROR_EBADF = PRELUDE_ERROR_SYSTEM_ERROR | 11,
+    PRELUDE_ERROR_EBADFD = PRELUDE_ERROR_SYSTEM_ERROR | 12,
+    PRELUDE_ERROR_EBADMSG = PRELUDE_ERROR_SYSTEM_ERROR | 13,
+    PRELUDE_ERROR_EBADR = PRELUDE_ERROR_SYSTEM_ERROR | 14,
+    PRELUDE_ERROR_EBADRPC = PRELUDE_ERROR_SYSTEM_ERROR | 15,
+    PRELUDE_ERROR_EBADRQC = PRELUDE_ERROR_SYSTEM_ERROR | 16,
+    PRELUDE_ERROR_EBADSLT = PRELUDE_ERROR_SYSTEM_ERROR | 17,
+    PRELUDE_ERROR_EBFONT = PRELUDE_ERROR_SYSTEM_ERROR | 18,
+    PRELUDE_ERROR_EBUSY = PRELUDE_ERROR_SYSTEM_ERROR | 19,
+    PRELUDE_ERROR_ECANCELED = PRELUDE_ERROR_SYSTEM_ERROR | 20,
+    PRELUDE_ERROR_ECHILD = PRELUDE_ERROR_SYSTEM_ERROR | 21,
+    PRELUDE_ERROR_ECHRNG = PRELUDE_ERROR_SYSTEM_ERROR | 22,
+    PRELUDE_ERROR_ECOMM = PRELUDE_ERROR_SYSTEM_ERROR | 23,
+    PRELUDE_ERROR_ECONNABORTED = PRELUDE_ERROR_SYSTEM_ERROR | 24,
+    PRELUDE_ERROR_ECONNREFUSED = PRELUDE_ERROR_SYSTEM_ERROR | 25,
+    PRELUDE_ERROR_ECONNRESET = PRELUDE_ERROR_SYSTEM_ERROR | 26,
+    PRELUDE_ERROR_ED = PRELUDE_ERROR_SYSTEM_ERROR | 27,
+    PRELUDE_ERROR_EDEADLK = PRELUDE_ERROR_SYSTEM_ERROR | 28,
+    PRELUDE_ERROR_EDEADLOCK = PRELUDE_ERROR_SYSTEM_ERROR | 29,
+    PRELUDE_ERROR_EDESTADDRREQ = PRELUDE_ERROR_SYSTEM_ERROR | 30,
+    PRELUDE_ERROR_EDIED = PRELUDE_ERROR_SYSTEM_ERROR | 31,
+    PRELUDE_ERROR_EDOM = PRELUDE_ERROR_SYSTEM_ERROR | 32,
+    PRELUDE_ERROR_EDOTDOT = PRELUDE_ERROR_SYSTEM_ERROR | 33,
+    PRELUDE_ERROR_EDQUOT = PRELUDE_ERROR_SYSTEM_ERROR | 34,
+    PRELUDE_ERROR_EEXIST = PRELUDE_ERROR_SYSTEM_ERROR | 35,
+    PRELUDE_ERROR_EFAULT = PRELUDE_ERROR_SYSTEM_ERROR | 36,
+    PRELUDE_ERROR_EFBIG = PRELUDE_ERROR_SYSTEM_ERROR | 37,
+    PRELUDE_ERROR_EFTYPE = PRELUDE_ERROR_SYSTEM_ERROR | 38,
+    PRELUDE_ERROR_EGRATUITOUS = PRELUDE_ERROR_SYSTEM_ERROR | 39,
+    PRELUDE_ERROR_EGREGIOUS = PRELUDE_ERROR_SYSTEM_ERROR | 40,
+    PRELUDE_ERROR_EHOSTDOWN = PRELUDE_ERROR_SYSTEM_ERROR | 41,
+    PRELUDE_ERROR_EHOSTUNREACH = PRELUDE_ERROR_SYSTEM_ERROR | 42,
+    PRELUDE_ERROR_EIDRM = PRELUDE_ERROR_SYSTEM_ERROR | 43,
+    PRELUDE_ERROR_EIEIO = PRELUDE_ERROR_SYSTEM_ERROR | 44,
+    PRELUDE_ERROR_EILSEQ = PRELUDE_ERROR_SYSTEM_ERROR | 45,
+    PRELUDE_ERROR_EINPROGRESS = PRELUDE_ERROR_SYSTEM_ERROR | 46,
+    PRELUDE_ERROR_EINTR = PRELUDE_ERROR_SYSTEM_ERROR | 47,
+    PRELUDE_ERROR_EINVAL = PRELUDE_ERROR_SYSTEM_ERROR | 48,
+    PRELUDE_ERROR_EIO = PRELUDE_ERROR_SYSTEM_ERROR | 49,
+    PRELUDE_ERROR_EISCONN = PRELUDE_ERROR_SYSTEM_ERROR | 50,
+    PRELUDE_ERROR_EISDIR = PRELUDE_ERROR_SYSTEM_ERROR | 51,
+    PRELUDE_ERROR_EISNAM = PRELUDE_ERROR_SYSTEM_ERROR | 52,
+    PRELUDE_ERROR_EL2HLT = PRELUDE_ERROR_SYSTEM_ERROR | 53,
+    PRELUDE_ERROR_EL2NSYNC = PRELUDE_ERROR_SYSTEM_ERROR | 54,
+    PRELUDE_ERROR_EL3HLT = PRELUDE_ERROR_SYSTEM_ERROR | 55,
+    PRELUDE_ERROR_EL3RST = PRELUDE_ERROR_SYSTEM_ERROR | 56,
+    PRELUDE_ERROR_ELIBACC = PRELUDE_ERROR_SYSTEM_ERROR | 57,
+    PRELUDE_ERROR_ELIBBAD = PRELUDE_ERROR_SYSTEM_ERROR | 58,
+    PRELUDE_ERROR_ELIBEXEC = PRELUDE_ERROR_SYSTEM_ERROR | 59,
+    PRELUDE_ERROR_ELIBMAX = PRELUDE_ERROR_SYSTEM_ERROR | 60,
+    PRELUDE_ERROR_ELIBSCN = PRELUDE_ERROR_SYSTEM_ERROR | 61,
+    PRELUDE_ERROR_ELNRNG = PRELUDE_ERROR_SYSTEM_ERROR | 62,
+    PRELUDE_ERROR_ELOOP = PRELUDE_ERROR_SYSTEM_ERROR | 63,
+    PRELUDE_ERROR_EMEDIUMTYPE = PRELUDE_ERROR_SYSTEM_ERROR | 64,
+    PRELUDE_ERROR_EMFILE = PRELUDE_ERROR_SYSTEM_ERROR | 65,
+    PRELUDE_ERROR_EMLINK = PRELUDE_ERROR_SYSTEM_ERROR | 66,
+    PRELUDE_ERROR_EMSGSIZE = PRELUDE_ERROR_SYSTEM_ERROR | 67,
+    PRELUDE_ERROR_EMULTIHOP = PRELUDE_ERROR_SYSTEM_ERROR | 68,
+    PRELUDE_ERROR_ENAMETOOLONG = PRELUDE_ERROR_SYSTEM_ERROR | 69,
+    PRELUDE_ERROR_ENAVAIL = PRELUDE_ERROR_SYSTEM_ERROR | 70,
+    PRELUDE_ERROR_ENEEDAUTH = PRELUDE_ERROR_SYSTEM_ERROR | 71,
+    PRELUDE_ERROR_ENETDOWN = PRELUDE_ERROR_SYSTEM_ERROR | 72,
+    PRELUDE_ERROR_ENETRESET = PRELUDE_ERROR_SYSTEM_ERROR | 73,
+    PRELUDE_ERROR_ENETUNREACH = PRELUDE_ERROR_SYSTEM_ERROR | 74,
+    PRELUDE_ERROR_ENFILE = PRELUDE_ERROR_SYSTEM_ERROR | 75,
+    PRELUDE_ERROR_ENOANO = PRELUDE_ERROR_SYSTEM_ERROR | 76,
+    PRELUDE_ERROR_ENOBUFS = PRELUDE_ERROR_SYSTEM_ERROR | 77,
+    PRELUDE_ERROR_ENOCSI = PRELUDE_ERROR_SYSTEM_ERROR | 78,
+    PRELUDE_ERROR_ENODATA = PRELUDE_ERROR_SYSTEM_ERROR | 79,
+    PRELUDE_ERROR_ENODEV = PRELUDE_ERROR_SYSTEM_ERROR | 80,
+    PRELUDE_ERROR_ENOENT = PRELUDE_ERROR_SYSTEM_ERROR | 81,
+    PRELUDE_ERROR_ENOEXEC = PRELUDE_ERROR_SYSTEM_ERROR | 82,
+    PRELUDE_ERROR_ENOLCK = PRELUDE_ERROR_SYSTEM_ERROR | 83,
+    PRELUDE_ERROR_ENOLINK = PRELUDE_ERROR_SYSTEM_ERROR | 84,
+    PRELUDE_ERROR_ENOMEDIUM = PRELUDE_ERROR_SYSTEM_ERROR | 85,
+    PRELUDE_ERROR_ENOMEM = PRELUDE_ERROR_SYSTEM_ERROR | 86,
+    PRELUDE_ERROR_ENOMSG = PRELUDE_ERROR_SYSTEM_ERROR | 87,
+    PRELUDE_ERROR_ENONET = PRELUDE_ERROR_SYSTEM_ERROR | 88,
+    PRELUDE_ERROR_ENOPKG = PRELUDE_ERROR_SYSTEM_ERROR | 89,
+    PRELUDE_ERROR_ENOPROTOOPT = PRELUDE_ERROR_SYSTEM_ERROR | 90,
+    PRELUDE_ERROR_ENOSPC = PRELUDE_ERROR_SYSTEM_ERROR | 91,
+    PRELUDE_ERROR_ENOSR = PRELUDE_ERROR_SYSTEM_ERROR | 92,
+    PRELUDE_ERROR_ENOSTR = PRELUDE_ERROR_SYSTEM_ERROR | 93,
+    PRELUDE_ERROR_ENOSYS = PRELUDE_ERROR_SYSTEM_ERROR | 94,
+    PRELUDE_ERROR_ENOTBLK = PRELUDE_ERROR_SYSTEM_ERROR | 95,
+    PRELUDE_ERROR_ENOTCONN = PRELUDE_ERROR_SYSTEM_ERROR | 96,
+    PRELUDE_ERROR_ENOTDIR = PRELUDE_ERROR_SYSTEM_ERROR | 97,
+    PRELUDE_ERROR_ENOTEMPTY = PRELUDE_ERROR_SYSTEM_ERROR | 98,
+    PRELUDE_ERROR_ENOTNAM = PRELUDE_ERROR_SYSTEM_ERROR | 99,
+    PRELUDE_ERROR_ENOTSOCK = PRELUDE_ERROR_SYSTEM_ERROR | 100,
+    PRELUDE_ERROR_ENOTSUP = PRELUDE_ERROR_SYSTEM_ERROR | 101,
+    PRELUDE_ERROR_ENOTTY = PRELUDE_ERROR_SYSTEM_ERROR | 102,
+    PRELUDE_ERROR_ENOTUNIQ = PRELUDE_ERROR_SYSTEM_ERROR | 103,
+    PRELUDE_ERROR_ENXIO = PRELUDE_ERROR_SYSTEM_ERROR | 104,
+    PRELUDE_ERROR_EOPNOTSUPP = PRELUDE_ERROR_SYSTEM_ERROR | 105,
+    PRELUDE_ERROR_EOVERFLOW = PRELUDE_ERROR_SYSTEM_ERROR | 106,
+    PRELUDE_ERROR_EPERM = PRELUDE_ERROR_SYSTEM_ERROR | 107,
+    PRELUDE_ERROR_EPFNOSUPPORT = PRELUDE_ERROR_SYSTEM_ERROR | 108,
+    PRELUDE_ERROR_EPIPE = PRELUDE_ERROR_SYSTEM_ERROR | 109,
+    PRELUDE_ERROR_EPROCLIM = PRELUDE_ERROR_SYSTEM_ERROR | 110,
+    PRELUDE_ERROR_EPROCUNAVAIL = PRELUDE_ERROR_SYSTEM_ERROR | 111,
+    PRELUDE_ERROR_EPROGMISMATCH = PRELUDE_ERROR_SYSTEM_ERROR | 112,
+    PRELUDE_ERROR_EPROGUNAVAIL = PRELUDE_ERROR_SYSTEM_ERROR | 113,
+    PRELUDE_ERROR_EPROTO = PRELUDE_ERROR_SYSTEM_ERROR | 114,
+    PRELUDE_ERROR_EPROTONOSUPPORT = PRELUDE_ERROR_SYSTEM_ERROR | 115,
+    PRELUDE_ERROR_EPROTOTYPE = PRELUDE_ERROR_SYSTEM_ERROR | 116,
+    PRELUDE_ERROR_ERANGE = PRELUDE_ERROR_SYSTEM_ERROR | 117,
+    PRELUDE_ERROR_EREMCHG = PRELUDE_ERROR_SYSTEM_ERROR | 118,
+    PRELUDE_ERROR_EREMOTE = PRELUDE_ERROR_SYSTEM_ERROR | 119,
+    PRELUDE_ERROR_EREMOTEIO = PRELUDE_ERROR_SYSTEM_ERROR | 120,
+    PRELUDE_ERROR_ERESTART = PRELUDE_ERROR_SYSTEM_ERROR | 121,
+    PRELUDE_ERROR_EROFS = PRELUDE_ERROR_SYSTEM_ERROR | 122,
+    PRELUDE_ERROR_ERPCMISMATCH = PRELUDE_ERROR_SYSTEM_ERROR | 123,
+    PRELUDE_ERROR_ESHUTDOWN = PRELUDE_ERROR_SYSTEM_ERROR | 124,
+    PRELUDE_ERROR_ESOCKTNOSUPPORT = PRELUDE_ERROR_SYSTEM_ERROR | 125,
+    PRELUDE_ERROR_ESPIPE = PRELUDE_ERROR_SYSTEM_ERROR | 126,
+    PRELUDE_ERROR_ESRCH = PRELUDE_ERROR_SYSTEM_ERROR | 127,
+    PRELUDE_ERROR_ESRMNT = PRELUDE_ERROR_SYSTEM_ERROR | 128,
+    PRELUDE_ERROR_ESTALE = PRELUDE_ERROR_SYSTEM_ERROR | 129,
+    PRELUDE_ERROR_ESTRPIPE = PRELUDE_ERROR_SYSTEM_ERROR | 130,
+    PRELUDE_ERROR_ETIME = PRELUDE_ERROR_SYSTEM_ERROR | 131,
+    PRELUDE_ERROR_ETIMEDOUT = PRELUDE_ERROR_SYSTEM_ERROR | 132,
+    PRELUDE_ERROR_ETOOMANYREFS = PRELUDE_ERROR_SYSTEM_ERROR | 133,
+    PRELUDE_ERROR_ETXTBSY = PRELUDE_ERROR_SYSTEM_ERROR | 134,
+    PRELUDE_ERROR_EUCLEAN = PRELUDE_ERROR_SYSTEM_ERROR | 135,
+    PRELUDE_ERROR_EUNATCH = PRELUDE_ERROR_SYSTEM_ERROR | 136,
+    PRELUDE_ERROR_EUSERS = PRELUDE_ERROR_SYSTEM_ERROR | 137,
+    PRELUDE_ERROR_EWOULDBLOCK = PRELUDE_ERROR_SYSTEM_ERROR | 138,
+    PRELUDE_ERROR_EXDEV = PRELUDE_ERROR_SYSTEM_ERROR | 139,
+    PRELUDE_ERROR_EXFULL = PRELUDE_ERROR_SYSTEM_ERROR | 140,
+} prelude_error_code_t;
+</ENUM>
+<MACRO>
+<NAME>PRELUDE_ERROR_SOURCE_DEFAULT</NAME>
+ #define PRELUDE_ERROR_SOURCE_DEFAULT  PRELUDE_ERROR_SOURCE_UNKNOWN
+</MACRO>
+<TYPEDEF>
+<NAME>prelude_error_t</NAME>
+typedef signed int prelude_error_t;
+</TYPEDEF>
 <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>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, prelude_string_t *string
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_time</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_time_t *time
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_data</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_class</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_class_id_t classid, void *ptr
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_list</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_enum</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_class_id_t classid, const char *buf
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_enum_from_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_class_id_t classid, const char *buf
-</FUNCTION>
-<FUNCTION>
-<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>idmef_value_set_int8</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, int8_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_uint8</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, uint8_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_int16</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, int16_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_uint16</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, uint16_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_int32</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, int32_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_uint32</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, uint32_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_int64</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, int64_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_uint64</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, uint64_t val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_float</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, float val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_double</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, double val
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, prelude_string_t *string
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_time</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_time_t *time
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_data</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_data_t *data
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_enum</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_class_id_t classid, const char *buf
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_set_enum_from_string</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_class_id_t classid, const char *buf
-</FUNCTION>
-<FUNCTION>
-<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>idmef_value_set_class</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value, idmef_class_id_t classid, void *ptr
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_value_type_id_t type, void *ptr
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_new_from_path</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t **value, idmef_path_t *path, const char *buf
-</FUNCTION>
-<FUNCTION>
-<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>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
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_enum</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
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_list_add</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *list, idmef_value_t *item
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_is_list</NAME>
+<NAME>prelude_error_is_verbose</NAME>
 <RETURNS>prelude_bool_t </RETURNS>
-const idmef_value_t *list
+prelude_error_t error
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_list_is_empty</NAME>
-<RETURNS>prelude_bool_t </RETURNS>
-const idmef_value_t *list
+<NAME>prelude_error_get_code</NAME>
+<RETURNS>prelude_error_code_t </RETURNS>
+prelude_error_t error
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_have_own_data</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value
+<NAME>prelude_error_get_source</NAME>
+<RETURNS>prelude_error_source_t </RETURNS>
+prelude_error_t error
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_dont_have_own_data</NAME>
-<RETURNS>int </RETURNS>
-idmef_value_t *value
+<NAME>prelude_error_code_from_errno</NAME>
+<RETURNS>prelude_error_code_t </RETURNS>
+int err
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get_type</NAME>
-<RETURNS>idmef_value_type_id_t </RETURNS>
-const idmef_value_t *value
+<NAME>prelude_error_make</NAME>
+<RETURNS>prelude_error_t </RETURNS>
+prelude_error_source_t source, prelude_error_code_t code
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get_class</NAME>
-<RETURNS>idmef_class_id_t </RETURNS>
-const idmef_value_t *value
+<NAME>prelude_error_make_from_errno</NAME>
+<RETURNS>prelude_error_t </RETURNS>
+prelude_error_source_t source, int err
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get_object</NAME>
-<RETURNS>void *</RETURNS>
-const idmef_value_t *value
+<NAME>prelude_perror</NAME>
+<RETURNS>void </RETURNS>
+prelude_error_t error, const char *fmt, ...
 </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_strerror</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_error_t err
 </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_strsource</NAME>
+<RETURNS>const char *</RETURNS>
+prelude_error_t err
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_get_nth</NAME>
-<RETURNS>idmef_value_t *</RETURNS>
-const idmef_value_t *val, int n
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get_count</NAME>
+<NAME>prelude_error_code_to_errno</NAME>
 <RETURNS>int </RETURNS>
-const idmef_value_t *val
+prelude_error_code_t code
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_clone</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *val, idmef_value_t **dst
+<NAME>prelude_error_verbose_make_v</NAME>
+<RETURNS>prelude_error_t </RETURNS>
+prelude_error_source_t source,prelude_error_code_t code, const char *fmt, va_list ap
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_ref</NAME>
-<RETURNS>idmef_value_t *</RETURNS>
-idmef_value_t *val
+<NAME>prelude_error_verbose_make</NAME>
+<RETURNS>prelude_error_t </RETURNS>
+prelude_error_source_t source,prelude_error_code_t code, const char *fmt, ...
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_print</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *val, prelude_io_t *fd
+<NAME>prelude_error_make</NAME>
+<RETURNS>return </RETURNS>
+PRELUDE_ERROR_SOURCE_DEFAULT, code
 </FUNCTION>
 <FUNCTION>
-<NAME>idmef_value_to_string</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *val, prelude_string_t *out
+<NAME>prelude_error_make</NAME>
+<RETURNS>return </RETURNS>
+PRELUDE_ERROR_SOURCE_DEFAULT, prelude_error_code_from_errno(err)
 </FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_get</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *val, void *res
-</FUNCTION>
-<FUNCTION>
-<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_value_check_operator</NAME>
-<RETURNS>int </RETURNS>
-const idmef_value_t *value, idmef_criterion_operator_t op
-</FUNCTION>
-<FUNCTION>
-<NAME>idmef_value_destroy</NAME>
-<RETURNS>void </RETURNS>
-idmef_value_t *val
-</FUNCTION>

_______________________________________________
Prelude-cvslog site list
[email protected]
http://lists.prelude-ids.org/mailman/listinfo/prelude-cvslog
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.