aboutsummaryrefslogtreecommitdiff
path: root/foolsm.c
diff options
context:
space:
mode:
authorLucas de Castro Borges <lucas@gnuabordo.com.br>2024-06-05 11:21:17 -0300
committerLucas de Castro Borges <lucas@gnuabordo.com.br>2024-06-05 19:00:29 -0300
commit965d844f3ed27780ac7df453dcd9d8b7271c5cf9 (patch)
tree80e07c54e1f8264be55dcf818865b433e1475a54 /foolsm.c
parent21119406396e5e2d98a9f8cc4e59013ac88ea27d (diff)
New upstream version 1.0.21
Diffstat (limited to 'foolsm.c')
-rw-r--r--foolsm.c85
1 files changed, 57 insertions, 28 deletions
diff --git a/foolsm.c b/foolsm.c
index 8d93b09..f03cd97 100644
--- a/foolsm.c
+++ b/foolsm.c
@@ -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);