Hello, in our installation of xymon we have found that there are certain test that we do not want to apply flapping functionality so I've extended xymond code a bit to allow use of noflap option in hosts.cfg. JC, would it be possible to add this to xymon's code? Here are the changes that add the noflap option: Index: lib/loadhosts.h =================================================================== --- lib/loadhosts.h (revision 1) +++ lib/loadhosts.h (working copy) @@ -36,6 +36,7 @@ XMH_HOLIDAYS, XMH_DELAYRED, XMH_DELAYYELLOW, + XMH_NOFLAP, XMH_FLAG_NOINFO, XMH_FLAG_NOTRENDS, XMH_FLAG_NOCLIENT, Index: lib/loadhosts.c =================================================================== --- lib/loadhosts.c (revision 1) +++ lib/loadhosts.c (working copy) @@ -132,6 +132,8 @@ xmh_item_name[XMH_DELAYRED] = "XMH_DELAYRED"; xmh_item_key[XMH_DELAYYELLOW] = "delayyellow="; xmh_item_name[XMH_DELAYYELLOW] = "XMH_DELAYYELLOW"; + xmh_item_key[XMH_NOFLAP] = "noflap="; + xmh_item_name[XMH_NOFLAP] = "XMH_NOFLAP"; xmh_item_key[XMH_FLAG_NOINFO] = "noinfo"; xmh_item_name[XMH_FLAG_NOINFO] = "XMH_FLAG_NOINFO"; xmh_item_key[XMH_FLAG_NOTRENDS] = "notrends"; Index: xymond/xymond.c =================================================================== --- xymond/xymond.c (revision 1) +++ xymond/xymond.c (working copy) @@ -1338,6 +1338,26 @@ return result; } +static int isset_noflap(void *hinfo, char *testname, char *hostname) +{ + char *tok, *dstr = NULL; + int keylen; + int result = 1; /* default is 1 - > use flapping */ + + dstr = xmh_item(hinfo, XMH_NOFLAP); + if (!dstr) return result; + + /* Check "noflap=test1,test2" */ + keylen = strlen(testname); + tok = strtok(dstr, ","); + while (tok && (strncmp(testname, tok, keylen) != 0)) tok = strtok(NULL, ","); + if (tok) { + result = 0; /* do not use flapping for the test */ + dbgprintf("Ignoring flapping for %s:%s due to noflap set.\n", hostname, testname); + } + return result; +} + void handle_status(unsigned char *msg, char *sender, char *hostname, char *testname, char *grouplist, xymond_log_t *log, int newcolor, char *downcause, int modifyonly) { @@ -1421,7 +1441,10 @@ * is less serious than the old color, then we ignore the * color change and keep the status at the more serious level. */ - if (modifyonly || issummary) { + if (modifyonly || issummary || isset_noflap(hinfo, testname, hostname)) { /* Nothing */ } else if ((flapcount > 0) && ((now - log->lastchange[flapcount-1]) < flapthreshold)) { Kind regards, Martin