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:
authorAndris Zeila <andris.zeila@zabbix.com>2021-01-23 19:08:46 +0300
committerAndris Zeila <andris.zeila@zabbix.com>2021-01-23 19:08:46 +0300
commit477f6cf0ec943b422d571b256d4fb45160bb7744 (patch)
tree6999e9dddc33485efd73ecda7a09f9465e7577f1 /include/zbxserver.h
parent5afa58b768619e2a636aa3b5ca6473a1621aeb2f (diff)
.......PS. [ZBXNEXT-6451] moved expression parsing code to separate library to avoid cyclic dependencies
Diffstat (limited to 'include/zbxserver.h')
-rw-r--r--include/zbxserver.h148
1 files changed, 0 insertions, 148 deletions
diff --git a/include/zbxserver.h b/include/zbxserver.h
index 7864987b092..29999ee4490 100644
--- a/include/zbxserver.h
+++ b/include/zbxserver.h
@@ -110,152 +110,4 @@ int substitute_macros_in_json_pairs(char **data, const struct zbx_json_parse *jp
const zbx_vector_ptr_t *lld_macro_paths, char *error, int maxerrlen);
int xml_xpath_check(const char *xpath, char *error, size_t errlen);
-/*
- * Token type flags (32 bits):
- * | 6 bits | 4 bits | 22 bits |
- * | token class | operator precedence | token type |
- */
-#define ZBX_EVAL_CLASS_OPERAND (__UINT64_C(0x01) << 26)
-#define ZBX_EVAL_CLASS_OPERATOR1 (__UINT64_C(0x02) << 26)
-#define ZBX_EVAL_CLASS_OPERATOR2 (__UINT64_C(0x04) << 26)
-#define ZBX_EVAL_CLASS_FUNCTION (__UINT64_C(0x08) << 26)
-#define ZBX_EVAL_CLASS_SEPARATOR (__UINT64_C(0x10) << 26)
-#define ZBX_EVAL_CLASS_OPERATOR (ZBX_EVAL_CLASS_OPERATOR1 | ZBX_EVAL_CLASS_OPERATOR2)
-
-#define ZBX_EVAL_BEFORE_OPERAND (ZBX_EVAL_CLASS_OPERATOR | ZBX_EVAL_CLASS_SEPARATOR)
-#define ZBX_EVAL_BEFORE_OPERATOR (ZBX_EVAL_CLASS_OPERAND)
-
-#define ZBX_EVAL_OP_SET_PRECEDENCE(x) ((x) << 22)
-#define ZBX_EVAL_OP_PRIORITY ZBX_EVAL_OP_SET_PRECEDENCE(0xf)
-
-#define ZBX_EVAL_TOKEN_OP_ADD (1 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(4))
-#define ZBX_EVAL_TOKEN_OP_SUB (2 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(4))
-#define ZBX_EVAL_TOKEN_OP_MUL (3 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(3))
-#define ZBX_EVAL_TOKEN_OP_DIV (4 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(3))
-#define ZBX_EVAL_TOKEN_OP_MINUS (5 | ZBX_EVAL_CLASS_OPERATOR1 | ZBX_EVAL_OP_SET_PRECEDENCE(2))
-#define ZBX_EVAL_TOKEN_OP_EQ (6 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(7))
-#define ZBX_EVAL_TOKEN_OP_LT (7 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(6))
-#define ZBX_EVAL_TOKEN_OP_GT (8 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(6))
-#define ZBX_EVAL_TOKEN_OP_LE (9 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(6))
-#define ZBX_EVAL_TOKEN_OP_GE (10 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(6))
-#define ZBX_EVAL_TOKEN_OP_NE (11 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(7))
-#define ZBX_EVAL_TOKEN_OP_AND (12 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(11))
-#define ZBX_EVAL_TOKEN_OP_OR (13 | ZBX_EVAL_CLASS_OPERATOR2 | ZBX_EVAL_OP_SET_PRECEDENCE(12))
-#define ZBX_EVAL_TOKEN_OP_NOT (14 | ZBX_EVAL_CLASS_OPERATOR1 | ZBX_EVAL_OP_SET_PRECEDENCE(2))
-#define ZBX_EVAL_TOKEN_VAR_NUM (15 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_VAR_STR (16 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_VAR_TIME (17 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_VAR_MACRO (18 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_VAR_USERMACRO (19 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_VAR_LLDMACRO (20 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_FUNCTIONID (21 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_FUNCTION (22 | ZBX_EVAL_CLASS_FUNCTION)
-#define ZBX_EVAL_TOKEN_HIST_FUNCTION (23 | ZBX_EVAL_CLASS_FUNCTION)
-#define ZBX_EVAL_TOKEN_GROUP_OPEN (24 | ZBX_EVAL_CLASS_SEPARATOR)
-#define ZBX_EVAL_TOKEN_GROUP_CLOSE (25 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_COMMA (26 | ZBX_EVAL_CLASS_SEPARATOR)
-#define ZBX_EVAL_TOKEN_ARG_QUERY (27 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_ARG_TIME (28 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_ARG_NULL (29 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_ARG_RAW (30 | ZBX_EVAL_CLASS_OPERAND)
-#define ZBX_EVAL_TOKEN_EXCEPTION (31 | ZBX_EVAL_CLASS_FUNCTION)
-
-/* expression parsing rules */
-
-#define ZBX_EVAL_PARSE_MACRO __UINT64_C(0x0001)
-#define ZBX_EVAL_PARSE_USERMACRO __UINT64_C(0x0002)
-#define ZBX_EVAL_PARSE_LLDMACRO __UINT64_C(0x0004)
-#define ZBX_EVAL_PARSE_FUNCTIONID __UINT64_C(0x0008)
-#define ZBX_EVAL_PARSE_ITEM_QUERY __UINT64_C(0x0010)
-#define ZBX_EVAL_PARSE_FUNCTION __UINT64_C(0x0020)
-#define ZBX_EVAL_PARSE_CONST_INDEX __UINT64_C(0x0040)
-
-#define ZBX_EVAL_PARSE_TRIGGER_EXPRESSSION (ZBX_EVAL_PARSE_MACRO | ZBX_EVAL_PARSE_USERMACRO | \
- ZBX_EVAL_PARSE_FUNCTIONID | ZBX_EVAL_PARSE_FUNCTION)
-
-#define ZBX_EVAL_PARSE_CALC_EXPRESSSION (ZBX_EVAL_PARSE_MACRO | ZBX_EVAL_PARSE_USERMACRO | \
- ZBX_EVAL_PARSE_ITEM_QUERY | ZBX_EVAL_PARSE_FUNCTION)
-
-/* expression composition rules */
-
-#define ZBX_EVAL_QUOTE_MACRO __UINT64_C(0x00010000)
-#define ZBX_EVAL_QUOTE_USERMACRO __UINT64_C(0x00020000)
-#define ZBX_EVAL_QUOTE_LLDMACRO __UINT64_C(0x00040000)
-
-#define ZBX_EVAL_COMPOSE_TRIGGER_EXPRESSION (ZBX_EVAL_QUOTE_MACRO | ZBX_EVAL_QUOTE_USERMACRO)
-#define ZBX_EVAL_COMPOSE_LLD_EXPRESSION ZBX_EVAL_QUOTE_LLDMACRO
-
-/* expression evaluation rules */
-
-#define ZBX_EVAL_PROCESS_ERROR __UINT64_C(0x000100000000)
-
-/* composite rules */
-
-#define ZBX_EVAL_TRIGGER_EXPRESSION (ZBX_EVAL_PARSE_TRIGGER_EXPRESSSION | \
- ZBX_EVAL_COMPOSE_TRIGGER_EXPRESSION | \
- ZBX_EVAL_PROCESS_ERROR)
-
-typedef zbx_uint32_t zbx_token_type_t;
-
-/******************************************************************************
- * *
- * Typedef: zbx_eval_function_cb_t *
- * *
- * Purpose: define callback function to calculate custom functions *
- * *
- * Parameters: name - [IN] the function name (not zero terminated) *
- * len - [IN] the function name length *
- * args_num - [IN] the number of function arguments *
- * args - [IN] an array of the function arguments. *
- * value - [OUT] the function return value *
- * error - [OUT] the error message if function failed *
- * *
- * Return value: SUCCEED - the function was executed successfully *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-typedef int (*zbx_eval_function_cb_t)(const char *name, size_t len, int args_num, const zbx_variant_t *args,
- zbx_variant_t *value, char **error);
-
-typedef struct
-{
- zbx_token_type_t type;
- zbx_uint32_t opt;
- zbx_strloc_t loc;
- zbx_variant_t value;
-}
-zbx_eval_token_t;
-
-ZBX_VECTOR_DECL(eval_token, zbx_eval_token_t)
-
-typedef struct
-{
- const char *expression;
- zbx_token_type_t last_token_type;
- int const_index;
- int functionid_index;
- zbx_uint64_t rules;
- zbx_timespec_t ts;
- zbx_vector_eval_token_t stack;
- zbx_vector_eval_token_t ops;
- zbx_eval_function_cb_t function_cb;
-}
-zbx_eval_context_t;
-
-typedef char *(*zbx_macro_resolve_func_t)(const char *str, size_t length, zbx_uint64_t *hostids,
- int hostids_num);
-
-int zbx_eval_parse_expression(zbx_eval_context_t *ctx, const char *expression, zbx_uint64_t rules, char **error);
-void zbx_eval_clear(zbx_eval_context_t *ctx);
-size_t zbx_eval_serialize(const zbx_eval_context_t *ctx, zbx_mem_malloc_func_t malloc_func, unsigned char **data);
-void zbx_eval_deserialize(zbx_eval_context_t *ctx, const char *expression, zbx_uint64_t rules,
- const unsigned char *data);
-void zbx_eval_compose_expression(const zbx_eval_context_t *ctx, char **expression);
-int zbx_eval_execute(zbx_eval_context_t *ctx, const zbx_timespec_t *ts, zbx_variant_t *value, char **error);
-int zbx_eval_execute_ext(zbx_eval_context_t *ctx, const zbx_timespec_t *ts, zbx_eval_function_cb_t function_cb,
- zbx_variant_t *value, char **error);
-void zbx_eval_get_functionids(const zbx_eval_context_t *ctx, zbx_vector_uint64_t *functionids);
-void zbx_eval_expand_user_macros(const zbx_eval_context_t *ctx, zbx_uint64_t *hostids, int hostids_num,
- zbx_macro_resolve_func_t resolver_cb);
-void zbx_eval_set_exception(zbx_eval_context_t *ctx, char *message);
#endif