MINOR: stats: prepare to add a description with each stat/info field

Several times some users have expressed the non-intuitive aspect of some
of our stat/info metrics and suggested to add some help. This patch
replaces the char* arrays with an array of name_desc so that we now have
some reserved room to store a description with each stat or info field.
These descriptions are currently empty and not reported yet.
diff --git a/include/proto/stats.h b/include/proto/stats.h
index 6144d2f..d20beea 100644
--- a/include/proto/stats.h
+++ b/include/proto/stats.h
@@ -92,12 +92,11 @@
 
 extern const char *stat_status_codes[];
 
-/* These two structs contains all field names according with
- * the the number of entries in "enum stat_field" and
- * "enum info_field"
+/* These two structs contains all field names and descriptions according to
+ * the the number of entries in "enum stat_field" and "enum info_field"
  */
-extern const char *info_field_names[];
-extern const char *stat_field_names[];
+extern const struct name_desc stat_fields[];
+extern const struct name_desc info_fields[];
 
 int stats_fill_info(struct field *info, int len);
 int stats_fill_fe_stats(struct proxy *px, struct field *stats, int len);
diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
index 28261fd..7ef708c 100644
--- a/src/hlua_fcn.c
+++ b/src/hlua_fcn.c
@@ -356,7 +356,7 @@
 
 	lua_newtable(L);
 	for (i=0; i<INF_TOTAL_FIELDS; i++) {
-		lua_pushstring(L, info_field_names[i]);
+		lua_pushstring(L, info_fields[i].name);
 		hlua_fcn_pushfield(L, &stats[i]);
 		lua_settable(L, -3);
 	}
@@ -862,7 +862,7 @@
 
 	lua_newtable(L);
 	for (i=0; i<ST_F_TOTAL_FIELDS; i++) {
-		lua_pushstring(L, stat_field_names[i]);
+		lua_pushstring(L, stat_fields[i].name);
 		hlua_fcn_pushfield(L, &stats[i]);
 		lua_settable(L, -3);
 	}
@@ -918,7 +918,7 @@
 
 	lua_newtable(L);
 	for (i=0; i<ST_F_TOTAL_FIELDS; i++) {
-		lua_pushstring(L, stat_field_names[i]);
+		lua_pushstring(L, stat_fields[i].name);
 		hlua_fcn_pushfield(L, &stats[i]);
 		lua_settable(L, -3);
 	}
@@ -1333,7 +1333,7 @@
 		stats_fill_fe_stats(px, stats, STATS_LEN);
 	lua_newtable(L);
 	for (i=0; i<ST_F_TOTAL_FIELDS; i++) {
-		lua_pushstring(L, stat_field_names[i]);
+		lua_pushstring(L, stat_fields[i].name);
 		hlua_fcn_pushfield(L, &stats[i]);
 		lua_settable(L, -3);
 	}
diff --git a/src/stats.c b/src/stats.c
index 4c51a86..e9cbb96 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -72,7 +72,6 @@
 #include <proto/stream_interface.h>
 #include <proto/task.h>
 
