X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Fcore%2Fstore_expr.c;h=6405002cfda3187177dc9b49dae9ce2bc8e82322;hp=642255e4ab94c77028e1f1779d77fd56bfe3584a;hb=060c0cebbae60bd3d90691858465d462fba0d952;hpb=c1907b60719f4e9a8e5b29aef5c8e25d62f4cde2 diff --git a/src/core/store_expr.c b/src/core/store_expr.c index 642255e..6405002 100644 --- a/src/core/store_expr.c +++ b/src/core/store_expr.c @@ -275,6 +275,23 @@ sdb_store_expr_iter(sdb_store_expr_t *expr, sdb_store_obj_t *obj, if (! expr) return NULL; + while (expr->type == TYPED_EXPR) { + int type = (int)expr->data.data.integer; + + if (obj->type == type) { + /* self reference */ + } + else if ((type == SDB_HOST) + && ((obj->type == SDB_SERVICE) + || (obj->type == SDB_METRIC))) { + /* reference to parent host */ + obj = obj->parent; + } + else + break; + expr = expr->left; + } + if (expr->type == TYPED_EXPR) { if (! obj) return NULL;