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