Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/zbxcacheconfig/dbsync.h')
-rw-r--r--src/libs/zbxcacheconfig/dbsync.h166
1 files changed, 166 insertions, 0 deletions
diff --git a/src/libs/zbxcacheconfig/dbsync.h b/src/libs/zbxcacheconfig/dbsync.h
new file mode 100644
index 00000000000..8e992511f1b
--- /dev/null
+++ b/src/libs/zbxcacheconfig/dbsync.h
@@ -0,0 +1,166 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 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_DBSYNC_H
+#define ZABBIX_DBSYNC_H
+
+#include "dbconfig.h"
+
+/* no changes */
+#define ZBX_DBSYNC_ROW_NONE 0
+/* a new object must be added to configuration cache */
+#define ZBX_DBSYNC_ROW_ADD 1
+/* a cached object must be updated in configuration cache */
+#define ZBX_DBSYNC_ROW_UPDATE 2
+/* a cached object must be removed from configuration cache */
+#define ZBX_DBSYNC_ROW_REMOVE 3
+
+#define ZBX_DBSYNC_UPDATE_HOSTS __UINT64_C(0x0001)
+#define ZBX_DBSYNC_UPDATE_ITEMS __UINT64_C(0x0002)
+#define ZBX_DBSYNC_UPDATE_FUNCTIONS __UINT64_C(0x0004)
+#define ZBX_DBSYNC_UPDATE_TRIGGERS __UINT64_C(0x0008)
+#define ZBX_DBSYNC_UPDATE_TRIGGER_DEPENDENCY __UINT64_C(0x0010)
+#define ZBX_DBSYNC_UPDATE_HOST_GROUPS __UINT64_C(0x0020)
+#define ZBX_DBSYNC_UPDATE_MAINTENANCE_GROUPS __UINT64_C(0x0040)
+#define ZBX_DBSYNC_UPDATE_MACROS __UINT64_C(0x0080)
+
+#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
+# define ZBX_HOST_TLS_OFFSET 4
+#else
+# define ZBX_HOST_TLS_OFFSET 0
+#endif
+
+#define ZBX_DBSYNC_TRIGGER_ERROR 0x80
+
+/******************************************************************************
+ * *
+ * Purpose: applies necessary preprocessing before row is compared/used *
+ * *
+ * Parameter: row - [IN] the row to preprocess *
+ * *
+ * Return value: the preprocessed row *
+ * *
+ * Comments: The row preprocessing can be used to expand user macros in *
+ * some columns. *
+ * *
+ ******************************************************************************/
+typedef char **(*zbx_dbsync_preproc_row_func_t)(char **row);
+
+typedef struct
+{
+ /* a row tag, describing the changes (see ZBX_DBSYNC_ROW_* defines) */
+ unsigned char tag;
+
+ /* the identifier of the object represented by the row */
+ zbx_uint64_t rowid;
+
+ /* the column values, NULL if the tag is ZBX_DBSYNC_ROW_REMOVE */
+ char **row;
+}
+zbx_dbsync_row_t;
+
+struct zbx_dbsync
+{
+ /* the synchronization mode (see ZBX_DBSYNC_* defines) */
+ unsigned char mode;
+
+ /* the number of columns in diff */
+ int columns_num;
+
+ /* the current row */
+ int row_index;
+
+ /* the changed rows */
+ zbx_vector_ptr_t rows;
+
+ /* the database result set for ZBX_DBSYNC_ALL mode */
+ DB_RESULT dbresult;
+
+ /* the row preprocessing function */
+ zbx_dbsync_preproc_row_func_t preproc_row_func;
+
+ /* the pre-processed row */
+ char **row;
+
+ /* the preprocessed columns */
+ zbx_vector_ptr_t columns;
+
+ /* statistics */
+ zbx_uint64_t add_num;
+ zbx_uint64_t update_num;
+ zbx_uint64_t remove_num;
+};
+
+void zbx_dbsync_env_init(ZBX_DC_CONFIG *cache);
+int zbx_dbsync_env_prepare(unsigned char mode);
+void zbx_dbsync_env_flush_changelog(void);
+void zbx_dbsync_env_clear(void);
+int zbx_dbsync_env_changelog_num(void);
+
+void zbx_dbsync_init(zbx_dbsync_t *sync, unsigned char mode);
+void zbx_dbsync_clear(zbx_dbsync_t *sync);
+int zbx_dbsync_next(zbx_dbsync_t *sync, zbx_uint64_t *rowid, char ***row, unsigned char *tag);
+
+int zbx_dbsync_compare_config(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_autoreg_psk(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_autoreg_host(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_hosts(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_host_inventory(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_host_templates(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_global_macros(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_host_macros(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_interfaces(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_item_discovery(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_items(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_template_items(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_prototype_items(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_triggers(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_trigger_dependency(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_functions(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_expressions(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_actions(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_action_ops(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_action_conditions(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_trigger_tags(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_item_tags(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_host_tags(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_correlations(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_corr_conditions(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_corr_operations(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_host_groups(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_item_preprocs(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_item_script_param(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_maintenances(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_maintenance_tags(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_maintenance_periods(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_maintenance_groups(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_maintenance_hosts(zbx_dbsync_t *sync);
+int zbx_dbsync_compare_host_group_hosts(zbx_dbsync_t *sync);
+
+int zbx_dbsync_prepare_drules(zbx_dbsync_t *sync);
+int zbx_dbsync_prepare_dchecks(zbx_dbsync_t *sync);
+
+int zbx_dbsync_prepare_httptests(zbx_dbsync_t *sync);
+int zbx_dbsync_prepare_httptest_fields(zbx_dbsync_t *sync);
+int zbx_dbsync_prepare_httpsteps(zbx_dbsync_t *sync);
+int zbx_dbsync_prepare_httpstep_fields(zbx_dbsync_t *sync);
+void zbx_dbsync_clear_user_macros(void);
+
+
+#endif /* BUILD_SRC_LIBS_ZBXDBCACHE_DBSYNC_H_ */