** Copyright (C) 2001-2025 Zabbix SIA
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
** 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 Affero General Public License for more details.
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
"golang.zabbix.com/agent2/pkg/zbxlib"
Name string `json:"name"`
Body string `json:"expression"`
Type *int `json:"expression_type"`
Delimiter *string `json:"exp_delimiter"`
Mode *int `json:"case_sensitive"`
expressions []*Expression
func SortExpressions(expressions []*Expression) {
sort.Slice(expressions, func(i, j int) bool {
if expressions[i].Name != expressions[j].Name {
return expressions[i].Name < expressions[j].Name
if expressions[i].Body != expressions[j].Body {
return expressions[i].Body < expressions[j].Body
if *expressions[i].Type != *expressions[j].Type {
return *expressions[i].Type < *expressions[j].Type
if *expressions[i].Mode != *expressions[j].Mode {
return *expressions[i].Mode < *expressions[j].Mode
return *expressions[i].Delimiter < *expressions[j].Delimiter
func (b *Bundle) CompareExpressions(expressions []*Expression) bool {
if len(expressions) != len(b.expressions) {