]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: Add server port field to server state file.
authorFrédéric Lécaille <flecaille@haproxy.com>
Tue, 1 Aug 2017 06:47:19 +0000 (08:47 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 3 Aug 2017 12:31:46 +0000 (14:31 +0200)
This patch adds server ports to server state file at the end of each line
for backward compatibility.

doc/management.txt
include/types/server.h
src/proxy.c
src/server.c

index dd604aeb220f65afb1a4590bcba5bf20d6a3094b..c4e76edff4f0db4431ca7fcac20ee57d1fec667d 100644 (file)
@@ -2042,6 +2042,7 @@ show servers state [<backend>]
      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
index 8fb6f2ec4f1fe5e8bc4d0721c67ca9d9c98e45fe..724d49651713426c1071510b75a9c4adef02869f 100644 (file)
@@ -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
 
index 1481089448519a7b0535d89a4b09e8dcb46ea070..641d4fa196d9fd075a628f17679f9ae3a6398fd1 100644 (file)
@@ -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;
index 008bafa536d3dca2901bc5e89e2cb4600b4529cb..f457d5550ddda70530f1d1a4a49be01206019813 100644 (file)
@@ -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;