/* SPDX-License-Identifier: LGPL-2.1-or-later */ #ifndef _OTEL_PARSER_H_ #define _OTEL_PARSER_H_ #define FLT_OTEL_SCOPE "OTEL" /* * filter FLT_OTEL_OPT_NAME FLT_OTEL_OPT_FILTER_ID FLT_OTEL_OPT_CONFIG */ #define FLT_OTEL_OPT_NAME "opentelemetry" #define FLT_OTEL_OPT_FILTER_ID "id" #define FLT_OTEL_OPT_FILTER_ID_DEFAULT "otel-filter" #define FLT_OTEL_OPT_CONFIG "config" #define FLT_OTEL_PARSE_SECTION_INSTR_ID "otel-instrumentation" #define FLT_OTEL_PARSE_SECTION_GROUP_ID "otel-group" #define FLT_OTEL_PARSE_SECTION_SCOPE_ID "otel-scope" #define FLT_OTEL_PARSE_SPAN_ROOT "root" #define FLT_OTEL_PARSE_SPAN_PARENT "parent" #define FLT_OTEL_PARSE_CTX_AUTONAME "-" #define FLT_OTEL_PARSE_CTX_IGNORE_NAME '-' #define FLT_OTEL_PARSE_CTX_USE_HEADERS "use-headers" #define FLT_OTEL_PARSE_OPTION_HARDERR "hard-errors" #define FLT_OTEL_PARSE_OPTION_DISABLED "disabled" #define FLT_OTEL_PARSE_OPTION_NOLOGNORM "dontlog-normal" /* * A description of the macro arguments can be found in the structure * flt_otel_parse_data definition */ #define FLT_OTEL_PARSE_INSTR_DEFINES \ FLT_OTEL_PARSE_INSTR_DEF( ID, 0, CHAR, 2, 2, "otel-instrumentation", " ") \ FLT_OTEL_PARSE_INSTR_DEF( ACL, 0, CHAR, 3, 0, "acl", " [flags] [operator] ...") \ FLT_OTEL_PARSE_INSTR_DEF( LOG, 0, CHAR, 2, 0, "log", " { global | [len ] [format ] [ []] }") \ FLT_OTEL_PARSE_INSTR_DEF( CONFIG, 0, NONE, 2, 2, "config", " ") \ FLT_OTEL_PARSE_INSTR_DEF( GROUPS, 0, NONE, 2, 0, "groups", " ...") \ FLT_OTEL_PARSE_INSTR_DEF( SCOPES, 0, NONE, 2, 0, "scopes", " ...") \ FLT_OTEL_PARSE_INSTR_DEF( RATE_LIMIT, 0, NONE, 2, 2, "rate-limit", " ") \ FLT_OTEL_PARSE_INSTR_DEF( OPTION, 0, NONE, 2, 2, "option", " { disabled | dontlog-normal | hard-errors }") \ FLT_OTEL_PARSE_INSTR_DEF(DEBUG_LEVEL, 0, NONE, 2, 2, "debug-level", " ") #define FLT_OTEL_PARSE_GROUP_DEFINES \ FLT_OTEL_PARSE_GROUP_DEF( ID, 0, CHAR, 2, 2, "otel-group", " ") \ FLT_OTEL_PARSE_GROUP_DEF(SCOPES, 0, NONE, 2, 0, "scopes", " ...") #define FLT_OTEL_PARSE_SCOPE_INJECT_HELP " [use-headers]" #define FLT_OTEL_PARSE_SCOPE_EXTRACT_HELP " [use-headers]" /* * The first argument of the FLT_OTEL_PARSE_SCOPE_STATUS_DEF() macro is defined * as otelc_span_status_t in . */ #define FLT_OTEL_PARSE_SCOPE_STATUS_DEFINES \ FLT_OTEL_PARSE_SCOPE_STATUS_DEF(IGNORE, "ignore") \ FLT_OTEL_PARSE_SCOPE_STATUS_DEF( UNSET, "unset" ) \ FLT_OTEL_PARSE_SCOPE_STATUS_DEF( OK, "ok" ) \ FLT_OTEL_PARSE_SCOPE_STATUS_DEF( ERROR, "error" ) /* * In case the possibility of working with OpenTelemetry context via HAProxy * variables is not used, args_max member of the structure flt_otel_parse_data * should be reduced for 'inject' keyword. However, this is not critical * because in this case the 'use-vars' argument cannot be entered anyway, * so I will not complicate it here with additional definitions. */ #define FLT_OTEL_PARSE_SCOPE_DEFINES \ FLT_OTEL_PARSE_SCOPE_DEF( ID, 0, CHAR, 2, 2, "otel-scope", " ") \ FLT_OTEL_PARSE_SCOPE_DEF( SPAN, 0, NONE, 2, 7, "span", " [] [root]") \ FLT_OTEL_PARSE_SCOPE_DEF( ATTRIBUTE, 1, NONE, 3, 0, "attribute", " ...") \ FLT_OTEL_PARSE_SCOPE_DEF( EVENT, 1, NONE, 4, 0, "event", " ...") \ FLT_OTEL_PARSE_SCOPE_DEF( BAGGAGE, 1, VAR, 3, 0, "baggage", " ...") \ FLT_OTEL_PARSE_SCOPE_DEF( INJECT, 1, CTX, 2, 4, "inject", FLT_OTEL_PARSE_SCOPE_INJECT_HELP) \ FLT_OTEL_PARSE_SCOPE_DEF( EXTRACT, 0, CTX, 2, 3, "extract", FLT_OTEL_PARSE_SCOPE_EXTRACT_HELP) \ FLT_OTEL_PARSE_SCOPE_DEF( STATUS, 1, NONE, 2, 0, "status", " [ ...]") \ FLT_OTEL_PARSE_SCOPE_DEF( FINISH, 0, NONE, 2, 0, "finish", " ...") \ FLT_OTEL_PARSE_SCOPE_DEF(IDLE_TIMEOUT, 0, NONE, 2, 2, "idle-timeout", "