-
 /* status codes available for the stats admin page (strictly 4 chars length) */
 const char *stat_status_codes[STAT_STATUS_SIZE] = {
 	[STAT_STATUS_DENY] = "DENY",
@@ -89,163 +88,163 @@
  * to always use the exact same name except that the strings for new names must
  * be lower case or CamelCase while the enum entries must be upper case.
  */
-const char *info_field_names[INF_TOTAL_FIELDS] = {
-	[INF_NAME]                           = "Name",
-	[INF_VERSION]                        = "Version",
-	[INF_RELEASE_DATE]                   = "Release_date",
-	[INF_NBTHREAD]                       = "Nbthread",
-	[INF_NBPROC]                         = "Nbproc",
-	[INF_PROCESS_NUM]                    = "Process_num",
-	[INF_PID]                            = "Pid",
-	[INF_UPTIME]                         = "Uptime",
-	[INF_UPTIME_SEC]                     = "Uptime_sec",
-	[INF_MEMMAX_MB]                      = "Memmax_MB",
-	[INF_POOL_ALLOC_MB]                  = "PoolAlloc_MB",
-	[INF_POOL_USED_MB]                   = "PoolUsed_MB",
-	[INF_POOL_FAILED]                    = "PoolFailed",
-	[INF_ULIMIT_N]                       = "Ulimit-n",
-	[INF_MAXSOCK]                        = "Maxsock",
-	[INF_MAXCONN]                        = "Maxconn",
-	[INF_HARD_MAXCONN]                   = "Hard_maxconn",
-	[INF_CURR_CONN]                      = "CurrConns",
-	[INF_CUM_CONN]                       = "CumConns",
-	[INF_CUM_REQ]                        = "CumReq",
-	[INF_MAX_SSL_CONNS]                  = "MaxSslConns",
-	[INF_CURR_SSL_CONNS]                 = "CurrSslConns",
-	[INF_CUM_SSL_CONNS]                  = "CumSslConns",
-	[INF_MAXPIPES]                       = "Maxpipes",
-	[INF_PIPES_USED]                     = "PipesUsed",
-	[INF_PIPES_FREE]                     = "PipesFree",
-	[INF_CONN_RATE]                      = "ConnRate",
-	[INF_CONN_RATE_LIMIT]                = "ConnRateLimit",
-	[INF_MAX_CONN_RATE]                  = "MaxConnRate",
-	[INF_SESS_RATE]                      = "SessRate",
-	[INF_SESS_RATE_LIMIT]                = "SessRateLimit",
-	[INF_MAX_SESS_RATE]                  = "MaxSessRate",
-	[INF_SSL_RATE]                       = "SslRate",
-	[INF_SSL_RATE_LIMIT]                 = "SslRateLimit",
-	[INF_MAX_SSL_RATE]                   = "MaxSslRate",
-	[INF_SSL_FRONTEND_KEY_RATE]          = "SslFrontendKeyRate",
-	[INF_SSL_FRONTEND_MAX_KEY_RATE]      = "SslFrontendMaxKeyRate",
-	[INF_SSL_FRONTEND_SESSION_REUSE_PCT] = "SslFrontendSessionReuse_pct",
-	[INF_SSL_BACKEND_KEY_RATE]           = "SslBackendKeyRate",
-	[INF_SSL_BACKEND_MAX_KEY_RATE]       = "SslBackendMaxKeyRate",
-	[INF_SSL_CACHE_LOOKUPS]              = "SslCacheLookups",
-	[INF_SSL_CACHE_MISSES]               = "SslCacheMisses",
-	[INF_COMPRESS_BPS_IN]                = "CompressBpsIn",
-	[INF_COMPRESS_BPS_OUT]               = "CompressBpsOut",
-	[INF_COMPRESS_BPS_RATE_LIM]          = "CompressBpsRateLim",
-	[INF_ZLIB_MEM_USAGE]                 = "ZlibMemUsage",
-	[INF_MAX_ZLIB_MEM_USAGE]             = "MaxZlibMemUsage",
-	[INF_TASKS]                          = "Tasks",
-	[INF_RUN_QUEUE]                      = "Run_queue",
-	[INF_IDLE_PCT]                       = "Idle_pct",
-	[INF_NODE]                           = "node",
-	[INF_DESCRIPTION]                    = "description",
-	[INF_STOPPING]                       = "Stopping",
-	[INF_JOBS]                           = "Jobs",
-	[INF_UNSTOPPABLE_JOBS]               = "Unstoppable Jobs",
-	[INF_LISTENERS]                      = "Listeners",
-	[INF_ACTIVE_PEERS]                   = "ActivePeers",
-	[INF_CONNECTED_PEERS]                = "ConnectedPeers",
-	[INF_DROPPED_LOGS]                   = "DroppedLogs",
-	[INF_BUSY_POLLING]                   = "BusyPolling",
-	[INF_FAILED_RESOLUTIONS]             = "FailedResolutions",
-	[INF_TOTAL_BYTES_OUT]                = "TotalBytesOut",
-	[INF_BYTES_OUT_RATE]                 = "BytesOutRate",
+const struct name_desc info_fields[INF_TOTAL_FIELDS] = {
+	[INF_NAME]                           { .name = "Name",                        .desc = "" },
+	[INF_VERSION]                        { .name = "Version",                     .desc = "" },
+	[INF_RELEASE_DATE]                   { .name = "Release_date",                .desc = "" },
+	[INF_NBTHREAD]                       { .name = "Nbthread",                    .desc = "" },
+	[INF_NBPROC]                         { .name = "Nbproc",                      .desc = "" },
+	[INF_PROCESS_NUM]                    { .name = "Process_num",                 .desc = "" },
+	[INF_PID]                            { .name = "Pid",                         .desc = "" },
+	[INF_UPTIME]                         { .name = "Uptime",                      .desc = "" },
+	[INF_UPTIME_SEC]                     { .name = "Uptime_sec",                  .desc = "" },
+	[INF_MEMMAX_MB]                      { .name = "Memmax_MB",                   .desc = "" },
+	[INF_POOL_ALLOC_MB]                  { .name = "PoolAlloc_MB",                .desc = "" },
+	[INF_POOL_USED_MB]                   { .name = "PoolUsed_MB",                 .desc = "" },
+	[INF_POOL_FAILED]                    { .name = "PoolFailed",                  .desc = "" },
+	[INF_ULIMIT_N]                       { .name = "Ulimit-n",                    .desc = "" },
+	[INF_MAXSOCK]                        { .name = "Maxsock",                     .desc = "" },
+	[INF_MAXCONN]                        { .name = "Maxconn",                     .desc = "" },
+	[INF_HARD_MAXCONN]                   { .name = "Hard_maxconn",                .desc = "" },
+	[INF_CURR_CONN]                      { .name = "CurrConns",                   .desc = "" },
+	[INF_CUM_CONN]                       { .name = "CumConns",                    .desc = "" },
+	[INF_CUM_REQ]                        { .name = "CumReq",                      .desc = "" },
+	[INF_MAX_SSL_CONNS]                  { .name = "MaxSslConns",                 .desc = "" },
+	[INF_CURR_SSL_CONNS]                 { .name = "CurrSslConns",                .desc = "" },
+	[INF_CUM_SSL_CONNS]                  { .name = "CumSslConns",                 .desc = "" },
+	[INF_MAXPIPES]                       { .name = "Maxpipes",                    .desc = "" },
+	[INF_PIPES_USED]                     { .name = "PipesUsed",                   .desc = "" },
+	[INF_PIPES_FREE]                     { .name = "PipesFree",                   .desc = "" },
+	[INF_CONN_RATE]                      { .name = "ConnRate",                    .desc = "" },
+	[INF_CONN_RATE_LIMIT]                { .name = "ConnRateLimit",               .desc = "" },
+	[INF_MAX_CONN_RATE]                  { .name = "MaxConnRate",                 .desc = "" },
+	[INF_SESS_RATE]                      { .name = "SessRate",                    .desc = "" },
+	[INF_SESS_RATE_LIMIT]                { .name = "SessRateLimit",               .desc = "" },
+	[INF_MAX_SESS_RATE]                  { .name = "MaxSessRate",                 .desc = "" },
+	[INF_SSL_RATE]                       { .name = "SslRate",                     .desc = "" },
+	[INF_SSL_RATE_LIMIT]                 { .name = "SslRateLimit",                .desc = "" },
+	[INF_MAX_SSL_RATE]                   { .name = "MaxSslRate",                  .desc = "" },
+	[INF_SSL_FRONTEND_KEY_RATE]          { .name = "SslFrontendKeyRate",          .desc = "" },
+	[INF_SSL_FRONTEND_MAX_KEY_RATE]      { .name = "SslFrontendMaxKeyRate",       .desc = "" },
+	[INF_SSL_FRONTEND_SESSION_REUSE_PCT] { .name = "SslFrontendSessionReuse_pct", .desc = "" },
+	[INF_SSL_BACKEND_KEY_RATE]           { .name = "SslBackendKeyRate",           .desc = "" },
+	[INF_SSL_BACKEND_MAX_KEY_RATE]       { .name = "SslBackendMaxKeyRate",        .desc = "" },
+	[INF_SSL_CACHE_LOOKUPS]              { .name = "SslCacheLookups",             .desc = "" },
+	[INF_SSL_CACHE_MISSES]               { .name = "SslCacheMisses",              .desc = "" },
+	[INF_COMPRESS_BPS_IN]                { .name = "CompressBpsIn",               .desc = "" },
+	[INF_COMPRESS_BPS_OUT]               { .name = "CompressBpsOut",              .desc = "" },
+	[INF_COMPRESS_BPS_RATE_LIM]          { .name = "CompressBpsRateLim",          .desc = "" },
+	[INF_ZLIB_MEM_USAGE]                 { .name = "ZlibMemUsage",                .desc = "" },
+	[INF_MAX_ZLIB_MEM_USAGE]             { .name = "MaxZlibMemUsage",             .desc = "" },
+	[INF_TASKS]                          { .name = "Tasks",                       .desc = "" },
+	[INF_RUN_QUEUE]                      { .name = "Run_queue",                   .desc = "" },
+	[INF_IDLE_PCT]                       { .name = "Idle_pct",                    .desc = "" },
+	[INF_NODE]                           { .name = "node",                        .desc = "" },
+	[INF_DESCRIPTION]                    { .name = "description",                 .desc = "" },
+	[INF_STOPPING]                       { .name = "Stopping",                    .desc = "" },
+	[INF_JOBS]                           { .name = "Jobs",                        .desc = "" },
+	[INF_UNSTOPPABLE_JOBS]               { .name = "Unstoppable Jobs",            .desc = "" },
+	[INF_LISTENERS]                      { .name = "Listeners",                   .desc = "" },
+	[INF_ACTIVE_PEERS]                   { .name = "ActivePeers",                 .desc = "" },
+	[INF_CONNECTED_PEERS]                { .name = "ConnectedPeers",              .desc = "" },
+	[INF_DROPPED_LOGS]                   { .name = "DroppedLogs",                 .desc = "" },
+	[INF_BUSY_POLLING]                   { .name = "BusyPolling",                 .desc = "" },
+	[INF_FAILED_RESOLUTIONS]             { .name = "FailedResolutions",           .desc = "" },
+	[INF_TOTAL_BYTES_OUT]                { .name = "TotalBytesOut",               .desc = "" },
+	[INF_BYTES_OUT_RATE]                 { .name = "BytesOutRate",                .desc = "" },
 };
 
-const char *stat_field_names[ST_F_TOTAL_FIELDS] = {
-	[ST_F_PXNAME]         = "pxname",
-	[ST_F_SVNAME]         = "svname",
-	[ST_F_QCUR]           = "qcur",
-	[ST_F_QMAX]           = "qmax",
-	[ST_F_SCUR]           = "scur",
-	[ST_F_SMAX]           = "smax",
-	[ST_F_SLIM]           = "slim",
-	[ST_F_STOT]           = "stot",
-	[ST_F_BIN]            = "bin",
-	[ST_F_BOUT]           = "bout",
-	[ST_F_DREQ]           = "dreq",
-	[ST_F_DRESP]          = "dresp",
-	[ST_F_EREQ]           = "ereq",
-	[ST_F_ECON]           = "econ",
-	[ST_F_ERESP]          = "eresp",
-	[ST_F_WRETR]          = "wretr",
-	[ST_F_WREDIS]         = "wredis",
-	[ST_F_STATUS]         = "status",
-	[ST_F_WEIGHT]         = "weight",
-	[ST_F_ACT]            = "act",
-	[ST_F_BCK]            = "bck",
-	[ST_F_CHKFAIL]        = "chkfail",
-	[ST_F_CHKDOWN]        = "chkdown",
-	[ST_F_LASTCHG]        = "lastchg",
-	[ST_F_DOWNTIME]       = "downtime",
-	[ST_F_QLIMIT]         = "qlimit",
-	[ST_F_PID]            = "pid",
-	[ST_F_IID]            = "iid",
-	[ST_F_SID]            = "sid",
-	[ST_F_THROTTLE]       = "throttle",
-	[ST_F_LBTOT]          = "lbtot",
-	[ST_F_TRACKED]        = "tracked",
-	[ST_F_TYPE]           = "type",
-	[ST_F_RATE]           = "rate",
-	[ST_F_RATE_LIM]       = "rate_lim",
-	[ST_F_RATE_MAX]       = "rate_max",
-	[ST_F_CHECK_STATUS]   = "check_status",
-	[ST_F_CHECK_CODE]     = "check_code",
-	[ST_F_CHECK_DURATION] = "check_duration",
-	[ST_F_HRSP_1XX]       = "hrsp_1xx",
-	[ST_F_HRSP_2XX]       = "hrsp_2xx",
-	[ST_F_HRSP_3XX]       = "hrsp_3xx",
-	[ST_F_HRSP_4XX]       = "hrsp_4xx",
-	[ST_F_HRSP_5XX]       = "hrsp_5xx",
-	[ST_F_HRSP_OTHER]     = "hrsp_other",
-	[ST_F_HANAFAIL]       = "hanafail",
-	[ST_F_REQ_RATE]       = "req_rate",
-	[ST_F_REQ_RATE_MAX]   = "req_rate_max",
-	[ST_F_REQ_TOT]        = "req_tot",
-	[ST_F_CLI_ABRT]       = "cli_abrt",
-	[ST_F_SRV_ABRT]       = "srv_abrt",
-	[ST_F_COMP_IN]        = "comp_in",
-	[ST_F_COMP_OUT]       = "comp_out",
-	[ST_F_COMP_BYP]       = "comp_byp",
-	[ST_F_COMP_RSP]       = "comp_rsp",
-	[ST_F_LASTSESS]       = "lastsess",
-	[ST_F_LAST_CHK]       = "last_chk",
-	[ST_F_LAST_AGT]       = "last_agt",
-	[ST_F_QTIME]          = "qtime",
-	[ST_F_CTIME]          = "ctime",
-	[ST_F_RTIME]          = "rtime",
-	[ST_F_TTIME]          = "ttime",
-	[ST_F_AGENT_STATUS]   = "agent_status",
-	[ST_F_AGENT_CODE]     = "agent_code",
-	[ST_F_AGENT_DURATION] = "agent_duration",
-	[ST_F_CHECK_DESC]     = "check_desc",
-	[ST_F_AGENT_DESC]     = "agent_desc",
-	[ST_F_CHECK_RISE]     = "check_rise",
-	[ST_F_CHECK_FALL]     = "check_fall",
-	[ST_F_CHECK_HEALTH]   = "check_health",
-	[ST_F_AGENT_RISE]     = "agent_rise",
-	[ST_F_AGENT_FALL]     = "agent_fall",
-	[ST_F_AGENT_HEALTH]   = "agent_health",
-	[ST_F_ADDR]           = "addr",
-	[ST_F_COOKIE]         = "cookie",
-	[ST_F_MODE]           = "mode",
-	[ST_F_ALGO]           = "algo",
-	[ST_F_CONN_RATE]      = "conn_rate",
-	[ST_F_CONN_RATE_MAX]  = "conn_rate_max",
-	[ST_F_CONN_TOT]       = "conn_tot",
-	[ST_F_INTERCEPTED]    = "intercepted",
-	[ST_F_DCON]           = "dcon",
-	[ST_F_DSES]           = "dses",
-	[ST_F_WREW]           = "wrew",
-	[ST_F_CONNECT]        = "connect",
-	[ST_F_REUSE]          = "reuse",
-	[ST_F_CACHE_LOOKUPS]  = "cache_lookups",
-	[ST_F_CACHE_HITS]     = "cache_hits",
-	[ST_F_SRV_ICUR]       = "srv_icur",
-	[ST_F_SRV_ILIM]       = "src_ilim"
+const struct name_desc stat_fields[ST_F_TOTAL_FIELDS] = {
+	[ST_F_PXNAME]                        { .name = "pxname",                      .desc = "" },
+	[ST_F_SVNAME]                        { .name = "svname",                      .desc = "" },
+	[ST_F_QCUR]                          { .name = "qcur",                        .desc = "" },
+	[ST_F_QMAX]                          { .name = "qmax",                        .desc = "" },
+	[ST_F_SCUR]                          { .name = "scur",                        .desc = "" },
+	[ST_F_SMAX]                          { .name = "smax",                        .desc = "" },
+	[ST_F_SLIM]                          { .name = "slim",                        .desc = "" },
+	[ST_F_STOT]                          { .name = "stot",                        .desc = "" },
+	[ST_F_BIN]                           { .name = "bin",                         .desc = "" },
+	[ST_F_BOUT]                          { .name = "bout",                        .desc = "" },
+	[ST_F_DREQ]                          { .name = "dreq",                        .desc = "" },
+	[ST_F_DRESP]                         { .name = "dresp",                       .desc = "" },
+	[ST_F_EREQ]                          { .name = "ereq",                        .desc = "" },
+	[ST_F_ECON]                          { .name = "econ",                        .desc = "" },
+	[ST_F_ERESP]                         { .name = "eresp",                       .desc = "" },
+	[ST_F_WRETR]                         { .name = "wretr",                       .desc = "" },
+	[ST_F_WREDIS]                        { .name = "wredis",                      .desc = "" },
+	[ST_F_STATUS]                        { .name = "status",                      .desc = "" },
+	[ST_F_WEIGHT]                        { .name = "weight",                      .desc = "" },
+	[ST_F_ACT]                           { .name = "act",                         .desc = "" },
+	[ST_F_BCK]                           { .name = "bck",                         .desc = "" },
+	[ST_F_CHKFAIL]                       { .name = "chkfail",                     .desc = "" },
+	[ST_F_CHKDOWN]                       { .name = "chkdown",                     .desc = "" },
+	[ST_F_LASTCHG]                       { .name = "lastchg",                     .desc = "" },
+	[ST_F_DOWNTIME]                      { .name = "downtime",                    .desc = "" },
+	[ST_F_QLIMIT]                        { .name = "qlimit",                      .desc = "" },
+	[ST_F_PID]                           { .name = "pid",                         .desc = "" },
+	[ST_F_IID]                           { .name = "iid",                         .desc = "" },
+	[ST_F_SID]                           { .name = "sid",                         .desc = "" },
+	[ST_F_THROTTLE]                      { .name = "throttle",                    .desc = "" },
+	[ST_F_LBTOT]                         { .name = "lbtot",                       .desc = "" },
+	[ST_F_TRACKED]                       { .name = "tracked",                     .desc = "" },
+	[ST_F_TYPE]                          { .name = "type",                        .desc = "" },
+	[ST_F_RATE]                          { .name = "rate",                        .desc = "" },
+	[ST_F_RATE_LIM]                      { .name = "rate_lim",                    .desc = "" },
+	[ST_F_RATE_MAX]                      { .name = "rate_max",                    .desc = "" },
+	[ST_F_CHECK_STATUS]                  { .name = "check_status",                .desc = "" },
+	[ST_F_CHECK_CODE]                    { .name = "check_code",                  .desc = "" },
+	[ST_F_CHECK_DURATION]                { .name = "check_duration",              .desc = "" },
+	[ST_F_HRSP_1XX]                      { .name = "hrsp_1xx",                    .desc = "" },
+	[ST_F_HRSP_2XX]                      { .name = "hrsp_2xx",                    .desc = "" },
+	[ST_F_HRSP_3XX]                      { .name = "hrsp_3xx",                    .desc = "" },
+	[ST_F_HRSP_4XX]                      { .name = "hrsp_4xx",                    .desc = "" },
+	[ST_F_HRSP_5XX]                      { .name = "hrsp_5xx",                    .desc = "" },
+	[ST_F_HRSP_OTHER]                    { .name = "hrsp_other",                  .desc = "" },
+	[ST_F_HANAFAIL]                      { .name = "hanafail",                    .desc = "" },
+	[ST_F_REQ_RATE]                      { .name = "req_rate",                    .desc = "" },
+	[ST_F_REQ_RATE_MAX]                  { .name = "req_rate_max",                .desc = "" },
+	[ST_F_REQ_TOT]                       { .name = "req_tot",                     .desc = "" },
+	[ST_F_CLI_ABRT]                      { .name = "cli_abrt",                    .desc = "" },
+	[ST_F_SRV_ABRT]                      { .name = "srv_abrt",                    .desc = "" },
+	[ST_F_COMP_IN]                       { .name = "comp_in",                     .desc = "" },
+	[ST_F_COMP_OUT]                      { .name = "comp_out",                    .desc = "" },
+	[ST_F_COMP_BYP]                      { .name = "comp_byp",                    .desc = "" },
+	[ST_F_COMP_RSP]                      { .name = "comp_rsp",                    .desc = "" },
+	[ST_F_LASTSESS]                      { .name = "lastsess",                    .desc = "" },
+	[ST_F_LAST_CHK]                      { .name = "last_chk",                    .desc = "" },
+	[ST_F_LAST_AGT]                      { .name = "last_agt",                    .desc = "" },
+	[ST_F_QTIME]                         { .name = "qtime",                       .desc = "" },
+	[ST_F_CTIME]                         { .name = "ctime",                       .desc = "" },
+	[ST_F_RTIME]                         { .name = "rtime",                       .desc = "" },
+	[ST_F_TTIME]                         { .name = "ttime",                       .desc = "" },
+	[ST_F_AGENT_STATUS]                  { .name = "agent_status",                .desc = "" },
+	[ST_F_AGENT_CODE]                    { .name = "agent_code",                  .desc = "" },
+	[ST_F_AGENT_DURATION]                { .name = "agent_duration",              .desc = "" },
+	[ST_F_CHECK_DESC]                    { .name = "check_desc",                  .desc = "" },
+	[ST_F_AGENT_DESC]                    { .name = "agent_desc",                  .desc = "" },
+	[ST_F_CHECK_RISE]                    { .name = "check_rise",                  .desc = "" },
+	[ST_F_CHECK_FALL]                    { .name = "check_fall",                  .desc = "" },
+	[ST_F_CHECK_HEALTH]                  { .name = "check_health",                .desc = "" },
+	[ST_F_AGENT_RISE]                    { .name = "agent_rise",                  .desc = "" },
+	[ST_F_AGENT_FALL]                    { .name = "agent_fall",                  .desc = "" },
+	[ST_F_AGENT_HEALTH]                  { .name = "agent_health",                .desc = "" },
+	[ST_F_ADDR]                          { .name = "addr",                        .desc = "" },
+	[ST_F_COOKIE]                        { .name = "cookie",                      .desc = "" },
+	[ST_F_MODE]                          { .name = "mode",                        .desc = "" },
+	[ST_F_ALGO]                          { .name = "algo",                        .desc = "" },
+	[ST_F_CONN_RATE]                     { .name = "conn_rate",                   .desc = "" },
+	[ST_F_CONN_RATE_MAX]                 { .name = "conn_rate_max",               .desc = "" },
+	[ST_F_CONN_TOT]                      { .name = "conn_tot",                    .desc = "" },
+	[ST_F_INTERCEPTED]                   { .name = "intercepted",                 .desc = "" },
+	[ST_F_DCON]                          { .name = "dcon",                        .desc = "" },
+	[ST_F_DSES]                          { .name = "dses",                        .desc = "" },
+	[ST_F_WREW]                          { .name = "wrew",                        .desc = "" },
+	[ST_F_CONNECT]                       { .name = "connect",                     .desc = "" },
+	[ST_F_REUSE]                         { .name = "reuse",                       .desc = "" },
+	[ST_F_CACHE_LOOKUPS]                 { .name = "cache_lookups",               .desc = "" },
+	[ST_F_CACHE_HITS]                    { .name = "cache_hits",                  .desc = "" },
+	[ST_F_SRV_ICUR]                      { .name = "srv_icur",                    .desc = "" },
+	[ST_F_SRV_ILIM]                      { .name = "src_ilim",                    .desc = "" },
 };
 
 /* one line of info */
@@ -316,7 +315,7 @@
 
 	chunk_appendf(&trash, "# ");
 	for (field = 0; field < ST_F_TOTAL_FIELDS; field++)
-		chunk_appendf(&trash, "%s,", stat_field_names[field]);
+		chunk_appendf(&trash, "%s,", stat_fields[field].name);
 
 	chunk_appendf(&trash, "\n");
 }
@@ -539,7 +538,7 @@
 		              stats[ST_F_TYPE].u.u32 == STATS_TYPE_SV ? 'S' :
 		              '?',
 		              stats[ST_F_IID].u.u32, stats[ST_F_SID].u.u32,
-		              field, stat_field_names[field], stats[ST_F_PID].u.u32);
+		              field, stat_fields[field].name, stats[ST_F_PID].u.u32);
 
 		if (!stats_emit_field_tags(out, &stats[field], ':'))
 			return 0;
