diff options
| author | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2024-02-04 10:28:17 -0300 |
|---|---|---|
| committer | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2024-02-04 10:28:17 -0300 |
| commit | af3c2d23b401eb9aab09a8278f54520f63062905 (patch) | |
| tree | 0cf4e448dfeb12f36db2951babba4ba844a9258c | |
| parent | 4cd6f1fb381f65e878bf10c444c5c713d338c48f (diff) | |
New upstream version 1.0.21upstream/1.0.21
| -rw-r--r-- | default_script | 4 | ||||
| -rw-r--r-- | foolsm.c | 85 | ||||
| -rw-r--r-- | foolsm.h | 2 | ||||
| -rw-r--r-- | foolsm.spec | 12 | ||||
| -rw-r--r-- | group_script | 2 |
5 files changed, 76 insertions, 29 deletions
diff --git a/default_script b/default_script index 37daffe..e5e8bf3 100644 --- a/default_script +++ b/default_script @@ -26,6 +26,8 @@ AVG_RTT=${13} SRCIP=${14} PREVSTATE=${15} TIMESTAMP=${16} +MIN_RTT=${17} +MAX_RTT=${18} if [ -z "${WARN_EMAIL}" ] ; then exit 0 @@ -59,7 +61,9 @@ reply_late = ${REPLY_LATE} packets that received a reply after timeout cons_rcvd = ${CONS_RCVD} consecutively received replies in sequence cons_wait = ${CONS_WAIT} consecutive packets waiting for reply cons_miss = ${CONS_MISS} consecutive packets that have timed out +min_rtt = ${MIN_RTT} [usec], from received packets avg_rtt = ${AVG_RTT} average rtt [usec], calculated from received packets +max_rtt = ${MAX_RTT} [usec], from received packets BR, Your Foolsm installation @@ -262,6 +262,8 @@ static void update_stats(CONFIG *first) { t->consecutive_waiting = 0; t->consecutive_missing = 0; t->consecutive_rcvd = 0; + t->min_rtt = 0; + t->max_rtt = 0; /* check consecutive pkts */ seq = t->seq % FOLLOWED_PKTS; @@ -303,6 +305,9 @@ static void update_stats(CONFIG *first) { if(t->sentpkts[i].flags.replied) { t->replied++; rtt += t->sentpkts[i].rtt; /* count rtt sum in usec from replied pkts rtt which is in usec */ + + if(t->min_rtt == 0 || t->min_rtt > t->sentpkts[i].rtt) t->min_rtt = t->sentpkts[i].rtt; + if(t->max_rtt < t->sentpkts[i].rtt) t->max_rtt = t->sentpkts[i].rtt; } if(t->sentpkts[i].flags.timeout) t->timeout++; if(t->sentpkts[i].flags.waiting) t->waiting++; @@ -314,8 +319,8 @@ static void update_stats(CONFIG *first) { if(t->timeout > t->timeout_max) t->timeout_max = t->timeout; if(t->consecutive_missing > t->consecutive_missing_max) t->consecutive_missing_max = t->consecutive_missing; - if(cfg.debug >= 9) syslog(LOG_INFO, "name = %s, replied = %d, waiting = %d, timeout = %d, late reply = %d, cons rcvd = %d, cons wait = %d, cons miss = %d, avg_rtt = %.3f, seq = %d, status = %s", - cur->name, t->replied, t->waiting, t->timeout, t->reply_late, t->consecutive_rcvd, t->consecutive_waiting, t->consecutive_missing, t->avg_rtt / 1000.0, t->seq, get_status_str(t->status)); + if(cfg.debug >= 9) syslog(LOG_INFO, "name = %s, replied = %d, waiting = %d, timeout = %d, late reply = %d, cons rcvd = %d, cons wait = %d, cons miss = %d, min_rtt = %.3f, avg_rtt = %.3f, max_rtt = %.03f, seq = %d, status = %s", + cur->name, t->replied, t->waiting, t->timeout, t->reply_late, t->consecutive_rcvd, t->consecutive_waiting, t->consecutive_missing, t->min_rtt / 1000.0, t->avg_rtt / 1000.0, t->max_rtt / 1000.0, t->seq, get_status_str(t->status)); } } @@ -332,8 +337,8 @@ static void dump_statuses(CONFIG *first) { /* dump is controlled by SIGUSR1 and then we should show all statuses anyway */ if(get_dump() || t->status_change || ((t->status == DOWN || t->status == LONG_DOWN) && t->downseq == (t->seq % FOLLOWED_PKTS) && t->seq != t->downseqreported && !t->status_change)) { - if(cfg.debug >= 6) syslog(LOG_INFO, "name = %s, replied = %d, waiting = %d, timeout = %d, timeout max = %d, late reply = %d, cons rcvd = %d, cons wait = %d, cons miss = %d, cons miss max = %d, avg_rtt = %.3f, seq = %d, status = %s", - cur->name, t->replied, t->waiting, t->timeout, t->timeout_max, t->reply_late, t->consecutive_rcvd, t->consecutive_waiting, t->consecutive_missing, t->consecutive_missing_max, t->avg_rtt / 1000.0, t->seq, get_status_str(t->status)); + if(cfg.debug >= 6) syslog(LOG_INFO, "name = %s, replied = %d, waiting = %d, timeout = %d, timeout max = %d, late reply = %d, cons rcvd = %d, cons wait = %d, cons miss = %d, cons miss max = %d, min_rtt = %.3f, avg_rtt = %.3f, max_rtt = %.03f, seq = %d, status = %s", + cur->name, t->replied, t->waiting, t->timeout, t->timeout_max, t->reply_late, t->consecutive_rcvd, t->consecutive_waiting, t->consecutive_missing, t->consecutive_missing_max, t->min_rtt / 1000.0, t->avg_rtt / 1000.0, t->max_rtt / 1000.0, t->seq, get_status_str(t->status)); if(cfg.debug >= 7) { /* 100 should be enough for the comments and such, but I don't care to count */ @@ -425,7 +430,7 @@ static void decide(CONFIG *first) { char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", cur->eventscript, get_status_str(t->status), cur->name, @@ -442,7 +447,9 @@ static void decide(CONFIG *first) { t->avg_rtt, cur->dstinfo->ai_family == AF_INET ? inet_ntoa(t->src) : inet_ntop(AF_INET6, &t->src6, sbuf, INET6_ADDRSTRLEN), get_status_str(prevstatus), - current_time.tv_sec); + current_time.tv_sec, + t->min_rtt, + t->max_rtt); envp = exec_queue_envp(); if(cur->queue && *cur->queue) { @@ -460,7 +467,7 @@ static void decide(CONFIG *first) { char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", cur->notifyscript, get_status_str(t->status), cur->name, @@ -477,7 +484,9 @@ static void decide(CONFIG *first) { t->avg_rtt, cur->dstinfo->ai_family == AF_INET ? inet_ntoa(t->src) : inet_ntop(AF_INET6, &t->src6, sbuf, INET6_ADDRSTRLEN), get_status_str(prevstatus), - current_time.tv_sec); + current_time.tv_sec, + t->min_rtt, + t->max_rtt); envp = exec_queue_envp(); @@ -507,7 +516,7 @@ static void decide(CONFIG *first) { char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", cur->long_down_eventscript, get_status_str(t->status), cur->name, @@ -524,7 +533,9 @@ static void decide(CONFIG *first) { t->avg_rtt, cur->dstinfo->ai_family == AF_INET ? inet_ntoa(t->src) : inet_ntop(AF_INET6, &t->src6, sbuf, INET6_ADDRSTRLEN), get_status_str(prevstatus), - t->down_timestamp.tv_sec); + t->down_timestamp.tv_sec, + t->min_rtt, + t->max_rtt); envp = exec_queue_envp(); @@ -543,7 +554,7 @@ static void decide(CONFIG *first) { char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", cur->long_down_notifyscript, get_status_str(t->status), cur->name, @@ -560,7 +571,9 @@ static void decide(CONFIG *first) { t->avg_rtt, cur->dstinfo->ai_family == AF_INET ? inet_ntoa(t->src) : inet_ntop(AF_INET6, &t->src6, sbuf, INET6_ADDRSTRLEN), get_status_str(prevstatus), - t->down_timestamp.tv_sec); + t->down_timestamp.tv_sec, + t->min_rtt, + t->max_rtt); envp = exec_queue_envp(); @@ -590,7 +603,7 @@ static void decide(CONFIG *first) { char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", cur->long_down_eventscript, get_status_str(t->status), cur->name, @@ -607,7 +620,9 @@ static void decide(CONFIG *first) { t->avg_rtt, cur->dstinfo->ai_family == AF_INET ? inet_ntoa(t->src) : inet_ntop(AF_INET6, &t->src6, sbuf, INET6_ADDRSTRLEN), get_status_str(prevstatus), - current_time.tv_sec); + current_time.tv_sec, + t->min_rtt, + t->max_rtt); envp = exec_queue_envp(); @@ -626,7 +641,7 @@ static void decide(CONFIG *first) { char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", cur->long_down_notifyscript, get_status_str(t->status), cur->name, @@ -643,7 +658,9 @@ static void decide(CONFIG *first) { t->avg_rtt, cur->dstinfo->ai_family == AF_INET ? inet_ntoa(t->src) : inet_ntop(AF_INET6, &t->src6, sbuf, INET6_ADDRSTRLEN), get_status_str(prevstatus), - current_time.tv_sec); + current_time.tv_sec, + t->min_rtt, + t->max_rtt); envp = exec_queue_envp(); @@ -661,7 +678,7 @@ static void decide(CONFIG *first) { char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", cur->eventscript, get_status_str(t->status), cur->name, @@ -678,7 +695,9 @@ static void decide(CONFIG *first) { t->avg_rtt, cur->dstinfo->ai_family == AF_INET ? inet_ntoa(t->src) : inet_ntop(AF_INET6, &t->src6, sbuf, INET6_ADDRSTRLEN), get_status_str(prevstatus), - current_time.tv_sec); + current_time.tv_sec, + t->min_rtt, + t->max_rtt); envp = exec_queue_envp(); @@ -697,7 +716,7 @@ static void decide(CONFIG *first) { char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", cur->notifyscript, get_status_str(t->status), cur->name, @@ -714,7 +733,9 @@ static void decide(CONFIG *first) { t->avg_rtt, cur->dstinfo->ai_family == AF_INET ? inet_ntoa(t->src) : inet_ntop(AF_INET6, &t->src6, sbuf, INET6_ADDRSTRLEN), get_status_str(prevstatus), - current_time.tv_sec); + current_time.tv_sec, + t->min_rtt, + t->max_rtt); envp = exec_queue_envp(); @@ -770,7 +791,7 @@ static void groups_decide(GROUPS *firstg){ char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", curg->eventscript, get_status_str(curg->status), curg->name, @@ -787,7 +808,9 @@ static void groups_decide(GROUPS *firstg){ 0, "", get_status_str(prevstatus), - current_time.tv_sec); + current_time.tv_sec, + 0, + 0); envp = exec_queue_envp(); if(curg->queue && *curg->queue) { @@ -803,7 +826,7 @@ static void groups_decide(GROUPS *firstg){ char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", curg->notifyscript, get_status_str(curg->status), curg->name, @@ -820,7 +843,9 @@ static void groups_decide(GROUPS *firstg){ 0, "", get_status_str(prevstatus), - current_time.tv_sec); + current_time.tv_sec, + 0, + 0); envp = exec_queue_envp(); forkexec(argv, envp); @@ -837,7 +862,7 @@ static void groups_decide(GROUPS *firstg){ char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", curg->eventscript, get_status_str(curg->status), curg->name, @@ -854,7 +879,9 @@ static void groups_decide(GROUPS *firstg){ 0, "", get_status_str(prevstatus), - current_time.tv_sec); + current_time.tv_sec, + 0, + 0); envp = exec_queue_envp(); if(curg->queue && *curg->queue) { @@ -870,7 +897,7 @@ static void groups_decide(GROUPS *firstg){ char **argv; char **envp; - argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d", + argv = exec_queue_argv("%s %s %s %s %s %s %d %d %d %d %d %d %d %d %s %s %d %d %d", curg->notifyscript, get_status_str(curg->status), curg->name, @@ -887,7 +914,9 @@ static void groups_decide(GROUPS *firstg){ 0, "", get_status_str(prevstatus), - current_time.tv_sec); + current_time.tv_sec, + 0, + 0); envp = exec_queue_envp(); forkexec(argv, envp); @@ -63,7 +63,9 @@ typedef struct target { int consecutive_missing; int consecutive_missing_max; int consecutive_rcvd; + long min_rtt; long avg_rtt; + long max_rtt; int status_change; } TARGET; diff --git a/foolsm.spec b/foolsm.spec index 70a2f89..b127834 100644 --- a/foolsm.spec +++ b/foolsm.spec @@ -2,7 +2,7 @@ Summary: The Foobar Link Status Monitor Name: foolsm -Version: 1.0.18 +Version: 1.0.21 Release: 1%{?dist} License: GPLv2 URL: https://lsm.foobar.fi/ @@ -78,6 +78,16 @@ install -m0644 foolsm.service %{buildroot}%{_unitdir}/ %{_datadir}/munin/plugins/foolsm_ %changelog +* Wed Aug 18 2021 Mika Ilmaranta <ilmis@nullnet.fi> - 1.0.21-1 +- ensure sane value for connection min_rtt + +* Wed Aug 18 2021 Mika Ilmaranta <ilmis@nullnet.fi> - 1.0.20-1 +- fixed comparison logic error + +* Mon Aug 16 2021 Mika Ilmaranta <ilmis@nullnet.fi> - 1.0.19-1 +- added min & max rtt. making them the last parameters scripts get to not + break old user scripts + * Mon Jul 19 2021 Mika Ilmaranta <ilmis@nullnet.fi> - 1.0.18-1 - fixed compile time warnings with el8 compiler diff --git a/group_script b/group_script index b72d151..033fc64 100644 --- a/group_script +++ b/group_script @@ -25,6 +25,8 @@ AVG_RTT=${13} SRCIP=${14} PREVSTATE=${15} TIMESTAMP=${16} +MIN_RTT=${17} +MAX_RTT=${18} if [ -z "${WARN_EMAIL}" ] ; then exit 0 |
