summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2002-01-09 07:16:10 +0000
committerhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2002-01-09 07:16:10 +0000
commitbaf02ab977d8bb5a7cc9a16d4d440c359de4b73f (patch)
tree3567eafe63e43163cbd5f0190c56ee486a8e1649 /include
parent38d78876d1e4914a21682ae7a319fc1f98a6c4db (diff)
downloadzabbix-baf02ab977d8bb5a7cc9a16d4d440c359de4b73f.tar.gz
zabbix-baf02ab977d8bb5a7cc9a16d4d440c359de4b73f.tar.xz
zabbix-baf02ab977d8bb5a7cc9a16d4d440c359de4b73f.zip
- even more support for IT Services (Alexei)
- added column status to table services (Alexei) git-svn-id: svn://svn.zabbix.com/trunk@276 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'include')
-rw-r--r--include/functions.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/functions.c b/include/functions.c
index 225c1a01..104b1961 100644
--- a/include/functions.c
+++ b/include/functions.c
@@ -523,6 +523,38 @@ void apply_actions(int triggerid,int good)
}
/*
+ * Recursive function!
+ */
+void update_services(int triggerid)
+{
+ char sql[1024];
+ int i,rows;
+
+ DB_RESULT *result;
+
+
+ sprintf(sql,"select serviceupid from services_links where servicedownid=%d", triggerid);
+
+ result = DBselect(sql);
+
+ rows = DBnum_rows(result);
+
+ if(rows == 0)
+ {
+ DBfree_result(result);
+ return;
+ }
+
+ for(i=0;i<rows;i++)
+ {
+ update_services(atoi(DBget_field(result,i,0)));
+ }
+
+ DBfree_result(result);
+ return;
+}
+
+/*
* Re-calculate values of triggers
*/
void update_triggers( int flag, int sucker_num, int lastclock )
@@ -582,6 +614,8 @@ void update_triggers( int flag, int sucker_num, int lastclock )
sprintf(c,"update actions set nextcheck=0 where triggerid=%d and good=0",trigger.triggerid);
DBexecute(c);
+
+ update_services(trigger.triggerid);
}
if((b==0)&&(trigger.istrue!=0))
@@ -598,6 +632,8 @@ void update_triggers( int flag, int sucker_num, int lastclock )
sprintf(c,"update actions set nextcheck=0 where triggerid=%d and good=1",trigger.triggerid);
DBexecute(c);
+
+ update_services(trigger.triggerid);
}
}
DBfree_result(result);