Move {,fast,down}inter elements from struct server to struct check.
This allows those elements of a check to be independent of the check's server.

This is in preparation for associating a agent check
with a server which runs as well as the server's existing check.

Signed-off-by: Simon Horman <ho...@verge.net.au>
---
 include/types/server.h |    2 +-
 src/cfgparse.c         |   18 +++++++++---------
 src/checks.c           |   10 +++++-----
 src/server.c           |    6 +++---
 4 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/include/types/server.h b/include/types/server.h
index c8b2766..1ed7e90 100644
--- a/include/types/server.h
+++ b/include/types/server.h
@@ -115,6 +115,7 @@ struct check {
        char desc[HCHK_DESC_LEN];               /* health check descritpion */
        int use_ssl;                            /* use SSL for health checks */
        int send_proxy;                         /* send a PROXY protocol header 
with checks */
+       int inter, fastinter, downinter;        /* checks: time in milliseconds 
*/
        struct server *server;                  /* back-pointer to server */
 };
 
@@ -152,7 +153,6 @@ struct server {
        short observe, onerror;                 /* observing mode: one of 
HANA_OBS_*; what to do on error: on of ANA_ONERR_* */
        short onmarkeddown;                     /* what to do when marked down: 
one of HANA_ONMARKEDDOWN_* */
        short onmarkedup;                       /* what to do when marked up: 
one of HANA_ONMARKEDUP_* */
-       int inter, fastinter, downinter;        /* checks: time in milliseconds 
*/
        int slowstart;                          /* slowstart time in seconds 
(ms in the conf) */
        int result;                             /* health-check result : 
SRV_CHK_* */
 
diff --git a/src/cfgparse.c b/src/cfgparse.c
index f7af294..62a0b54 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1330,9 +1330,9 @@ void init_default_instance()
        defproxy.maxconn = cfg_maxpconn;
        defproxy.conn_retries = CONN_RETRIES;
 
-       defproxy.defsrv.inter = DEF_CHKINTR;
-       defproxy.defsrv.fastinter = 0;
-       defproxy.defsrv.downinter = 0;
+       defproxy.defsrv.check.inter = DEF_CHKINTR;
+       defproxy.defsrv.check.fastinter = 0;
+       defproxy.defsrv.check.downinter = 0;
        defproxy.defsrv.rise = DEF_RISETIME;
        defproxy.defsrv.fall = DEF_FALLTIME;
        defproxy.defsrv.check.port = 0;
@@ -4124,9 +4124,9 @@ stats_error_parsing:
 
                        newsrv->check.use_ssl = curproxy->defsrv.check.use_ssl;
                        newsrv->check.port      = curproxy->defsrv.check.port;
-                       newsrv->inter           = curproxy->defsrv.inter;
-                       newsrv->fastinter       = curproxy->defsrv.fastinter;
-                       newsrv->downinter       = curproxy->defsrv.downinter;
+                       newsrv->check.inter     = curproxy->defsrv.check.inter;
+                       newsrv->check.fastinter = 
curproxy->defsrv.check.fastinter;
+                       newsrv->check.downinter = 
curproxy->defsrv.check.downinter;
                        newsrv->rise            = curproxy->defsrv.rise;
                        newsrv->fall            = curproxy->defsrv.fall;
                        newsrv->maxqueue        = curproxy->defsrv.maxqueue;
@@ -4214,7 +4214,7 @@ stats_error_parsing:
                                        err_code |= ERR_ALERT | ERR_FATAL;
                                        goto out;
                                }
-                               newsrv->inter = val;
+                               newsrv->check.inter = val;
                                cur_arg += 2;
                        }
                        else if (!strcmp(args[cur_arg], "fastinter")) {
@@ -4231,7 +4231,7 @@ stats_error_parsing:
                                        err_code |= ERR_ALERT | ERR_FATAL;
                                        goto out;
                                }
-                               newsrv->fastinter = val;
+                               newsrv->check.fastinter = val;
                                cur_arg += 2;
                        }
                        else if (!strcmp(args[cur_arg], "downinter")) {
@@ -4248,7 +4248,7 @@ stats_error_parsing:
                                        err_code |= ERR_ALERT | ERR_FATAL;
                                        goto out;
                                }
-                               newsrv->downinter = val;
+                               newsrv->check.downinter = val;
                                cur_arg += 2;
                        }
                        else if (!defsrv && !strcmp(args[cur_arg], "addr")) {
diff --git a/src/checks.c b/src/checks.c
index f35abaf..b04aa9d 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -692,8 +692,8 @@ void health_adjust(struct server *s, short status)
        s->consecutive_errors = 0;
        s->counters.failed_hana++;
 
-       if (s->fastinter) {
-               expire = tick_add(now_ms, MS_TO_TICKS(s->fastinter));
+       if (s->check.fastinter) {
+               expire = tick_add(now_ms, MS_TO_TICKS(s->check.fastinter));
                if (s->check.task->expire > expire)
                        s->check.task->expire = expire;
        }
@@ -1389,7 +1389,7 @@ static struct task *process_chk(struct task *t)
                         * to establish but only when timeout.check is set
                         * as it may be to short for a full check otherwise
                         */
-                       t->expire = tick_add(now_ms, MS_TO_TICKS(s->inter));
+                       t->expire = tick_add(now_ms, 
MS_TO_TICKS(s->check.inter));
 
                        if (s->proxy->timeout.check && 
s->proxy->timeout.connect) {
                                int t_con = tick_add(now_ms, 
s->proxy->timeout.connect);
@@ -1427,7 +1427,7 @@ static struct task *process_chk(struct task *t)
                        int t_con;
 
                        t_con = tick_add(t->expire, s->proxy->timeout.connect);
-                       t->expire = tick_add(t->expire, MS_TO_TICKS(s->inter));
+                       t->expire = tick_add(t->expire, 
MS_TO_TICKS(s->check.inter));
 
                        if (s->proxy->timeout.check)
                                t->expire = tick_first(t->expire, t_con);
@@ -1520,7 +1520,7 @@ static struct task *process_chk(struct task *t)
 
  reschedule:
        while (tick_is_expired(t->expire, now_ms))
-               t->expire = tick_add(t->expire, MS_TO_TICKS(s->inter));
+               t->expire = tick_add(t->expire, MS_TO_TICKS(s->check.inter));
  out_wait:
        return t;
 }
diff --git a/src/server.c b/src/server.c
index e542bb7..e0ce6d9 100644
--- a/src/server.c
+++ b/src/server.c
@@ -33,12 +33,12 @@ int srv_downtime(const struct server *s)
 int srv_getinter(const struct server *s)
 {
        if ((s->state & SRV_CHECKED) && (s->health == s->rise + s->fall - 1))
-               return s->inter;
+               return s->check.inter;
 
        if (!(s->state & SRV_RUNNING) && s->health==0)
-               return (s->downinter)?(s->downinter):(s->inter);
+               return 
(s->check.downinter)?(s->check.downinter):(s->check.inter);
 
-       return (s->fastinter)?(s->fastinter):(s->inter);
+       return (s->check.fastinter)?(s->check.fastinter):(s->check.inter);
 }
 
 /*
-- 
1.7.10.4


Reply via email to