#include "audit/zbxaudit_host.h"
#include "audit/zbxaudit.h"
#define PREPARE_UPDATE_JSON_SNMP_INTERFACE_OP(auditentry) \
char audit_key_version[AUDIT_DETAILS_KEY_LEN], audit_key_bulk[AUDIT_DETAILS_KEY_LEN], \
audit_key_community[AUDIT_DETAILS_KEY_LEN], audit_key_securityname[AUDIT_DETAILS_KEY_LEN], \
audit_key_securitylevel[AUDIT_DETAILS_KEY_LEN], \
audit_key_authpassphrase[AUDIT_DETAILS_KEY_LEN], \
audit_key_privpassphrase[AUDIT_DETAILS_KEY_LEN], audit_key_authprotocol[AUDIT_DETAILS_KEY_LEN], \
audit_key_privprotocol[AUDIT_DETAILS_KEY_LEN], audit_key_contextname[AUDIT_DETAILS_KEY_LEN], \
audit_key[AUDIT_DETAILS_KEY_LEN]; \
RETURN_IF_AUDIT_OFF(audit_context_mode); \
zbx_snprintf(audit_key, sizeof(audit_key), #auditentry".interfaces[" ZBX_FS_UI64 \
"].details", interfaceid); \
zbx_snprintf(audit_key_version, sizeof(audit_key_version), #auditentry".interfaces[" ZBX_FS_UI64 \
"].details.version", interfaceid); \
zbx_snprintf(audit_key_bulk, sizeof(audit_key_bulk), #auditentry".interfaces[" ZBX_FS_UI64 \
"].details.bulk", interfaceid); \
zbx_snprintf(audit_key_community, sizeof(audit_key_community), \
#auditentry".interfaces[" ZBX_FS_UI64 "].details.community", interfaceid); \
zbx_snprintf(audit_key_securityname, sizeof(audit_key_securityname), \
#auditentry".interfaces[" ZBX_FS_UI64 "].details.securityname", interfaceid); \
zbx_snprintf(audit_key_securitylevel, sizeof(audit_key_securitylevel), \
#auditentry".interfaces[" ZBX_FS_UI64 "].details.securitylevel", interfaceid); \
zbx_snprintf(audit_key_authpassphrase, sizeof(audit_key_authpassphrase), \
#auditentry".interfaces[" ZBX_FS_UI64 "].details.authpassphrase", interfaceid); \
zbx_snprintf(audit_key_privpassphrase, sizeof(audit_key_privpassphrase), \
#auditentry".interfaces[" ZBX_FS_UI64 "].details.privpassphrase", interfaceid); \
zbx_snprintf(audit_key_authprotocol, sizeof(audit_key_authprotocol), \
#auditentry".interfaces[" ZBX_FS_UI64 "].details.authprotocol", interfaceid); \
zbx_snprintf(audit_key_privprotocol, sizeof(audit_key_privprotocol), \
#auditentry".interfaces[" ZBX_FS_UI64 "].details.privprotocol", interfaceid); \
zbx_snprintf(audit_key_contextname, sizeof(audit_key_contextname), \
#auditentry".interfaces[" ZBX_FS_UI64 "].details.contextname", interfaceid); \
#define PREPARE_AUDIT_SNMP_INTERFACE(funcname, auditentry) \
void zbx_audit_##funcname##_update_json_add_snmp_interface(int audit_context_mode, zbx_uint64_t hostid, \
zbx_uint64_t version, zbx_uint64_t bulk, const char *community, const char *securityname, \
zbx_uint64_t securitylevel, const char *authpassphrase, const char *privpassphrase, \
zbx_uint64_t authprotocol, zbx_uint64_t privprotocol, const char *contextname, \
zbx_uint64_t interfaceid) \
PREPARE_UPDATE_JSON_SNMP_INTERFACE_OP(auditentry) \
zbx_audit_update_json_append_no_value(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, audit_key); \
zbx_audit_update_json_append_uint64(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, audit_key_version, \
version, "interface_snmp", "version"); \
zbx_audit_update_json_append_uint64(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, audit_key_bulk, \
bulk, "interface_snmp", "bulk"); \
zbx_audit_update_json_append_string(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, \
audit_key_community, community, "interface_snmp", "community"); \
zbx_audit_update_json_append_string(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, \
audit_key_securityname, securityname, "interface_snmp", "securityname"); \
zbx_audit_update_json_append_uint64(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, \
audit_key_securitylevel, securitylevel, "interface_snmp", "securitylevel"); \
zbx_audit_update_json_append_string(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, \
audit_key_authpassphrase, authpassphrase, "interface_snmp", "authpassphrase"); \
zbx_audit_update_json_append_string(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, \
audit_key_privpassphrase, privpassphrase, "interface_snmp", "privpassphrase"); \
zbx_audit_update_json_append_uint64(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, \
audit_key_authprotocol, authprotocol, "interface_snmp", "authprotocol"); \
zbx_audit_update_json_append_uint64(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, \
audit_key_privprotocol, privprotocol, "interface_snmp", "privprotocol"); \
zbx_audit_update_json_append_string(hostid, AUDIT_HOST_ID, AUDIT_DETAILS_ACTION_ADD, \
audit_key_contextname, contextname, "interface_snmp", "contextname"); \
void zbx_audit_##funcname##_update_json_update_snmp_interface(int audit_context_mode, zbx_uint64_t hostid, \
zbx_uint64_t version_old, zbx_uint64_t version_new, zbx_uint64_t bulk_old, \
zbx_uint64_t bulk_new, const char *community_old, const char *community_new, \
const char *securityname_old, const char *securityname_new, zbx_uint64_t securitylevel_old, \
zbx_uint64_t securitylevel_new, const char *authpassphrase_old, const char *authpassphrase_new, \