From: Frédéric Lécaille Date: Tue, 1 Aug 2017 06:47:19 +0000 (+0200) Subject: MINOR: Add server port field to server state file. X-Git-Tag: v1.8-dev3~197 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3169471964fdc49963e63f68c1fd88686821a0c4;p=thirdparty%2Fhaproxy.git MINOR: Add server port field to server state file. This patch adds server ports to server state file at the end of each line for backward compatibility. --- diff --git a/doc/management.txt b/doc/management.txt index dd604aeb22..c4e76edff4 100644 --- a/doc/management.txt +++ b/doc/management.txt @@ -2042,6 +2042,7 @@ show servers state [] srv_f_forced_id: Flag to know if the server's ID is forced by configuration. srv_fqdn: Server FQDN. + srv_port: Server port. show sess Dump all known sessions. Avoid doing this on slow connections as this can diff --git a/include/types/server.h b/include/types/server.h index 8fb6f2ec4f..724d496517 100644 --- a/include/types/server.h +++ b/include/types/server.h @@ -123,9 +123,10 @@ enum srv_initaddr { "srv_agent_state " \ "bk_f_forced_id " \ "srv_f_forced_id " \ - "srv_fqdn" + "srv_fqdn " \ + "srv_port" -#define SRV_STATE_FILE_MAX_FIELDS 18 +#define SRV_STATE_FILE_MAX_FIELDS 19 #define SRV_STATE_FILE_NB_FIELDS_VERSION_1 18 #define SRV_STATE_LINE_MAXLEN 512 diff --git a/src/proxy.c b/src/proxy.c index 1481089448..641d4fa196 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -1458,13 +1458,13 @@ static int dump_servers_state(struct stream_interface *si, struct chunk *buf) "%d %s %s " "%d %d %d %d %ld " "%d %d %d %d %d " - "%d %d %s" + "%d %d %s %u" "\n", px->uuid, px->id, srv->puid, srv->id, srv_addr, srv->state, srv->admin, srv->uweight, srv->iweight, (long int)srv_time_since_last_change, srv->check.status, srv->check.result, srv->check.health, srv->check.state, srv->agent.state, - bk_f_forced_id, srv_f_forced_id, srv->hostname ? srv->hostname : "-"); + bk_f_forced_id, srv_f_forced_id, srv->hostname ? srv->hostname : "-", srv->svc_port); if (bi_putchk(si_ic(si), &trash) == -1) { si_applet_cant_put(si); return 0; diff --git a/src/server.c b/src/server.c index 008bafa536..f457d5550d 100644 --- a/src/server.c +++ b/src/server.c @@ -2892,8 +2892,11 @@ static void srv_update_state(struct server *srv, int version, char **params) int srv_f_forced_id; int fqdn_set_by_cli; const char *fqdn; + const char *port_str; + unsigned int port; fqdn = NULL; + port = 0; msg = get_trash_chunk(); switch (version) { case 1: @@ -2913,6 +2916,7 @@ static void srv_update_state(struct server *srv, int version, char **params) * bk_f_forced_id: params[11] * srv_f_forced_id: params[12] * srv_fqdn: params[13] + * srv_port: params[14] */ /* validating srv_op_state */ @@ -3036,6 +3040,15 @@ static void srv_update_state(struct server *srv, int version, char **params) fqdn = NULL; } + port_str = params[14]; + if (port_str) { + port = strl2uic(port_str, strlen(port_str)); + if (port > USHRT_MAX) { + chunk_appendf(msg, ", invalid srv_port value '%s'", port_str); + port_str = NULL; + } + } + /* don't apply anything if one error has been detected */ if (msg->len) goto out; @@ -3167,6 +3180,9 @@ static void srv_update_state(struct server *srv, int version, char **params) } } + if (port_str) + srv->svc_port = port; + break; default: chunk_appendf(msg, ", version '%d' not supported", version); @@ -3416,6 +3432,7 @@ void apply_server_state(void) * bk_f_forced_id: params[15] => srv_params[11] * srv_f_forced_id: params[16] => srv_params[12] * srv_fqdn: params[17] => srv_params[13] + * srv_port: params[18] => srv_params[14] */ if (arg >= 4) { srv_params[srv_arg] = cur;