From 9f5ada32e44ae444c7eeb6961b08d1940106822f Mon Sep 17 00:00:00 2001 From: Baptiste Assmann Date: Sat, 8 Aug 2015 15:49:13 +0200 Subject: [PATCH] MINOR: server: add new SRV_ADMF_CMAINT flag The purpose of SRV_ADMF_CMAINT flag is to keep in mind the server was forced to maintenance status because of the configuration file. --- include/types/server.h | 13 +++++++------ src/server.c | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/include/types/server.h b/include/types/server.h index cbeead9bd..ee3179443 100644 --- a/include/types/server.h +++ b/include/types/server.h @@ -73,12 +73,13 @@ enum srv_state { * state_str = (state & MAINT) ? "MAINT" : (state & DRAIN) : "DRAIN" : "READY" */ enum srv_admin { - SRV_ADMF_FMAINT = 0x1, /* the server was explicitly forced into maintenance */ - SRV_ADMF_IMAINT = 0x2, /* the server has inherited the maintenance status from a tracked server */ - SRV_ADMF_MAINT = 0x3, /* mask to check if any maintenance flag is present */ - SRV_ADMF_FDRAIN = 0x4, /* the server was explicitly forced into drain state */ - SRV_ADMF_IDRAIN = 0x8, /* the server has inherited the drain status from a tracked server */ - SRV_ADMF_DRAIN = 0xC, /* mask to check if any drain flag is present */ + SRV_ADMF_FMAINT = 0x01, /* the server was explicitly forced into maintenance */ + SRV_ADMF_IMAINT = 0x02, /* the server has inherited the maintenance status from a tracked server */ + SRV_ADMF_CMAINT = 0x04, /* the server is in maintenance because of the configuration */ + SRV_ADMF_MAINT = 0x07, /* mask to check if any maintenance flag is present */ + SRV_ADMF_FDRAIN = 0x08, /* the server was explicitly forced into drain state */ + SRV_ADMF_IDRAIN = 0x10, /* the server has inherited the drain status from a tracked server */ + SRV_ADMF_DRAIN = 0x18, /* mask to check if any drain flag is present */ }; /* server flags */ diff --git a/src/server.c b/src/server.c index b7a498c26..5a3f60ae7 100644 --- a/src/server.c +++ b/src/server.c @@ -1294,6 +1294,7 @@ int parse_server(const char *file, int linenum, char **args, struct proxy *curpr cur_arg += 1; } else if (!defsrv && !strcmp(args[cur_arg], "disabled")) { + newsrv->admin |= SRV_ADMF_CMAINT; newsrv->admin |= SRV_ADMF_FMAINT; newsrv->state = SRV_ST_STOPPED; newsrv->check.state |= CHK_ST_PAUSED;