/* ** Zabbix ** Copyright (C) 2001-2023 Zabbix SIA ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ #ifndef ZABBIX_CACHECONFIG_H #define ZABBIX_CACHECONFIG_H #include "zbxdbhigh.h" #include "zbxcomms.h" #include "zbxeval.h" #include "zbxavailability.h" #include "zbxversion.h" #include "zbxvault.h" #include "zbxregexp.h" #include "zbxtagfilter.h" #define ZBX_NO_POLLER 255 #define ZBX_POLLER_TYPE_NORMAL 0 #define ZBX_POLLER_TYPE_UNREACHABLE 1 #define ZBX_POLLER_TYPE_IPMI 2 #define ZBX_POLLER_TYPE_PINGER 3 #define ZBX_POLLER_TYPE_JAVA 4 #define ZBX_POLLER_TYPE_HISTORY 5 #define ZBX_POLLER_TYPE_ODBC 6 #define ZBX_POLLER_TYPE_HTTPAGENT 7 #define ZBX_POLLER_TYPE_AGENT 8 #define ZBX_POLLER_TYPE_SNMP 9 #define ZBX_POLLER_TYPE_COUNT 10 /* number of poller types */ typedef enum { ZBX_SESSION_TYPE_DATA = 0, ZBX_SESSION_TYPE_CONFIG, ZBX_SESSION_TYPE_COUNT, } zbx_session_type_t; #define ZBX_MAX_JAVA_ITEMS 32 #define ZBX_MAX_SNMP_ITEMS 128 #define ZBX_MAX_POLLER_ITEMS 128 /* MAX(ZBX_MAX_JAVA_ITEMS, ZBX_MAX_SNMP_ITEMS) */ #define ZBX_MAX_PINGER_ITEMS 128 #define ZBX_MAX_HTTPAGENT_ITEMS 1000 #define ZBX_MAX_AGENT_ITEMS 1000 #define ZBX_MAX_ITEMS 1000 #define ZBX_SNMPTRAP_LOGGING_ENABLED 1 #define ZBX_AGENT_ZABBIX (INTERFACE_TYPE_AGENT - 1) #define ZBX_AGENT_SNMP (INTERFACE_TYPE_SNMP - 1) #define ZBX_AGENT_IPMI (INTERFACE_TYPE_IPMI - 1) #define ZBX_AGENT_JMX (INTERFACE_TYPE_JMX - 1) #define ZBX_AGENT_UNKNOWN 255 #define ZBX_AGENT_MAX INTERFACE_TYPE_COUNT typedef struct { zbx_uint64_t interfaceid; char ip_orig[ZBX_INTERFACE_IP_LEN_MAX]; char dns_orig[ZBX_INTERFACE_DNS_LEN_MAX]; char port_orig[ZBX_INTERFACE_PORT_LEN_MAX]; char *addr; unsigned short port; unsigned char useip; unsigned char type; unsigned char main; unsigned char available; int disable_until; char error[ZBX_INTERFACE_ERROR_LEN_MAX]; int errors_from; } zbx_dc_interface_t; typedef struct { zbx_uint64_t interfaceid; char *addr; unsigned char type; unsigned char main; unsigned char bulk; unsigned char snmp_version; unsigned char useip; char ip_orig[ZBX_INTERFACE_IP_LEN_MAX]; char dns_orig[ZBX_INTERFACE_DNS_LEN_MAX]; char port_orig[ZBX_INTERFACE_PORT_LEN_MAX]; } zbx_dc_interface2_t; typedef struct { zbx_uint64_t itemid; zbx_uint64_t hostid; unsigned char value_type; unsigned char flags; char *key; char *key_orig; char host[ZBX_HOSTNAME_BUF_LEN]; zbx_dc_interface_t interface; int ret; AGENT_RESULT result; } zbx_dc_item_context_t; #define ZBX_HOST_IPMI_USERNAME_LEN 16 #define ZBX_HOST_IPMI_USERNAME_LEN_MAX (ZBX_HOST_IPMI_USERNAME_LEN + 1) #define ZBX_HOST_IPMI_PASSWORD_LEN 20 #define ZBX_HOST_IPMI_PASSWORD_LEN_MAX (ZBX_HOST_IPMI_PASSWORD_LEN + 1) #define ZBX_HOST_PROXY_ADDRESS_LEN 255 #define ZBX_HOST_PROXY_ADDRESS_LEN_MAX (ZBX_HOST_PROXY_ADDRESS_LEN + 1) typedef struct { zbx_uint64_t hostid; zbx_uint64_t proxyid; char host[ZBX_HOSTNAME_BUF_LEN]; char name[ZBX_MAX_HOSTNAME_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1]; unsigned char maintenance_status; unsigned char maintenance_type; int maintenance_from; signed char ipmi_authtype; unsigned char ipmi_privilege; char ipmi_username[ZBX_HOST_IPMI_USERNAME_LEN_MAX]; char ipmi_password[ZBX_HOST_IPMI_PASSWORD_LEN_MAX]; unsigned char status; unsigned char tls_connect; unsigned char tls_accept; #if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL) char tls_issuer[HOST_TLS_ISSUER_LEN_MAX]; char tls_subject[HOST_TLS_SUBJECT_LEN_MAX]; char tls_psk_identity[HOST_TLS_PSK_IDENTITY_LEN_MAX]; char tls_psk[HOST_TLS_PSK_LEN_MAX]; #endif } zbx_dc_host_t; typedef struct { zbx_dc_host_t host; zbx_dc_interface_t interface; zbx_uint64_t itemid; zbx_uint64_t lastlogsize; unsigned char type; unsigned char snmp_version; unsigned char value_type; unsigned char state; unsigned char snmpv3_securitylevel; unsigned char authtype; unsigned char flags; unsigned char snmpv3_authprotocol; unsigned char snmpv3_privprotocol; unsigned char status; unsigned char follow_redirects; unsigned char post_type; unsigned char retrieve_mode; unsigned char request_method; unsigned char output_format; unsigned char verify_peer; unsigned char verify_host; unsigned char allow_traps; char key_orig[ZBX_ITEM_KEY_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1], *key; char *delay; int mtime; char trapper_hosts[ZBX_ITEM_TRAPPER_HOSTS_LEN_MAX]; char logtimefmt[ZBX_ITEM_LOGTIMEFMT_LEN_MAX]; char snmp_community_orig[ZBX_ITEM_SNMP_COMMUNITY_LEN_MAX], *snmp_community; char snmp_oid_orig[ZBX_ITEM_SNMP_OID_LEN_MAX], *snmp_oid; char snmpv3_securityname_orig[ZBX_ITEM_SNMPV3_SECURITYNAME_LEN_MAX], *snmpv3_securityname; char snmpv3_authpassphrase_orig[ZBX_ITEM_SNMPV3_AUTHPASSPHRASE_LEN_MAX], *snmpv3_authpassphrase; char snmpv3_privpassphrase_orig[ZBX_ITEM_SNMPV3_PRIVPASSPHRASE_LEN_MAX], *snmpv3_privpassphrase; char ipmi_sensor[ZBX_ITEM_IPMI_SENSOR_LEN_MAX]; char *params; char username_orig[ZBX_ITEM_USERNAME_LEN_MAX], *username; char publickey_orig[ZBX_ITEM_PUBLICKEY_LEN_MAX], *publickey; char privatekey_orig[ZBX_ITEM_PRIVATEKEY_LEN_MAX], *privatekey; char password_orig[ZBX_ITEM_PASSWORD_LEN_MAX], *password; char snmpv3_contextname_orig[ZBX_ITEM_SNMPV3_CONTEXTNAME_LEN_MAX], *snmpv3_contextname; char jmx_endpoint_orig[ZBX_ITEM_JMX_ENDPOINT_LEN_MAX], *jmx_endpoint; char timeout_orig[ZBX_ITEM_TIMEOUT_LEN_MAX], *timeout; char url_orig[ZBX_ITEM_URL_LEN_MAX], *url; char query_fields_orig[ZBX_ITEM_QUERY_FIELDS_LEN_MAX], *query_fields; char *posts; char status_codes_orig[ZBX_ITEM_STATUS_CODES_LEN_MAX], *status_codes; char http_proxy_orig[ZBX_ITEM_HTTP_PROXY_LEN_MAX], *http_proxy; char *headers; char ssl_cert_file_orig[ZBX_ITEM_SSL_CERT_FILE_LEN_MAX], *ssl_cert_file; char ssl_key_file_orig[ZBX_ITEM_SSL_KEY_FILE_LEN_MAX], *ssl_key_file; char ssl_key_password_orig[ZBX_ITEM_SSL_KEY_PASSWORD_LEN_MAX], *ssl_key_password; char *script_params; char *error; unsigned char *formula_bin; int snmp_max_repetitions; } zbx_dc_item_t; ZBX_PTR_VECTOR_DECL(dc_item, zbx_dc_item_t *) typedef struct { zbx_uint64_t hostid; zbx_uint64_t proxyid; char host[ZBX_HOSTNAME_BUF_LEN]; char name[ZBX_MAX_HOSTNAME_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1]; signed char inventory_mode; unsigned char status; } zbx_history_sync_host_t; typedef struct { zbx_history_sync_host_t host; zbx_uint64_t itemid; zbx_uint64_t lastlogsize; zbx_uint64_t valuemapid; char key_orig[ZBX_ITEM_KEY_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1]; char *units; char *error; char *history_period, *trends_period; int mtime; int history_sec; int trends_sec; int flags; unsigned char type; unsigned char value_type; unsigned char state; unsigned char inventory_link; unsigned char status; unsigned char history; unsigned char trends; } zbx_history_sync_item_t; typedef struct { zbx_uint64_t hostid; zbx_uint64_t proxyid; char host[ZBX_HOSTNAME_BUF_LEN]; char name[ZBX_MAX_HOSTNAME_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1]; unsigned char maintenance_status; unsigned char maintenance_type; int maintenance_from; unsigned char status; unsigned char tls_accept; #if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL) char tls_issuer[HOST_TLS_ISSUER_LEN_MAX]; char tls_subject[HOST_TLS_SUBJECT_LEN_MAX]; char tls_psk_identity[HOST_TLS_PSK_IDENTITY_LEN_MAX]; char tls_psk[HOST_TLS_PSK_LEN_MAX]; #endif } zbx_history_recv_host_t; typedef struct { zbx_history_recv_host_t host; zbx_dc_interface_t interface; zbx_uint64_t itemid; unsigned char value_type; unsigned char state; unsigned char flags; unsigned char type; unsigned char status; unsigned char allow_traps; char key_orig[ZBX_ITEM_KEY_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1], *key; char trapper_hosts[ZBX_ITEM_TRAPPER_HOSTS_LEN_MAX]; char logtimefmt[ZBX_ITEM_LOGTIMEFMT_LEN_MAX]; } zbx_history_recv_item_t; typedef struct { zbx_uint64_t itemid; zbx_uint64_t proxyid; const char *host; const char *key_orig; unsigned char value_type; } zbx_dc_evaluate_item_t; typedef struct { zbx_uint64_t functionid; zbx_uint64_t triggerid; zbx_uint64_t itemid; char *function; char *parameter; unsigned char type; } zbx_dc_function_t; typedef struct { zbx_uint64_t hostid; zbx_uint64_t itemid; zbx_tag_t tag; } zbx_item_tag_t; ZBX_PTR_VECTOR_DECL(item_tag, zbx_item_tag_t *) typedef struct _DC_TRIGGER { zbx_uint64_t triggerid; char *description; char *expression; char *recovery_expression; char *error; char *new_error; char *correlation_tag; char *opdata; char *event_name; unsigned char *expression_bin; unsigned char *recovery_expression_bin; zbx_timespec_t timespec; int lastchange; unsigned char topoindex; unsigned char priority; unsigned char type; unsigned char value; unsigned char state; unsigned char new_value; unsigned char status; unsigned char recovery_mode; unsigned char correlation_mode; unsigned char flags; zbx_vector_ptr_t tags; zbx_vector_uint64_t itemids; zbx_eval_context_t *eval_ctx; zbx_eval_context_t *eval_ctx_r; } zbx_dc_trigger_t; ZBX_PTR_VECTOR_DECL(dc_trigger, zbx_dc_trigger_t *) typedef struct { zbx_uint64_t proxyid; char name[ZBX_HOSTNAME_BUF_LEN]; time_t proxy_config_nextcheck; time_t proxy_data_nextcheck; time_t proxy_tasks_nextcheck; time_t last_cfg_error_time; /* time when passive proxy misconfiguration error was */ /* seen or 0 if no error */ char version_str[ZBX_VERSION_BUF_LEN]; int version_int; zbx_proxy_compatibility_t compatibility; time_t lastaccess; char addr_orig[ZBX_INTERFACE_ADDR_LEN_MAX]; char port_orig[ZBX_INTERFACE_PORT_LEN_MAX]; char *addr; unsigned short port; unsigned char tls_connect; unsigned char tls_accept; #if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL) char tls_issuer[HOST_TLS_ISSUER_LEN_MAX]; char tls_subject[HOST_TLS_SUBJECT_LEN_MAX]; char tls_psk_identity[HOST_TLS_PSK_IDENTITY_LEN_MAX]; char tls_psk[HOST_TLS_PSK_LEN_MAX]; #endif zbx_uint64_t revision; zbx_uint64_t macro_revision; char allowed_addresses[ZBX_HOST_PROXY_ADDRESS_LEN_MAX]; time_t last_version_error_time; } zbx_dc_proxy_t; #define ZBX_ACTION_OPCLASS_NONE 0 #define ZBX_ACTION_OPCLASS_NORMAL 1 #define ZBX_ACTION_OPCLASS_RECOVERY 2 #define ZBX_ACTION_OPCLASS_ACKNOWLEDGE 4 typedef struct { zbx_uint64_t actionid; char *formula; unsigned char eventsource; unsigned char evaltype; unsigned char opflags; zbx_vector_ptr_t conditions; } zbx_action_eval_t; typedef struct { char *host; char *key; } zbx_host_key_t; ZBX_VECTOR_DECL(host_key, zbx_host_key_t) /* housekeeping related configuration data */ typedef struct { int events_trigger; int events_internal; int events_discovery; int events_autoreg; int events_service; int services; int audit; int sessions; int trends; int history; unsigned char services_mode; unsigned char audit_mode; unsigned char sessions_mode; unsigned char events_mode; unsigned char trends_mode; unsigned char trends_global; unsigned char history_mode; unsigned char history_global; } zbx_config_hk_t; typedef struct { char *extension; unsigned char history_compression_status; int history_compress_older; } zbx_config_db_t; /* global configuration data (loaded from config table) */ typedef struct { /* the fields set by zbx_config_get() function, see ZBX_CONFIG_FLAGS_ defines */ zbx_uint64_t flags; char **severity_name; zbx_uint64_t discovery_groupid; int default_inventory_mode; unsigned char snmptrap_logging; unsigned char autoreg_tls_accept; char *default_timezone; int auditlog_enabled; /* database configuration data for ZBX_CONFIG_DB_EXTENSION_* extensions */ zbx_config_db_t db; /* housekeeping related configuration data */ zbx_config_hk_t hk; } zbx_config_t; #define ZBX_CONFIG_FLAGS_SEVERITY_NAME __UINT64_C(0x0000000000000001) #define ZBX_CONFIG_FLAGS_DISCOVERY_GROUPID __UINT64_C(0x0000000000000002) #define ZBX_CONFIG_FLAGS_DEFAULT_INVENTORY_MODE __UINT64_C(0x0000000000000004) #define ZBX_CONFIG_FLAGS_SNMPTRAP_LOGGING __UINT64_C(0x0000000000000010) #define ZBX_CONFIG_FLAGS_HOUSEKEEPER __UINT64_C(0x0000000000000020) #define ZBX_CONFIG_FLAGS_DB_EXTENSION __UINT64_C(0x0000000000000040) #define ZBX_CONFIG_FLAGS_AUTOREG_TLS_ACCEPT __UINT64_C(0x0000000000000080) #define ZBX_CONFIG_FLAGS_DEFAULT_TIMEZONE __UINT64_C(0x0000000000000100) #define ZBX_CONFIG_FLAGS_AUDITLOG_ENABLED __UINT64_C(0x0000000000000200) typedef struct { zbx_uint64_t hostid; unsigned char idx; const char *field_name; char *value; } zbx_inventory_value_t; typedef struct { char *tag; } zbx_corr_condition_tag_t; typedef struct { char *tag; char *value; unsigned char op; } zbx_corr_condition_tag_value_t; typedef struct { zbx_uint64_t groupid; unsigned char op; } zbx_corr_condition_group_t; typedef struct { char *oldtag; char *newtag; } zbx_corr_condition_tag_pair_t; typedef union { zbx_corr_condition_tag_t tag; zbx_corr_condition_tag_value_t tag_value; zbx_corr_condition_group_t group; zbx_corr_condition_tag_pair_t tag_pair; } zbx_corr_condition_data_t; typedef struct { zbx_uint64_t corr_conditionid; int type; zbx_corr_condition_data_t data; } zbx_corr_condition_t; typedef struct { unsigned char type; } zbx_corr_operation_t; typedef struct { zbx_uint64_t correlationid; char *name; char *formula; unsigned char evaltype; zbx_vector_ptr_t conditions; zbx_vector_ptr_t operations; } zbx_correlation_t; typedef struct { zbx_vector_ptr_t correlations; zbx_hashset_t conditions; /* Configuration synchronization timestamp of the rules. */ /* Update the cache if this timesamp is less than the */ /* current configuration synchronization timestamp. */ int sync_ts; } zbx_correlation_rules_t; /* item queue data */ typedef struct { zbx_uint64_t itemid; zbx_uint64_t proxyid; int type; int nextcheck; } zbx_queue_item_t; typedef union { zbx_uint64_t ui64; double dbl; } zbx_counter_value_t; typedef struct { zbx_uint64_t proxyid; zbx_counter_value_t counter_value; } zbx_proxy_counter_t; typedef struct { unsigned char type; unsigned char error_handler; char *params; char *error_handler_params; } zbx_preproc_op_t; typedef struct { zbx_uint64_t itemid; zbx_uint64_t hostid; unsigned char type; unsigned char value_type; int dep_itemids_num; int preproc_ops_num; zbx_uint64_t revision; zbx_uint64_t preproc_revision; zbx_uint64_pair_t *dep_itemids; zbx_preproc_op_t *preproc_ops; } zbx_preproc_item_t; typedef struct { zbx_uint64_t connectorid; zbx_uint64_t revision; unsigned char protocol; unsigned char data_type; char *url_orig, *url; int max_records; int max_senders; char *timeout_orig, *timeout; unsigned char max_attempts; char *token_orig, *token; char *http_proxy_orig, *http_proxy; unsigned char authtype; char *username_orig, *username; char *password_orig, *password; unsigned char verify_peer; unsigned char verify_host; char *ssl_cert_file_orig,*ssl_cert_file; char *ssl_key_file_orig, *ssl_key_file; char *ssl_key_password_orig, *ssl_key_password; zbx_hashset_t data_point_links; zbx_list_t data_point_link_queue; int time_flush; int senders; } zbx_connector_t; /* the configuration cache statistics */ typedef struct { zbx_uint64_t hosts; zbx_uint64_t items; zbx_uint64_t items_unsupported; double requiredperformance; } zbx_config_cache_info_t; typedef struct { zbx_uint64_t dcheckid; zbx_uint64_t druleid; unsigned char type; char *key_; char *snmp_community; char *ports; char *snmpv3_securityname; unsigned char snmpv3_securitylevel; char *snmpv3_authpassphrase; char *snmpv3_privpassphrase; unsigned char uniq; unsigned char snmpv3_authprotocol; unsigned char snmpv3_privprotocol; char *snmpv3_contextname; unsigned char allow_redirect; } zbx_dc_dcheck_t; ZBX_PTR_VECTOR_DECL(dc_dcheck_ptr, zbx_dc_dcheck_t *) typedef struct { zbx_uint64_t druleid; zbx_uint64_t proxyid; time_t nextcheck; int delay; char *delay_str; char *iprange; unsigned char status; unsigned char location; zbx_uint64_t revision; char *name; zbx_uint64_t unique_dcheckid; zbx_vector_dc_dcheck_ptr_t dchecks; int concurrency_max; } zbx_dc_drule_t; ZBX_PTR_VECTOR_DECL(dc_drule_ptr, zbx_dc_drule_t *) int zbx_is_item_processed_by_server(unsigned char type, const char *key); int zbx_is_counted_in_item_queue(unsigned char type, const char *key); int zbx_in_maintenance_without_data_collection(unsigned char maintenance_status, unsigned char maintenance_type, unsigned char type); #define ZBX_SYNC_NONE 0 #define ZBX_SYNC_ALL 1 /* initial sync, get all data */ #define ZBX_DBSYNC_INIT 0 /* update sync, get changed data */ #define ZBX_DBSYNC_UPDATE 1 #define ZBX_DBSYNC_STATUS_INITIALIZED 0 #define ZBX_DBSYNC_STATUS_UNKNOWN -1 typedef enum { ZBX_SYNCED_NEW_CONFIG_NO, ZBX_SYNCED_NEW_CONFIG_YES } zbx_synced_new_config_t; #define ZBX_ITEM_GET_INTERFACE 0x0001 #define ZBX_ITEM_GET_HOST 0x0002 #define ZBX_ITEM_GET_HOSTNAME 0x0004 #define ZBX_ITEM_GET_HOSTINFO 0x0008 #define ZBX_ITEM_GET_TRAPPER 0x0010 #define ZBX_ITEM_GET_DEFAULT ((unsigned int)~0) #define ZBX_ITEM_GET_SYNC 0 #define ZBX_ITEM_GET_SYNC_EXPORT (ZBX_ITEM_GET_HOSTNAME) #define ZBX_ITEM_GET_PROCESS 0 typedef struct zbx_dc_um_shared_handle zbx_dc_um_shared_handle_t; typedef struct zbx_um_cache zbx_um_cache_t; void zbx_dc_sync_configuration(unsigned char mode, zbx_synced_new_config_t synced, zbx_vector_uint64_t *deleted_itemids, const zbx_config_vault_t *config_vault, int proxyconfig_frequency); void zbx_dc_sync_kvs_paths(const struct zbx_json_parse *jp_kvs_paths, const zbx_config_vault_t *config_vault, const char *config_source_ip); int zbx_init_configuration_cache(zbx_get_program_type_f get_program_type, zbx_get_config_forks_f get_config_forks, zbx_uint64_t conf_cache_size, char **error); void zbx_free_configuration_cache(void); void zbx_dc_config_get_triggers_by_triggerids(zbx_dc_trigger_t *triggers, const zbx_uint64_t *triggerids, int *errcode, size_t num); void zbx_dc_config_clean_items(zbx_dc_item_t *items, int *errcodes, size_t num); int zbx_dc_get_host_by_hostid(zbx_dc_host_t *host, zbx_uint64_t hostid); int zbx_dc_config_get_hostid_by_name(const char *host, zbx_uint64_t *hostid); void zbx_dc_config_get_hosts_by_itemids(zbx_dc_host_t *hosts, const zbx_uint64_t *itemids, int *errcodes, size_t num); void zbx_dc_config_get_hosts_by_hostids(zbx_dc_host_t *hosts, const zbx_uint64_t *hostids, int *errcodes, int num); void zbx_dc_config_get_items_by_keys(zbx_dc_item_t *items, zbx_host_key_t *keys, int *errcodes, size_t num); void zbx_dc_config_get_items_by_itemids(zbx_dc_item_t *items, const zbx_uint64_t *itemids, int *errcodes, size_t num); void zbx_dc_config_history_sync_get_items_by_itemids(zbx_history_sync_item_t *items, const zbx_uint64_t *itemids, int *errcodes, size_t num, unsigned int mode); void zbx_dc_config_history_sync_get_functions_by_functionids(zbx_dc_function_t *functions, zbx_uint64_t *functionids, int *errcodes, size_t num); void zbx_dc_config_history_sync_get_triggers_by_itemids(zbx_hashset_t *trigger_info, zbx_vector_dc_trigger_t *trigger_order, const zbx_uint64_t *itemids, const zbx_timespec_t *timespecs, int itemids_num); void zbx_dc_config_clean_history_sync_items(zbx_history_sync_item_t *items, int *errcodes, size_t num); void zbx_dc_config_history_sync_unset_existing_itemids(zbx_vector_uint64_t *itemids); void zbx_dc_config_history_recv_get_items_by_keys(zbx_history_recv_item_t *items, const zbx_host_key_t *keys, int *errcodes, size_t num); void zbx_dc_config_history_recv_get_items_by_itemids(zbx_history_recv_item_t *items, const zbx_uint64_t *itemids, int *errcodes, size_t num, unsigned int mode); void zbx_dc_config_history_sync_get_connector_filters(zbx_vector_connector_filter_t *connector_filters_history, zbx_vector_connector_filter_t *connector_filters_events); void zbx_dc_config_history_sync_get_connectors(zbx_hashset_t *connectors, zbx_hashset_iter_t *connector_iter, zbx_uint64_t *config_revision, zbx_uint64_t *connector_revision, zbx_clean_func_t data_point_link_clean); void zbx_connector_filter_free(zbx_connector_filter_t connector_filter); int zbx_dc_config_get_active_items_count_by_hostid(zbx_uint64_t hostid); void zbx_dc_config_get_active_items_by_hostid(zbx_dc_item_t *items, zbx_uint64_t hostid, int *errcodes, size_t num); void zbx_dc_config_get_preprocessable_items(zbx_hashset_t *items, zbx_dc_um_shared_handle_t **um_handle, zbx_uint64_t *revision); void zbx_dc_config_get_functions_by_functionids(zbx_dc_function_t *functions, zbx_uint64_t *functionids, int *errcodes, size_t num); void zbx_dc_config_clean_functions(zbx_dc_function_t *functions, int *errcodes, size_t num); void zbx_dc_config_clean_triggers(zbx_dc_trigger_t *triggers, int *errcodes, size_t num); int zbx_dc_config_lock_triggers_by_history_items(zbx_vector_ptr_t *history_items, zbx_vector_uint64_t *triggerids); void zbx_dc_config_lock_triggers_by_triggerids(zbx_vector_uint64_t *triggerids_in, zbx_vector_uint64_t *triggerids_out); void zbx_dc_config_unlock_triggers(const zbx_vector_uint64_t *triggerids); void zbx_dc_config_unlock_all_triggers(void); int zbx_dc_config_trigger_exists(zbx_uint64_t triggerid); int zbx_config_get_trigger_severity_name(int priority, char **replace_to); void zbx_dc_free_triggers(zbx_vector_dc_trigger_t *triggers); void zbx_dc_config_update_interface_snmp_stats(zbx_uint64_t interfaceid, int max_snmp_succeed, int min_snmp_fail); int zbx_dc_config_get_suggested_snmp_vars(zbx_uint64_t interfaceid, int *bulk); int zbx_dc_config_get_interface_by_type(zbx_dc_interface_t *interface, zbx_uint64_t hostid, unsigned char type); int zbx_dc_config_get_interface(zbx_dc_interface_t *interface, zbx_uint64_t hostid, zbx_uint64_t itemid); int zbx_dc_config_get_poller_nextcheck(unsigned char poller_type); int zbx_dc_config_get_poller_items(unsigned char poller_type, int config_timeout, int processing, int config_max_concurrent_checks, zbx_dc_item_t **items); #ifdef HAVE_OPENIPMI int zbx_dc_config_get_ipmi_poller_items(int now, int items_num, int config_timeout, zbx_dc_item_t *items, int *nextcheck); #endif int zbx_dc_config_get_snmp_interfaceids_by_addr(const char *addr, zbx_uint64_t **interfaceids); size_t zbx_dc_config_get_snmp_items_by_interfaceid(zbx_uint64_t interfaceid, zbx_dc_item_t **items); void zbx_dc_config_update_autoreg_host(const char *host, const char *listen_ip, const char *listen_dns, unsigned short listen_port, const char *host_metadata, zbx_conn_flags_t flags, int now); void zbx_dc_config_delete_autoreg_host(const zbx_vector_ptr_t *autoreg_hosts); #define ZBX_HK_OPTION_DISABLED 0 #define ZBX_HK_OPTION_ENABLED 1 /* options for hk.history_mode, trends_mode, audit_mode */ #define ZBX_HK_MODE_DISABLED ZBX_HK_OPTION_DISABLED #define ZBX_HK_MODE_REGULAR ZBX_HK_OPTION_ENABLED #define ZBX_HK_MODE_PARTITION 2 #define ZBX_HK_HISTORY_MIN SEC_PER_HOUR #define ZBX_HK_TRENDS_MIN SEC_PER_DAY #define ZBX_HK_PERIOD_MAX (25 * SEC_PER_YEAR) void zbx_dc_requeue_items(const zbx_uint64_t *itemids, const int *lastclocks, const int *errcodes, size_t num); void zbx_dc_poller_requeue_items(const zbx_uint64_t *itemids, const int *lastclocks, const int *errcodes, size_t num, unsigned char poller_type, int *nextcheck); #ifdef HAVE_OPENIPMI void zbx_dc_requeue_unreachable_items(zbx_uint64_t *itemids, size_t itemids_num); #endif int zbx_dc_config_check_trigger_dependencies(zbx_uint64_t triggerid); void zbx_dc_config_triggers_apply_changes(zbx_vector_ptr_t *trigger_diff); void zbx_dc_config_items_apply_changes(const zbx_vector_ptr_t *item_diff); void zbx_dc_config_update_inventory_values(const zbx_vector_ptr_t *inventory_values); int zbx_dc_get_host_inventory_value_by_itemid(zbx_uint64_t itemid, char **replace_to, int value_idx); int zbx_dc_get_host_inventory_value_by_hostid(zbx_uint64_t hostid, char **replace_to, int value_idx); #define ZBX_CONFSTATS_BUFFER_TOTAL 1 #define ZBX_CONFSTATS_BUFFER_USED 2 #define ZBX_CONFSTATS_BUFFER_FREE 3 #define ZBX_CONFSTATS_BUFFER_PUSED 4 #define ZBX_CONFSTATS_BUFFER_PFREE 5 void *zbx_dc_config_get_stats(int request); int zbx_dc_config_get_last_sync_time(void); int zbx_dc_config_get_proxypoller_hosts(zbx_dc_proxy_t *proxies, int max_hosts); int zbx_dc_config_get_proxypoller_nextcheck(void); #define ZBX_PROXY_CONFIG_NEXTCHECK 0x01 #define ZBX_PROXY_DATA_NEXTCHECK 0x02 #define ZBX_PROXY_TASKS_NEXTCHECK 0x04 void zbx_dc_requeue_proxy(zbx_uint64_t proxyid, unsigned char update_nextcheck, int proxy_conn_err, int proxyconfig_frequency, int proxydata_frequency); int zbx_dc_check_host_permissions(const char *host, const zbx_socket_t *sock, zbx_uint64_t *hostid, zbx_uint64_t *revision, char **error); int zbx_dc_is_autoreg_host_changed(const char *host, unsigned short port, const char *host_metadata, zbx_conn_flags_t flag, const char *interface, int now, int heartbeat); #if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL) size_t zbx_dc_get_psk_by_identity(const unsigned char *psk_identity, unsigned char *psk_buf, unsigned int *psk_usage); #endif void zbx_dc_get_autoregistration_psk(char *psk_identity_buf, size_t psk_identity_buf_len, unsigned char *psk_buf, size_t psk_buf_len); #define ZBX_MACRO_ENV_SECURE 0 #define ZBX_MACRO_ENV_NONSECURE 1 #define ZBX_MACRO_ENV_DEFAULT 2 #define ZBX_MACRO_VALUE_TEXT 0 #define ZBX_MACRO_VALUE_SECRET 1 #define ZBX_MACRO_VALUE_VAULT 2 #define ZBX_MACRO_SECRET_MASK "******" int zbx_dc_interface_activate(zbx_uint64_t interfaceid, const zbx_timespec_t *ts, zbx_agent_availability_t *in, zbx_agent_availability_t *out); int zbx_dc_interface_deactivate(zbx_uint64_t interfaceid, const zbx_timespec_t *ts, int unavailable_delay, int unreachable_period, int unreachable_delay, zbx_agent_availability_t *in, zbx_agent_availability_t *out, const char *error_msg); #define ZBX_QUEUE_FROM_DEFAULT 6 /* default lower limit for delay (in seconds) */ #define ZBX_QUEUE_TO_INFINITY -1 /* no upper limit for delay */ void zbx_dc_free_item_queue(zbx_vector_ptr_t *queue); int zbx_dc_get_item_queue(zbx_vector_ptr_t *queue, int from, int to); zbx_uint64_t zbx_dc_get_item_count(zbx_uint64_t hostid); zbx_uint64_t zbx_dc_get_item_unsupported_count(zbx_uint64_t hostid); zbx_uint64_t zbx_dc_get_trigger_count(void); double zbx_dc_get_required_performance(void); zbx_uint64_t zbx_dc_get_host_count(void); void zbx_dc_get_count_stats_all(zbx_config_cache_info_t *stats); void zbx_dc_get_status(zbx_vector_ptr_t *hosts_monitored, zbx_vector_ptr_t *hosts_not_monitored, zbx_vector_ptr_t *items_active_normal, zbx_vector_ptr_t *items_active_notsupported, zbx_vector_ptr_t *items_disabled, zbx_uint64_t *triggers_enabled_ok, zbx_uint64_t *triggers_enabled_problem, zbx_uint64_t *triggers_disabled, zbx_vector_ptr_t *required_performance); void zbx_dc_get_expressions_by_names(zbx_vector_expression_t *expressions, const char * const *names, int names_num); void zbx_dc_get_expressions_by_name(zbx_vector_expression_t *expressions, const char *name); int zbx_dc_get_data_expected_from(zbx_uint64_t itemid, int *seconds); void zbx_dc_get_hostids_by_functionids(zbx_vector_uint64_t *functionids, zbx_vector_uint64_t *hostids); void zbx_dc_get_hosts_by_functionids(const zbx_vector_uint64_t *functionids, zbx_hashset_t *hosts); int zbx_dc_get_proxy_nodata_win(zbx_uint64_t hostid, zbx_proxy_suppress_t *nodata_win, int *lastaccess); int zbx_dc_get_proxy_delay_by_name(const char *name, int *delay, char **error); int zbx_dc_get_proxy_lastaccess_by_name(const char *name, time_t *lastaccess, char **error); int zbx_proxy_discovery_get(char **data, char **error); unsigned int zbx_dc_get_internal_action_count(void); unsigned int zbx_dc_get_auto_registration_action_count(void); /* global configuration support */ #define ZBX_DISCOVERY_GROUPID_UNDEFINED 0 void zbx_config_get(zbx_config_t *cfg, zbx_uint64_t flags); void zbx_config_clean(zbx_config_t *cfg); void zbx_config_get_hk_mode(unsigned char *history_mode, unsigned char *trends_mode); int zbx_dc_set_interfaces_availability(zbx_vector_availability_ptr_t *availabilities); int zbx_dc_reset_interfaces_availability(zbx_vector_availability_ptr_t *interfaces); void zbx_dc_config_history_sync_get_actions_eval(zbx_vector_ptr_t *actions, unsigned char opflags); int zbx_dc_get_interfaces_availability(zbx_vector_ptr_t *interfaces, int *ts); void zbx_dc_touch_interfaces_availability(const zbx_vector_uint64_t *interfaceids); void zbx_set_availability_diff_ts(int ts); void zbx_dc_correlation_rules_init(zbx_correlation_rules_t *rules); void zbx_dc_correlation_rules_clean(zbx_correlation_rules_t *rules); void zbx_dc_correlation_rules_free(zbx_correlation_rules_t *rules); void zbx_dc_correlation_rules_get(zbx_correlation_rules_t *rules); void zbx_dc_get_nested_hostgroupids(zbx_uint64_t *groupids, int groupids_num, zbx_vector_uint64_t *nested_groupids); void zbx_dc_get_hostids_by_group_name(const char *name, zbx_vector_uint64_t *hostids); #define ZBX_DC_FLAG_META 0x01 /* contains meta information (lastlogsize and mtime) */ #define ZBX_DC_FLAG_NOVALUE 0x02 /* entry contains no value */ #define ZBX_DC_FLAG_LLD 0x04 /* low-level discovery value */ #define ZBX_DC_FLAG_UNDEF 0x08 /* unsupported or undefined (delta calculation failed) value */ #define ZBX_DC_FLAG_NOHISTORY 0x10 /* values should not be kept in history */ #define ZBX_DC_FLAG_NOTRENDS 0x20 /* values should not be kept in trends */ typedef struct zbx_hc_data { zbx_history_value_t value; zbx_uint64_t lastlogsize; zbx_timespec_t ts; int mtime; unsigned char value_type; unsigned char flags; unsigned char state; struct zbx_hc_data *next; } zbx_hc_data_t; typedef struct { zbx_uint64_t itemid; unsigned char status; int values_num; zbx_hc_data_t *tail; zbx_hc_data_t *head; } zbx_hc_item_t; void zbx_free_item_tag(zbx_item_tag_t *item_tag); int zbx_dc_get_active_proxy_by_name(const char *name, zbx_dc_proxy_t *proxy, char **error); typedef struct { zbx_timespec_t ts; char *value; /* NULL in case of meta record (see "meta" field below) */ char *source; zbx_uint64_t lastlogsize; zbx_uint64_t id; int mtime; int timestamp; int severity; int logeventid; unsigned char state; unsigned char meta; /* non-zero if contains meta information (lastlogsize and mtime) */ } zbx_agent_value_t; void zbx_dc_items_update_nextcheck(zbx_history_recv_item_t *items, zbx_agent_value_t *values, int *errcodes, size_t values_num); int zbx_dc_get_host_interfaces(zbx_uint64_t hostid, zbx_dc_interface2_t **interfaces, int *n); void zbx_dc_update_proxy(zbx_proxy_diff_t *diff); void zbx_dc_get_proxy_lastaccess(zbx_vector_uint64_pair_t *lastaccess); void zbx_dc_proxy_update_nodata(zbx_vector_uint64_pair_t *subscriptions); typedef struct { zbx_uint64_t triggerid; unsigned char status; zbx_vector_uint64_t masterids; } zbx_trigger_dep_t; void zbx_dc_get_trigger_dependencies(const zbx_vector_uint64_t *triggerids, zbx_vector_ptr_t *deps); void zbx_dc_reschedule_items(const zbx_vector_uint64_t *itemids, time_t nextcheck, zbx_uint64_t *proxyids); /* data session support */ typedef struct { zbx_uint64_t hostid; zbx_uint64_t last_id; const char *token; time_t lastaccess; } zbx_session_t; typedef struct { zbx_uint64_t config; /* configuration cache revision, increased every sync */ zbx_uint64_t expression; /* global expression revision */ zbx_uint64_t autoreg_tls; /* autoregistration tls revision */ zbx_uint64_t upstream; /* configuration revision received from server */ zbx_uint64_t config_table; /* the global configuration revision (config table) */ zbx_uint64_t connector; } zbx_dc_revision_t; const char *zbx_dc_get_session_token(void); zbx_session_t *zbx_dc_get_or_create_session(zbx_uint64_t hostid, const char *token, zbx_session_type_t session_type); int zbx_dc_register_config_session(zbx_uint64_t hostid, const char *token, zbx_uint64_t session_config_revision, zbx_dc_revision_t *dc_revision); void zbx_dc_cleanup_sessions(void); void zbx_dc_cleanup_autoreg_host(void); /* maintenance support */ typedef struct { zbx_uint64_t hostid; zbx_uint64_t maintenanceid; int maintenance_from; unsigned char maintenance_type; unsigned char maintenance_status; unsigned int flags; #define ZBX_FLAG_HOST_MAINTENANCE_UPDATE_MAINTENANCEID 0x0001 #define ZBX_FLAG_HOST_MAINTENANCE_UPDATE_MAINTENANCE_FROM 0x0002 #define ZBX_FLAG_HOST_MAINTENANCE_UPDATE_MAINTENANCE_TYPE 0x0003 #define ZBX_FLAG_HOST_MAINTENANCE_UPDATE_MAINTENANCE_STATUS 0x0004 } zbx_host_maintenance_diff_t; /* event maintenance query data, used to get event maintenances from cache */ typedef struct { zbx_uint64_t eventid; /* [IN] eventid */ zbx_uint64_t r_eventid; /* [-] recovery eventid */ zbx_uint64_t triggerid; /* [-] triggerid */ zbx_vector_uint64_t functionids; /* [IN] associated functionids */ zbx_vector_tags_t tags; /* [IN] event tags */ zbx_vector_uint64_pair_t maintenances; /* [OUT] actual maintenance data for the event in */ /* (maintenanceid, suppress_until) pairs */ } zbx_event_suppress_query_t; #define ZBX_MAINTENANCE_UPDATE_TRUE 1 #define ZBX_MAINTENANCE_UPDATE_FALSE 0 void zbx_event_suppress_query_free(zbx_event_suppress_query_t *query); int zbx_dc_update_maintenances(void); void zbx_dc_get_host_maintenance_updates(const zbx_vector_uint64_t *maintenanceids, zbx_vector_ptr_t *updates); void zbx_dc_flush_host_maintenance_updates(const zbx_vector_ptr_t *updates); int zbx_dc_get_event_maintenances(zbx_vector_ptr_t *event_queries, const zbx_vector_uint64_t *maintenanceids); int zbx_dc_get_running_maintenanceids(zbx_vector_uint64_t *maintenanceids); void zbx_dc_maintenance_set_update_flags(void); void zbx_dc_maintenance_reset_update_flag(int timer); int zbx_dc_maintenance_check_update_flag(int timer); int zbx_dc_maintenance_check_update_flags(void); int zbx_dc_maintenance_has_tags(void); typedef struct { char *lld_macro; char *path; } zbx_lld_macro_path_t; ZBX_PTR_VECTOR_DECL(lld_macro_path, zbx_lld_macro_path_t *) int zbx_lld_macro_paths_get(zbx_uint64_t lld_ruleid, zbx_vector_lld_macro_path_t *lld_macro_paths, char **error); void zbx_lld_macro_path_free(zbx_lld_macro_path_t *lld_macro_path); int zbx_lld_macro_value_by_name(const struct zbx_json_parse *jp_row, const zbx_vector_lld_macro_path_t *lld_macro_paths, const char *macro, char **value); int zbx_lld_macro_paths_compare(const void *d1, const void *d2); void zbx_dc_get_item_tags(zbx_uint64_t itemid, zbx_vector_item_tag_t *item_tags); void zbx_get_item_tags(zbx_uint64_t itemid, zbx_vector_item_tag_t *item_tags); void zbx_dc_config_history_sync_get_item_tags_by_functionids(const zbx_uint64_t *functionids, size_t functionids_num, zbx_vector_item_tag_t *item_tags); const char *zbx_dc_get_instanceid(void); typedef struct { zbx_uint64_t objectid; zbx_uint64_t triggerid; zbx_uint64_t hostid; zbx_uint32_t type; unsigned char lock; /* 1 if the timer has locked trigger, 0 otherwise */ zbx_uint64_t revision; /* revision */ time_t lastcheck; zbx_timespec_t eval_ts; /* the history time for which trigger must be recalculated */ zbx_timespec_t check_ts; /* time when timer must be checked */ zbx_timespec_t exec_ts; /* real time when the timer must be executed */ const char *parameter; /* function parameters (for trend functions) */ } zbx_trigger_timer_t; void zbx_dc_reschedule_trigger_timers(zbx_vector_ptr_t *timers, int now); void zbx_dc_get_trigger_timers(zbx_vector_ptr_t *timers, int now, int soft_limit, int hard_limit); void zbx_dc_clear_timer_queue(zbx_vector_ptr_t *timers); void zbx_dc_get_triggers_by_timers(zbx_hashset_t *trigger_info, zbx_vector_dc_trigger_t *trigger_order, const zbx_vector_ptr_t *timers); void zbx_dc_free_timers(zbx_vector_ptr_t *timers); void zbx_get_host_interfaces_availability(zbx_uint64_t hostid, zbx_agent_availability_t *agents); /* external user macro cache API */ typedef struct zbx_dc_um_handle_t zbx_dc_um_handle_t; zbx_dc_um_handle_t *zbx_dc_open_user_macros(void); zbx_dc_um_handle_t *zbx_dc_open_user_macros_secure(void); zbx_dc_um_handle_t *zbx_dc_open_user_macros_masked(void); void zbx_dc_close_user_macros(zbx_dc_um_handle_t *um_handle); void zbx_dc_get_user_macro(const zbx_dc_um_handle_t *um_handle, const char *macro, const zbx_uint64_t *hostids, int hostids_num, char **value); int zbx_dc_expand_user_macros(const zbx_dc_um_handle_t *um_handle, char **text, const zbx_uint64_t *hostids, int hostids_num, char **error); int zbx_dc_expand_user_macros_from_cache(zbx_um_cache_t *um_cache, char **text, const zbx_uint64_t *hostids, int hostids_num, char **error); char *zbx_dc_expand_user_macros_in_func_params(const char *params, zbx_uint64_t hostid); /* shared user macro handle can be used to share user macro handle between threads */ /* without locking configuration cache to update user macro handle reference counter */ struct zbx_dc_um_shared_handle { zbx_um_cache_t *um_cache; zbx_uint64_t refcount; }; zbx_dc_um_shared_handle_t *zbx_dc_um_shared_handle_update(zbx_dc_um_shared_handle_t *handle); int zbx_dc_um_shared_handle_reacquire(zbx_dc_um_shared_handle_t *old_handle, zbx_dc_um_shared_handle_t *new_handle); zbx_dc_um_shared_handle_t *zbx_dc_um_shared_handle_copy(zbx_dc_um_shared_handle_t *handle); void zbx_dc_um_shared_handle_release(zbx_dc_um_shared_handle_t *handle); int zbx_dc_get_proxyid_by_name(const char *name, zbx_uint64_t *proxyid, unsigned char *type); int zbx_dc_update_passive_proxy_nextcheck(zbx_uint64_t proxyid); typedef struct { zbx_uint64_t proxyid; unsigned char mode; char *name; } zbx_cached_proxy_t; ZBX_PTR_VECTOR_DECL(cached_proxy_ptr, zbx_cached_proxy_t *) void zbx_dc_get_all_proxies(zbx_vector_cached_proxy_ptr_t *proxies); void zbx_cached_proxy_free(zbx_cached_proxy_t *proxy); int zbx_dc_get_proxy_name_type_by_id(zbx_uint64_t proxyid, int *status, char **name); /* item snmpv3 security levels */ #define ZBX_ITEM_SNMPV3_SECURITYLEVEL_NOAUTHNOPRIV 0 #define ZBX_ITEM_SNMPV3_SECURITYLEVEL_AUTHNOPRIV 1 #define ZBX_ITEM_SNMPV3_SECURITYLEVEL_AUTHPRIV 2 /* maintenance tag operators */ #define ZBX_MAINTENANCE_TAG_OPERATOR_EQUAL 0 #define ZBX_MAINTENANCE_TAG_OPERATOR_LIKE 2 /* maintenance tag evaluation types */ /* SYNC WITH PHP! */ #define ZBX_MAINTENANCE_TAG_EVAL_TYPE_AND_OR 0 #define ZBX_MAINTENANCE_TAG_EVAL_TYPE_OR 2 /* special item key used for ICMP pings */ #define ZBX_SERVER_ICMPPING_KEY "icmpping" /* special item key used for ICMP ping latency */ #define ZBX_SERVER_ICMPPINGSEC_KEY "icmppingsec" /* special item key used for ICMP ping loss packages */ #define ZBX_SERVER_ICMPPINGLOSS_KEY "icmppingloss" void zbx_dc_drules_get(time_t now, zbx_vector_dc_drule_ptr_t *drules, time_t *nextcheck); void zbx_dc_drule_queue(time_t now, zbx_uint64_t druleid, int delay); void zbx_dc_drule_revisions_get(zbx_vector_uint64_pair_t *revisions); int zbx_dc_httptest_next(time_t now, zbx_uint64_t *httptestid, time_t *nextcheck); void zbx_dc_httptest_queue(time_t now, zbx_uint64_t httptestid, int delay); zbx_uint64_t zbx_dc_get_received_revision(void); void zbx_dc_update_received_revision(zbx_uint64_t revision); void zbx_dc_get_proxy_config_updates(zbx_uint64_t proxyid, zbx_uint64_t revision, zbx_vector_uint64_t *hostids, zbx_vector_uint64_t *updated_hostids, zbx_vector_uint64_t *removed_hostids, zbx_vector_uint64_t *httptestids); void zbx_dc_get_macro_updates(const zbx_vector_uint64_t *hostids, const zbx_vector_uint64_t *updated_hostids, zbx_uint64_t revision, zbx_vector_uint64_t *macro_hostids, int *global, zbx_vector_uint64_t *del_macro_hostids); void zbx_dc_get_unused_macro_templates(zbx_hashset_t *templates, const zbx_vector_uint64_t *hostids, zbx_vector_uint64_t *templateids); /* maintenance */ typedef enum { MAINTENANCE_TYPE_NORMAL = 0, MAINTENANCE_TYPE_NODATA } zbx_maintenance_type_t; /* action statuses */ #define ZBX_ACTION_STATUS_ACTIVE 0 #define ZBX_ACTION_STATUS_DISABLED 1 /* operation types */ #define ZBX_OPERATION_TYPE_MESSAGE 0 #define ZBX_OPERATION_TYPE_COMMAND 1 #define ZBX_OPERATION_TYPE_HOST_ADD 2 #define ZBX_OPERATION_TYPE_HOST_REMOVE 3 #define ZBX_OPERATION_TYPE_GROUP_ADD 4 #define ZBX_OPERATION_TYPE_GROUP_REMOVE 5 #define ZBX_OPERATION_TYPE_TEMPLATE_ADD 6 #define ZBX_OPERATION_TYPE_TEMPLATE_REMOVE 7 #define ZBX_OPERATION_TYPE_HOST_ENABLE 8 #define ZBX_OPERATION_TYPE_HOST_DISABLE 9 #define ZBX_OPERATION_TYPE_HOST_INVENTORY 10 #define ZBX_OPERATION_TYPE_RECOVERY_MESSAGE 11 #define ZBX_OPERATION_TYPE_UPDATE_MESSAGE 12 /* OPERATION_TYPE_ACK_MESSAGE */ #define ZBX_OPERATION_TYPE_HOST_TAGS_ADD 13 #define ZBX_OPERATION_TYPE_HOST_TAGS_REMOVE 14 /* proxy_history flags */ #define ZBX_PROXY_HISTORY_FLAG_META 0x01 #define ZBX_PROXY_HISTORY_FLAG_NOVALUE 0x02 #define ZBX_PROXY_HISTORY_MASK_NOVALUE (ZBX_PROXY_HISTORY_FLAG_META | ZBX_PROXY_HISTORY_FLAG_NOVALUE) #define ZBX_CORR_CONDITION_OLD_EVENT_TAG 0 #define ZBX_CORR_CONDITION_NEW_EVENT_TAG 1 #define ZBX_CORR_CONDITION_NEW_EVENT_HOSTGROUP 2 #define ZBX_CORR_CONDITION_EVENT_TAG_PAIR 3 #define ZBX_CORR_CONDITION_OLD_EVENT_TAG_VALUE 4 #define ZBX_CORR_CONDITION_NEW_EVENT_TAG_VALUE 5 #define ZBX_RECALC_TIME_PERIOD_HISTORY 1 #define ZBX_RECALC_TIME_PERIOD_TRENDS 2 void zbx_recalc_time_period(time_t *ts_from, int table_group); #endif