@@ -575,7 +574,7 @@
 		chunk_appendf(out,
 			      "{\"field\":{\"pos\":%d,\"name\":\"%s\"},"
 			      "\"processNum\":%u,",
-			      field, info_field_names[field],
+			      field, info_fields[field].name,
 			      info[INF_PROCESS_NUM].u.u32);
 		if (old_len == out->data)
 			goto err;
@@ -642,7 +641,7 @@
 				"\"processNum\":%u,",
 			       obj_type, stats[ST_F_IID].u.u32,
 			       stats[ST_F_SID].u.u32, field,
-			       stat_field_names[field], stats[ST_F_PID].u.u32);
+			       stat_fields[field].name, stats[ST_F_PID].u.u32);
 		if (old_len == out->data)
 			goto err;
 
@@ -3324,7 +3323,7 @@
 		if (!field_format(info, field))
 			continue;
 
-		if (!chunk_appendf(out, "%s: ", info_field_names[field]))
+		if (!chunk_appendf(out, "%s: ", info_fields[field].name))
 			return 0;
 		if (!stats_emit_raw_data_field(out, &info[field]))
 			return 0;
@@ -3344,7 +3343,7 @@
 		if (!field_format(info, field))
 			continue;
 
-		if (!chunk_appendf(out, "%d.%s.%u:", field, info_field_names[field], info[INF_PROCESS_NUM].u.u32))
+		if (!chunk_appendf(out, "%d.%s.%u:", field, info_fields[field].name, info[INF_PROCESS_NUM].u.u32))
 			return 0;
 		if (!stats_emit_field_tags(out, &info[field], ':'))
 			return 0;
@@ -3864,8 +3863,8 @@
 /* register cli keywords */
 static struct cli_kw_list cli_kws = {{ },{
 	{ { "clear", "counters",  NULL }, "clear counters : clear max statistics counters (add 'all' for all counters)", cli_parse_clear_counters, NULL, NULL },
-	{ { "show", "info",  NULL }, "show info      : report information about the running process [json|typed]", cli_parse_show_info, cli_io_handler_dump_info, NULL },
-	{ { "show", "stat",  NULL }, "show stat      : report counters for each proxy and server [json|typed]", cli_parse_show_stat, cli_io_handler_dump_stat, NULL },
+	{ { "show", "info",  NULL }, "show info      : report information about the running process [desc|json|typed]*", cli_parse_show_info, cli_io_handler_dump_info, NULL },
+	{ { "show", "stat",  NULL }, "show stat      : report counters for each proxy and server [desc|json|typed]*", cli_parse_show_stat, cli_io_handler_dump_stat, NULL },
 	{ { "show", "schema",  "json", NULL }, "show schema json : report schema used for stats", NULL, cli_io_handler_dump_json_schema, NULL },
 	{{},}
 }};