int spoe_handle_healthcheck_response(char *frame, size_t size, char *err, int errlen);
int set_srv_agent_send(struct server *srv, const char *send);
+void set_srv_agent_addr(struct server *srv, struct sockaddr_storage *sk);
/* Use this one only. This inline version only ensures that we don't
* call the function when the observe mode is disabled.
goto error;
}
- srv->check.addr = srv->agent.addr = *sk;
- srv->flags |= SRV_F_AGENTADDR;
+ srv->check.addr = *sk;
+ /* if agentaddr was never set, we can use addr */
+ if (!(srv->flags & SRV_F_AGENTADDR))
+ srv->agent.addr = *sk;
out:
return err_code;
goto out;
}
-
/* Parse the "agent-addr" server keyword */
static int srv_parse_agent_addr(char **args, int *cur_arg, struct proxy *curpx, struct server *srv,
char **errmsg)
{
+ struct sockaddr_storage sk;
int err_code = 0;
if (!*(args[*cur_arg+1])) {
memprintf(errmsg, "'%s' expects an address as argument.", args[*cur_arg]);
goto error;
}
- if(str2ip(args[*cur_arg+1], &srv->agent.addr) == NULL) {
+ memset(&sk, 0, sizeof(sk));
+ if (str2ip(args[*cur_arg + 1], &sk) == NULL) {
memprintf(errmsg, "parsing agent-addr failed. Check if '%s' is correct address.", args[*cur_arg+1]);
goto error;
}
+ set_srv_agent_addr(srv, &sk);
out:
return err_code;
return 0;
}
+/* set agent addr and apprropriate flag */
+inline void set_srv_agent_addr(struct server *srv, struct sockaddr_storage *sk)
+{
+ srv->agent.addr = *sk;
+ srv->flags |= SRV_F_AGENTADDR;
+}
+
/* Parse the "agent-send" server keyword */
static int srv_parse_agent_send(char **args, int *cur_arg, struct proxy *curpx, struct server *srv,
char **errmsg)
cli_err(appctx, "'set server <srv> agent' expects 'up' or 'down'.\n");
}
else if (strcmp(args[3], "agent-addr") == 0) {
+ struct sockaddr_storage sk;
+
+ memset(&sk, 0, sizeof(sk));
if (!(sv->agent.state & CHK_ST_ENABLED))
cli_err(appctx, "agent checks are not enabled on this server.\n");
- else if (str2ip(args[4], &sv->agent.addr) == NULL)
+ else if (str2ip(args[4], &sk))
+ set_srv_agent_addr(sv, &sk);
+ else
cli_err(appctx, "incorrect addr address given for agent.\n");
}
else if (strcmp(args[3], "agent-send") == 0) {