#define ADD_JSON_P_UI(x, t, f) zbx_audit_update_json_append_uint64(itemid, AUDIT_ITEM_ID, AUDIT_DETAILS_ACTION_ADD, \
#include "audit/zbxaudit_item.h"
#include "audit/zbxaudit.h"
static int item_flag_to_resource_type(int flag)
if (ZBX_FLAG_DISCOVERY_NORMAL == flag || ZBX_FLAG_DISCOVERY_CREATED == flag)
return AUDIT_RESOURCE_ITEM;
else if (ZBX_FLAG_DISCOVERY_PROTOTYPE == flag)
return AUDIT_RESOURCE_ITEM_PROTOTYPE;
else if (ZBX_FLAG_DISCOVERY_RULE == flag)
return AUDIT_RESOURCE_DISCOVERY_RULE;
zabbix_log(LOG_LEVEL_CRIT, "unexpected audit detected: ->%d<-", flag);
THIS_SHOULD_NEVER_HAPPEN;
void zbx_audit_item_create_entry(int audit_action, zbx_uint64_t itemid, const char *name, int flags)
zbx_audit_entry_t local_audit_item_entry, **found_audit_item_entry;
zbx_audit_entry_t *local_audit_item_entry_x = &local_audit_item_entry;
resource_type = item_flag_to_resource_type(flags);
local_audit_item_entry.id = itemid;
local_audit_item_entry.cuid = NULL;
local_audit_item_entry.id_table = AUDIT_ITEM_ID;
found_audit_item_entry = (zbx_audit_entry_t**)zbx_hashset_search(zbx_get_audit_hashset(),
&(local_audit_item_entry_x));
if (NULL == found_audit_item_entry)
zbx_audit_entry_t *local_audit_item_entry_insert;
local_audit_item_entry_insert = zbx_audit_entry_init(itemid, AUDIT_ITEM_ID, name, audit_action,
zbx_hashset_insert(zbx_get_audit_hashset(), &local_audit_item_entry_insert,
sizeof(local_audit_item_entry_insert));
#define ONLY_ITEM (AUDIT_RESOURCE_ITEM == resource_type)
#define ONLY_ITEM_PROTOTYPE (AUDIT_RESOURCE_ITEM_PROTOTYPE == resource_type)
#define ONLY_LLD_RULE (AUDIT_RESOURCE_DISCOVERY_RULE == resource_type)
#define IT_OR_ITP_OR_DR(s) ONLY_ITEM ? "item."#s : (ONLY_ITEM_PROTOTYPE ? "itemprototype."#s : "discoveryrule."#s)
void zbx_audit_item_update_json_add_data(zbx_uint64_t itemid, const zbx_template_item_t *item, zbx_uint64_t hostid)
resource_type = item_flag_to_resource_type(item->flags);