25 #ifndef LOGMSG_H_INCLUDED
26 #define LOGMSG_H_INCLUDED
37 #include <sys/types.h>
38 #include <sys/socket.h>
39 #include <netinet/in.h>
51 #define IS_ACK_ABORTED(x) ((x) == AT_ABORTED ? 1 : 0)
53 #define IS_ABORTFLAG_ON(x) ((x) == 1 ? TRUE : FALSE)
55 #define IS_ACK_SUSPENDED(x) ((x) == AT_SUSPENDED ? 1 : 0)
57 #define IS_SUSPENDFLAG_ON(x) ((x) == 1 ? TRUE : FALSE)
59 #define STRICT_ROUND_TO_NEXT_EIGHT(x) ((x + 8) & ~7)
65 #define LOGMSG_MAX_MATCHES 256
229 typedef struct _LogMessageQueueNode
231 struct iv_list_head list;
336 static inline gboolean
337 log_msg_is_write_protected(
const LogMessage *
self)
339 return self->write_protected;
353 static inline gboolean
354 log_msg_is_handle_macro(
NVHandle handle)
362 static inline gboolean
363 log_msg_is_handle_sdata(
NVHandle handle)
371 static inline gboolean
372 log_msg_is_handle_match(
NVHandle handle)
380 static inline gboolean
381 log_msg_is_handle_referencable_from_an_indirect_value(
NVHandle handle)
387 if (log_msg_is_handle_macro(handle))
393 if (log_msg_is_handle_match(handle))
399 static inline gboolean
400 log_msg_is_handle_settable_with_an_indirect_value(
NVHandle handle)
413 static inline const gchar *
414 log_msg_get_value_if_set_with_type(
const LogMessage *
self,
NVHandle handle,
424 return nv_table_get_value(
self->payload, handle, value_len, type);
427 static inline gboolean
428 log_msg_is_value_set(
const LogMessage *
self,
NVHandle handle)
430 return nv_table_is_value_set(
self->payload, handle);
433 static inline const gchar *
436 const gchar *
result = log_msg_get_value_if_set_with_type(
self, handle, value_len, type);
447 static inline const gchar *
448 log_msg_get_value(
const LogMessage *
self,
NVHandle handle, gssize *value_len)
450 return log_msg_get_value_with_type(
self, handle, value_len, NULL);
453 static inline const gchar *
454 log_msg_get_value_if_set(
const LogMessage *
self,
NVHandle handle, gssize *value_len)
456 return log_msg_get_value_if_set_with_type(
self, handle, value_len, NULL);
459 static inline const gchar *
460 log_msg_get_value_by_name(
const LogMessage *
self,
const gchar *
name, gssize *value_len)
463 return log_msg_get_value(
self, handle, value_len);
466 static inline const gchar *
467 log_msg_get_value_by_name_with_type(
const LogMessage *
self,
468 const gchar *
name, gssize *value_len,
472 return log_msg_get_value_with_type(
self, handle, value_len, type);
475 static inline const gchar *
476 log_msg_get_value_name(
NVHandle handle, gssize *name_len)
486 const gchar *
value, gssize value_len,
490 guint16 ofs, guint16 len);
500 const gchar *
value, gssize value_len,
508 const gchar *
log_msg_get_match(
const LogMessage *
self, gint index_, gssize *value_len);
513 log_msg_set_value_by_name_with_type(LogMessage *
self,
514 const gchar *
name,
const gchar *
value, gssize length,
522 log_msg_set_value_by_name(LogMessage *
self,
const gchar *
name,
const gchar *
value, gssize length)
528 log_msg_set_value_to_string(LogMessage *
self,
NVHandle handle,
const gchar *literal_string)
552 log_msg_set_recvd_rawmsg_size(LogMessage *
self, guint32 size)
554 self->recvd_rawmsg_size = size;
580 LogPathOptions *local_path_options);
597 #define evt_tag_msg_reference(msg) \
598 evt_tag_printf("msg", "%p", (msg)), \
599 evt_tag_printf("rcptid", "%" G_GUINT64_FORMAT, (msg)->rcptid)
601 static inline EVTTAG *
602 evt_tag_msg_value(
const gchar *
name, LogMessage *
msg,
NVHandle value_handle)
605 const gchar *
value = log_msg_get_value(
msg, value_handle, &value_len);
610 static inline EVTTAG *
613 const gchar *value_name = log_msg_get_value_name(value_handle, NULL);
const gchar * name
Definition: debugger.c:265
EVTTAG * evt_tag_mem(const char *tag, const void *value, size_t len)
Definition: evttags.c:84
EVTTAG * evt_tag_str(const char *tag, const char *value)
Definition: evttags.c:65
void log_msg_clear(LogMessage *self)
Definition: logmsg.c:1357
void log_msg_set_saddr(LogMessage *self, GSockAddr *saddr)
Definition: logmsg.c:1298
void log_msg_unref(LogMessage *m)
Definition: logmsg.c:1721
gssize log_msg_get_size(LogMessage *self)
Definition: logmsg.c:2138
void log_msg_format_matches(const LogMessage *self, GString *result)
Definition: logmsg.c:1282
void log_msg_unset_value_by_name(LogMessage *self, const gchar *name)
Definition: logmsg.c:689
void log_msg_registry_deinit(void)
Definition: logmsg.c:2068
gboolean log_msg_values_foreach(const LogMessage *self, NVTableForeachFunc func, gpointer user_data)
Definition: logmsg.c:765
void log_msg_clear_tag_by_name(LogMessage *self, const gchar *name)
Definition: logmsg.c:1027
void log_msg_set_saddr_ref(LogMessage *self, GSockAddr *saddr)
Definition: logmsg.c:1304
@ LM_T_SYSLOG_RFC5424_MISSING_APP_NAME
Definition: logmsg.h:126
@ LM_T_SYSLOG_MISSING_PRI
Definition: logmsg.h:112
@ LM_T_SYSLOG_RFC3164_MISSING_HEADER
Definition: logmsg.h:122
@ LM_T_PREDEFINED_MAX
Definition: logmsg.h:142
@ LM_T_SYSLOG_RFC5424_MISSING_PROCID
Definition: logmsg.h:128
@ LM_T_SYSLOG_MISSING_TIMESTAMP
Definition: logmsg.h:116
@ LM_T_SYSLOG_RFC5424_MISSING_MESSAGE
Definition: logmsg.h:136
@ LM_T_SYSLOG_RFC5424_MISSING_SDATA
Definition: logmsg.h:132
@ LM_T_SYSLOG_RFC5424_MISSING_MSGID
Definition: logmsg.h:130
@ LM_T_SYSLOG_RFC5424_MISSING_HOSTNAME
Definition: logmsg.h:124
@ LM_T_SYSLOG_UNEXPECTED_FRAMING
Definition: logmsg.h:120
@ LM_T_SYSLOG_INVALID_PRI
Definition: logmsg.h:114
@ LM_T_SYSLOG_MISSING_MESSAGE
Definition: logmsg.h:138
@ LM_T_SYSLOG_RFC_3164_INVALID_PROGRAM
Definition: logmsg.h:140
@ LM_T_SYSLOG_INVALID_HOSTNAME
Definition: logmsg.h:118
@ LM_T_MSG_UTF8_SANITIZED
Definition: logmsg.h:110
@ LM_T_SYSLOG_RFC5424_INVALID_SDATA
Definition: logmsg.h:134
LogMessageTimeStamp
Definition: logmsg.h:68
@ LM_TS_MAX
Definition: logmsg.h:72
@ LM_TS_STAMP
Definition: logmsg.h:69
@ LM_TS_PROCESSED
Definition: logmsg.h:71
@ LM_TS_RECVD
Definition: logmsg.h:70
void log_msg_set_value_indirect(LogMessage *self, NVHandle handle, NVHandle ref_handle, guint16 ofs, guint16 len)
Definition: logmsg.c:758
LogMessage * log_msg_ref(LogMessage *m)
Definition: logmsg.c:1695
void log_msg_set_tag_by_name(LogMessage *self, const gchar *name)
Definition: logmsg.c:1015
gboolean log_msg_is_value_name_valid(const gchar *value)
Definition: logmsg.c:434
void log_msg_merge_context(LogMessage *self, LogMessage **context, gsize context_len)
Definition: logmsg.c:1440
@ LM_VF_MATCH
Definition: logmsg.h:148
@ LM_VF_SDATA
Definition: logmsg.h:147
@ LM_VF_MACRO
Definition: logmsg.h:149
void log_msg_drop(LogMessage *msg, const LogPathOptions *path_options, AckType ack_type)
Definition: logmsg.c:1633
void log_msg_set_match_with_type(LogMessage *self, gint index, const gchar *value, gssize value_len, LogMessageValueType type)
Definition: logmsg.c:789
gboolean log_msg_read(LogMessage *self, SerializeArchive *sa)
void log_msg_rename_value(LogMessage *self, NVHandle from, NVHandle to)
Definition: logmsg.c:557
void log_msg_clear_tag_by_id(LogMessage *self, LogTagId id)
Definition: logmsg.c:1021
void log_msg_write_protect(LogMessage *m)
Definition: logmsg.c:283
void log_msg_format_tags(const LogMessage *self, GString *result, gboolean include_localtags)
Definition: logmsg.c:1274
gint log_msg_get_match_index(NVHandle handle)
Definition: logmsg.c:780
LogMessage * log_msg_clone_cow(LogMessage *msg, const LogPathOptions *path_options)
Definition: logmsg.c:1486
void log_msg_refcache_start_consumer(LogMessage *self, const LogPathOptions *path_options)
Definition: logmsg.c:1883
void log_msg_registry_foreach(GHFunc func, gpointer user_data)
Definition: logmsg.c:2075
const LogPathOptions * log_msg_break_ack(LogMessage *msg, const LogPathOptions *path_options, LogPathOptions *local_path_options)
Definition: logmsg.c:1814
_LogMessageValueType
Definition: logmsg.h:197
@ LM_VT_BOOLEAN
Definition: logmsg.h:207
@ LM_VT_BYTES
Definition: logmsg.h:215
@ LM_VT_NULL
Definition: logmsg.h:214
@ LM_VT_STRING
Definition: logmsg.h:205
@ __COMPAT_LM_VT_INT32
Definition: logmsg.h:208
@ __COMPAT_LM_VT_INT64
Definition: logmsg.h:209
@ LM_VT_JSON
Definition: logmsg.h:206
@ LM_VT_LIST
Definition: logmsg.h:213
@ LM_VT_PROTOBUF
Definition: logmsg.h:216
@ LM_VT_NONE
Definition: logmsg.h:223
@ LM_VT_DATETIME
Definition: logmsg.h:212
@ LM_VT_INTEGER
Definition: logmsg.h:210
@ LM_VT_DOUBLE
Definition: logmsg.h:211
void log_msg_set_value(LogMessage *self, NVHandle handle, const gchar *new_value, gssize length)
Definition: logmsg.c:641
void log_msg_set_value_indirect_with_type(LogMessage *self, NVHandle handle, NVHandle ref_handle, guint16 ofs, guint16 len, LogMessageValueType type)
Definition: logmsg.c:695
LogMessage * log_msg_make_writable(LogMessage **pmsg, const LogPathOptions *path_options)
Definition: logmsg.c:289
void log_msg_add_ack(LogMessage *msg, const LogPathOptions *path_options)
Definition: logmsg.c:1750
void log_msg_set_daddr(LogMessage *self, GSockAddr *daddr)
Definition: logmsg.c:1313
void log_msg_clear_matches(LogMessage *self)
Definition: logmsg.c:868
void log_msg_set_tag_by_id_onoff(LogMessage *self, LogTagId id, gboolean on)
Definition: logmsg.c:945
NVHandle log_msg_get_value_handle(const gchar *value_name)
Definition: logmsg.c:418
AckType
Definition: logmsg.h:44
@ AT_PROCESSED
Definition: logmsg.h:46
@ AT_SUSPENDED
Definition: logmsg.h:48
@ AT_ABORTED
Definition: logmsg.h:47
@ AT_UNDEFINED
Definition: logmsg.h:45
@ LM_V_PROGRAM
Definition: logmsg.h:82
@ LM_V_TRANSPORT
Definition: logmsg.h:98
@ LM_V_PREDEFINED_MAX
Definition: logmsg.h:104
@ LM_V_HOST_FROM
Definition: logmsg.h:80
@ LM_V_RAWMSG
Definition: logmsg.h:97
@ LM_V_LEGACY_MSGHDR
Definition: logmsg.h:86
@ LM_V_SOURCE
Definition: logmsg.h:85
@ LM_V_FILE_NAME
Definition: logmsg.h:100
@ LM_V_MSGFORMAT
Definition: logmsg.h:99
@ LM_V_MESSAGE
Definition: logmsg.h:81
@ LM_V_PID
Definition: logmsg.h:83
@ LM_V_MAX
Definition: logmsg.h:94
@ LM_V_PEER_PORT
Definition: logmsg.h:102
@ LM_V_MSGID
Definition: logmsg.h:84
@ LM_V_PEER_IP
Definition: logmsg.h:101
@ LM_V_HOST
Definition: logmsg.h:79
@ LM_V_NONE
Definition: logmsg.h:78
void log_msg_stats_global_init(void)
void log_msg_set_match(LogMessage *self, gint index, const gchar *value, gssize value_len)
Definition: logmsg.c:798
gboolean log_msg_is_tag_by_name(LogMessage *self, const gchar *name)
Definition: logmsg.c:1049
gboolean log_msg_write(LogMessage *self, SerializeArchive *sa)
LogMessage * log_msg_new_mark(void)
Definition: logmsg.c:1585
void log_msg_format_sdata(const LogMessage *self, GString *result, guint32 seq_num)
Definition: logmsg.c:1237
gboolean(* LogMessageTagsForeachFunc)(const LogMessage *self, LogTagId tag_id, const gchar *name, gpointer user_data)
Definition: logmsg.h:481
void log_msg_unset_match(LogMessage *self, gint index_)
Definition: logmsg.c:851
void log_msg_append_format_sdata(const LogMessage *self, GString *result, guint32 seq_num)
Definition: logmsg.c:1096
void log_msg_refcache_stop(void)
Definition: logmsg.c:1902
void log_msg_ack(LogMessage *msg, const LogPathOptions *path_options, AckType ack_type)
Definition: logmsg.c:1778
const char logmsg_sd_prefix[]
Definition: logmsg.c:272
LogMessage * log_msg_new_empty(void)
Definition: logmsg.c:1534
LogMessageQueueNode * log_msg_alloc_dynamic_queue_node(LogMessage *msg, const LogPathOptions *path_options)
Definition: logmsg.c:523
NVType LogMessageValueType
Definition: logmsg.h:195
const gchar * log_msg_get_match_if_set_with_type(const LogMessage *self, gint index_, gssize *value_len, LogMessageValueType *type)
Definition: logmsg.c:820
const gchar * log_msg_get_match(const LogMessage *self, gint index_, gssize *value_len)
Definition: logmsg.c:845
const gint logmsg_sd_prefix_len
Definition: logmsg.c:273
LogMessageQueueNode * log_msg_alloc_queue_node(LogMessage *msg, const LogPathOptions *path_options)
Definition: logmsg.c:492
void log_msg_refcache_start_producer(LogMessage *self)
Definition: logmsg.c:1845
const gchar * log_msg_get_macro_value(const LogMessage *self, gint id, gssize *value_len, LogMessageValueType *type)
Definition: logmsg.c:455
void log_msg_global_deinit(void)
Definition: logmsg.c:2121
void log_msg_registry_init(void)
Definition: logmsg.c:2026
const gchar * log_msg_value_type_to_str(LogMessageValueType self)
Definition: logmsg.c:209
LogMessage * log_msg_sized_new(gsize payload_size)
Definition: logmsg.c:1525
void log_msg_unset_value(LogMessage *self, NVHandle handle)
Definition: logmsg.c:647
void log_msg_truncate_matches(LogMessage *self, gint n)
Definition: logmsg.c:858
void log_msg_set_match_indirect_with_type(LogMessage *self, gint index, NVHandle ref_handle, guint16 ofs, guint16 len, LogMessageValueType type)
Definition: logmsg.c:805
void log_msg_set_value_with_type(LogMessage *self, NVHandle handle, const gchar *value, gssize value_len, LogMessageValueType type)
Definition: logmsg.c:573
gint log_msg_lookup_time_stamp_name(const gchar *name)
Definition: logmsg.c:2128
void log_msg_set_tag_by_id(LogMessage *self, LogTagId id)
Definition: logmsg.c:1009
void log_msg_set_match_indirect(LogMessage *self, gint index, NVHandle ref_handle, guint16 ofs, guint16 len)
Definition: logmsg.c:814
gboolean log_msg_value_type_from_str(const gchar *in_str, LogMessageValueType *out_type)
Definition: logmsg.c:233
LogMessage * log_msg_new_internal(gint prio, const gchar *msg)
Definition: logmsg.c:1560
void log_msg_clear_sdata(LogMessage *self)
Definition: logmsg.c:1244
void log_msg_global_init(void)
Definition: logmsg.c:2101
gboolean log_msg_is_tag_by_id(LogMessage *self, LogTagId id)
Definition: logmsg.c:1033
const gchar * log_msg_get_handle_name(NVHandle handle, gssize *length)
Definition: logmsg.c:2115
NVRegistry * logmsg_registry
Definition: logmsg.c:271
void(* LMAckFunc)(LogMessage *lm, AckType ack_type)
Definition: logmsg.h:63
void log_msg_tags_foreach(const LogMessage *self, LogMessageTagsForeachFunc callback, gpointer user_data)
Definition: logmsg.c:911
@ LF_STATE_OWN_TAGS
Definition: logmsg.h:171
@ LF_INTERNAL
Definition: logmsg.h:159
@ LF_STATE_OWN_PAYLOAD
Definition: logmsg.h:168
@ LF_STATE_OWN_MASK
Definition: logmsg.h:173
@ LF_OLD_UNPARSED
Definition: logmsg.h:155
@ LF_LOCAL
Definition: logmsg.h:161
@ __UNUSED_LF_LEGACY_MSGHDR
Definition: logmsg.h:192
@ LF_STATE_MASK
Definition: logmsg.h:167
@ LF_MARK
Definition: logmsg.h:163
@ LF_STATE_OWN_SDATA
Definition: logmsg.h:172
@ LF_STATE_CLONED_MASK
Definition: logmsg.h:176
@ LF_STATE_OWN_SADDR
Definition: logmsg.h:169
@ LF_CHAINED_HOSTNAME
Definition: logmsg.h:179
@ LF_UTF8
Definition: logmsg.h:157
@ LF_STATE_TRACING
Definition: logmsg.h:177
@ LF_STATE_OWN_DADDR
Definition: logmsg.h:170
LogMessage * log_msg_new_local(void)
Definition: logmsg.c:1541
NVHandle log_msg_get_match_handle(gint index_)
Definition: logmsg.c:771
void log_msg_set_daddr_ref(LogMessage *self, GSockAddr *daddr)
Definition: logmsg.c:1319
const gchar * log_msg_get_match_with_type(const LogMessage *self, gint index_, gssize *value_len, LogMessageValueType *type)
Definition: logmsg.c:829
void log_msg_free_queue_node(LogMessageQueueNode *node)
Definition: logmsg.c:533
guint8 NVType
Definition: nvtable.h:36
gboolean(* NVTableForeachFunc)(NVHandle handle, const gchar *name, const gchar *value, gssize value_len, NVType type, gpointer user_data)
Definition: nvtable.h:37
guint32 NVHandle
Definition: nvtable.h:35
#define self
Definition: rcptid.c:38
Definition: gsockaddr.h:46
LogMessage * msg
Definition: logmsg.h:232
guint ack_needed
Definition: logmsg.h:233
guint8 num_nodes
Definition: logmsg.h:294
guint8 proto
Definition: logmsg.h:280
LogMessageQueueNode nodes[0]
Definition: logmsg.h:322
LMAckFunc ack_func
Definition: logmsg.h:314
AckRecord * ack_record
Definition: logmsg.h:313
LogMessage * original
Definition: logmsg.h:261
guint8 initial_parse
Definition: logmsg.h:270
guint8 write_protected
Definition: logmsg.h:299
UnixTime timestamps[LM_TS_MAX]
Definition: logmsg.h:319
guint16 pri
Definition: logmsg.h:269
guint8 num_matches
Definition: logmsg.h:282
guint8 recursed
Definition: logmsg.h:271
guint8 num_sdata
Definition: logmsg.h:291
guint32 flags
Definition: logmsg.h:258
gint ack_and_ref_and_abort_and_suspended
Definition: logmsg.h:257
NVTable * payload
Definition: logmsg.h:260
guint8 cur_node
Definition: logmsg.h:297
guint16 generation
Definition: logmsg.h:268
guint32 host_id
Definition: logmsg.h:301
GSockAddr * saddr
Definition: logmsg.h:316
guint8 alloc_sdata
Definition: logmsg.h:289
GSockAddr * daddr
Definition: logmsg.h:317
guint32 allocated_bytes
Definition: logmsg.h:311
NVHandle * sdata
Definition: logmsg.h:263
guint8 num_tags
Definition: logmsg.h:287
guint32 recvd_rawmsg_size
Definition: logmsg.h:306
gulong * tags
Definition: logmsg.h:262
guint64 rcptid
Definition: logmsg.h:303
Definition: logpipe.h:197
GString * value
Definition: test_decode.c:28
GString * result
Definition: test_lexer_block.c:34
LogMessage * msg
Definition: test_rename.c:35
SerializeArchive * sa
Definition: test_timestamp_serialize.c:31
LogPathOptions path_options
Definition: test_wildcard_file_reader.c:62