int srv_downtime(const struct server *s);
int srv_lastsession(const struct server *s);
int srv_getinter(const struct check *check);
+void srv_settings_init(struct server *srv);
void srv_settings_cpy(struct server *srv, const struct server *src, int srv_tmpl);
int parse_server(const char *file, int linenum, char **args, struct proxy *curproxy, const struct proxy *defproxy, int parse_flags);
int srv_update_addr(struct server *s, void *ip, int ip_sin_family, struct server_inetaddr_updater updater);
defproxy->options2 |= PR_O2_INDEPSTR;
defproxy->max_out_conns = MAX_SRV_LIST;
- defproxy->defsrv.check.inter = DEF_CHKINTR;
- defproxy->defsrv.check.fastinter = 0;
- defproxy->defsrv.check.downinter = 0;
- defproxy->defsrv.agent.inter = DEF_CHKINTR;
- defproxy->defsrv.agent.fastinter = 0;
- defproxy->defsrv.agent.downinter = 0;
- defproxy->defsrv.check.rise = DEF_RISETIME;
- defproxy->defsrv.check.fall = DEF_FALLTIME;
- defproxy->defsrv.agent.rise = DEF_AGENT_RISETIME;
- defproxy->defsrv.agent.fall = DEF_AGENT_FALLTIME;
- defproxy->defsrv.check.port = 0;
- defproxy->defsrv.agent.port = 0;
- defproxy->defsrv.maxqueue = 0;
- defproxy->defsrv.minconn = 0;
- defproxy->defsrv.maxconn = 0;
- defproxy->defsrv.max_reuse = -1;
- defproxy->defsrv.max_idle_conns = -1;
- defproxy->defsrv.pool_purge_delay = 5000;
- defproxy->defsrv.slowstart = 0;
- defproxy->defsrv.onerror = DEF_HANA_ONERR;
- defproxy->defsrv.consecutive_errors_limit = DEF_HANA_ERRLIMIT;
- defproxy->defsrv.uweight = defproxy->defsrv.iweight = 1;
- LIST_INIT(&defproxy->defsrv.pp_tlvs);
+ srv_settings_init(&defproxy->defsrv);
defproxy->email_alert.level = LOG_ALERT;
defproxy->load_server_state_from_file = PR_SRV_STATE_FILE_UNSPEC;
return -1;
}
+/* Initialize default values for <srv>. Used both for dynamic servers and
+ * default servers. The latter are not initialized via new_server(), hence this
+ * function purpose. For static servers, srv_settings_cpy() is used instead
+ * reusing their default server instance.
+ */
+void srv_settings_init(struct server *srv)
+{
+ srv->check.inter = DEF_CHKINTR;
+ srv->check.fastinter = 0;
+ srv->check.downinter = 0;
+ srv->check.rise = DEF_RISETIME;
+ srv->check.fall = DEF_FALLTIME;
+ srv->check.port = 0;
+
+ srv->agent.inter = DEF_CHKINTR;
+ srv->agent.fastinter = 0;
+ srv->agent.downinter = 0;
+ srv->agent.rise = DEF_AGENT_RISETIME;
+ srv->agent.fall = DEF_AGENT_FALLTIME;
+ srv->agent.port = 0;
+
+ srv->maxqueue = 0;
+ srv->minconn = 0;
+ srv->maxconn = 0;
+
+ srv->max_reuse = -1;
+ srv->max_idle_conns = -1;
+ srv->pool_purge_delay = 5000;
+
+ srv->slowstart = 0;
+
+ srv->onerror = DEF_HANA_ONERR;
+ srv->consecutive_errors_limit = DEF_HANA_ERRLIMIT;
+
+ srv->uweight = srv->iweight = 1;
+
+ LIST_INIT(&srv->pp_tlvs);
+}
+
/*
* Copy <src> server settings to <srv> server allocating
* everything needed.
/* Copy default server settings to new server */
srv_settings_cpy(newsrv, &curproxy->defsrv, 0);
} else {
- /* Initialize dynamic server weight to 1 */
- newsrv->uweight = newsrv->iweight = 1;
+ srv_settings_init(newsrv);
/* A dynamic server is disabled on startup */
newsrv->next_admin = SRV_ADMF_FMAINT;
newsrv->next_state = SRV_ST_STOPPED;
server_recalc_eweight(newsrv, 0);
-
- /* Set default values for checks */
- newsrv->check.inter = DEF_CHKINTR;
- newsrv->check.rise = DEF_RISETIME;
- newsrv->check.fall = DEF_FALLTIME;
-
- newsrv->agent.inter = DEF_CHKINTR;
- newsrv->agent.rise = DEF_AGENT_RISETIME;
- newsrv->agent.fall = DEF_AGENT_FALLTIME;
}
HA_SPIN_INIT(&newsrv->lock);
}