/*****************************************************************************/
/*
                                Control.h
*/
/*****************************************************************************/

#ifndef CONTROL_H_LOADED
#define CONTROL_H_LOADED 1

#include "wasd.h"

#define CONTROL_ABORT                 "ABORT"  /* compatability only */
#define CONTROL_ACCEPT_LOAD           "ACCEPT=LOAD"
#define CONTROL_ACCEPT_REJECT         "ACCESS=LOAD" /* special case */
#define CONTROL_ADHOC                 "ADHOC=" /* devlopment use only */
#define CONTROL_ALIGN_FAULT           "ALIGN="
#define CONTROL_AUTH_CHECK            "AUTH=CHECK"
#define CONTROL_AUTH_LOAD1            "AUTH"
#define CONTROL_AUTH_LOAD2            "AUTH=LOAD"
#define CONTROL_AUTH_PURGE            "AUTH=PURGE"
#define CONTROL_AUTH_SKELKEY          "AUTH=SKELKEY="
#define CONTROL_CACHE_ON              "CACHE=ON"
#define CONTROL_CACHE_OFF             "CACHE=OFF"
#define CONTROL_CACHE_PURGE           "CACHE=PURGE"
#define CONTROL_CONFIG_CHECK          "CONFIG=CHECK"
#define CONTROL_DCL_DELETE            "DCL=DELETE"
#define CONTROL_DCL_PROCTOR_APPLY     "DCL=PROCTOR=APPLY"
#define CONTROL_DCL_PROCTOR_LOAD      "DCL=PROCTOR=LOAD"
#define CONTROL_DCL_PURGE             "DCL=PURGE"
#define CONTROL_EXIT                  "EXIT"
#define CONTROL_EXIT_NOW              "EXIT=NOW"
#define CONTROL_HELP                  "HELP"
#define CONTROL_GLOBAL_CHECK          "GLOBAL=CHECK"
#define CONTROL_HTTP2_PURGE           "HTTP2=PURGE"
#define CONTROL_HTTP2_PURGE_ALL       "HTTP2=PURGE=ALL"
#define CONTROL_INSTANCE              "INSTANCE="
#define CONTROL_INSTANCE_ACTIVE       "INSTANCE=ACTIVE"
#define CONTROL_INSTANCE_PASSIVE      "INSTANCE=PASSIVE"
#define CONTROL_LIST                  "LIST"   /* command-line info only */
#define CONTROL_LOG_OPEN              "LOG=OPEN"
#define CONTROL_LOG_CLOSE             "LOG=CLOSE"
#define CONTROL_LOG_FLUSH             "LOG=FLUSH"
#define CONTROL_LOG_OPEN_AS           "LOG=OPEN="
#define CONTROL_LOG_REOPEN            "LOG=REOPEN"
#define CONTROL_LOG_REOPEN_AS         "LOG=REOPEN="
#define CONTROL_LOG_FORMAT_AS         "LOG=FORMAT="
#define CONTROL_LOG_PERIOD_AS         "LOG=PERIOD="
#define CONTROL_MAP_CHECK             "MAP=CHECK"
#define CONTROL_MAP_LOAD1             "MAP"
#define CONTROL_MAP_LOAD2             "MAP=LOAD"
#define CONTROL_MSG_CHECK             "MSG=CHECK"
#define CONTROL_NET_LIST              "NET=LIST"
#define CONTROL_NET_PURGE             "NET=PURGE"
#define CONTROL_NET_PURGE_ALL         "NET=PURGE=ALL"
#define CONTROL_NET_PURGE_HTTP1       "NET=PURGE=HTTP1"
#define CONTROL_NET_PURGE_HTTP2       "NET=PURGE=HTTP2"
#define CONTROL_NET_PURGE_URI         "NET=PURGE=URI="
#define CONTROL_NET_RESUME            "NET=RESUME"
#define CONTROL_NET_SUSPEND           "NET=SUSPEND"
#define CONTROL_NET_SUSPEND_NOW       "NET=SUSPEND=NOW"
#define CONTROL_NET_NOSUSPEND         "NET=NOSUSPEND"
#define CONTROL_NOTE_META             "NOTE="  /* metacon note */
#define CONTROL_NOTE_SERVER           "/NOTE=" /* server process log note */
#define CONTROL_NOTICE_INVALID        "NOTICE=INVALID="
#define CONTROL_OPCOM                 "OPCOM="
#define CONTROL_PROXY_ADJUST          "PROXY=ADJUST"
#define CONTROL_PROXY_ON              "PROXY=ON"
#define CONTROL_PROXY_OFF             "PROXY=OFF"
#define CONTROL_PROXY_PURGE_HOST      "PROXY=PURGE=HOST"
#define CONTROL_PROXY_STATISTICS      "PROXY=STATISTICS"
#define CONTROL_REJECT_LOAD           "REJECT=LOAD"
#define CONTROL_REJECT_PURGE          "REJECT=PURGE"
#define CONTROL_REQUEST_RUNDOWN       "REQUEST=RUNDOWN="
#define CONTROL_REQUEST_RUNDOWN_ALL   "REQUEST=RUNDOWN=ALL"
#define CONTROL_RESTART               "RESTART"
#define CONTROL_RESTART_NOW           "RESTART=NOW"
#define CONTROL_RESTART_QUIET         "RESTART=QUIET"
#define CONTROL_SERVICE_CHECK         "SERVICE=CHECK"
#define CONTROL_SESSION_TICKET_KEY    "TICKET=KEY"
#define CONTROL_SSL_CA_LOAD           "SSL=CA=LOAD"
#define CONTROL_SSL_CERT_LOAD         "SSL=CERT=LOAD"
#define CONTROL_SSL_PKPASSWD          "SSL=KEY=PASSWORD"
#define CONTROL_STATUS                "STATUS"
#define CONTROL_STATUS_NOW            "STATUS=NOW"
#define CONTROL_STATUS_PURGE          "STATUS=PURGE"
#define CONTROL_STATUS_RESET          "STATUS=RESET"
#define CONTROL_THROTTLE_RELEASE      "THROTTLE=RELEASE"
#define CONTROL_THROTTLE_TERMINATE    "THROTTLE=TERMINATE"
#define CONTROL_THROTTLE_ZERO         "THROTTLE=ZERO"
#define CONTROL_WATCH_END             "WATCH=END"
#define CONTROL_WATCH_FLUSH           "WATCH=FLUSH"
#define CONTROL_WEBSOCKET_DISCONNECT  "WEBSOCKET=DISCONNECT"
#define CONTROL_ZERO                  "ZERO"
#define CONTROL_ZERO_HTTP2            "ZERO=HTTP2"
#define CONTROL_ZERO_NOTICED          "ZERO=NOTICED"
#define CONTROL_ZERO_PROXY            "ZERO=PROXY"
#define CONTROL_ZERO_STATUS           "ZERO=STATUS"

#define CONTROL_DELAY_EXIT            0x01
#define CONTROL_DELAY_RESTART         0x02
#define CONTROL_DELAY_RESTART_NOW     0x04
#define CONTROL_DELAY_RESTART_QUIET   0x08
#define CONTROL_DELAY_DO              0x10

/* wait for this many seconds to take control */
#define CONTROL_WAIT_SECONDS          5

/***********************/
/* function prototypes */
/***********************/

ControlAdhoc (char*);
ControlAllCommand (char*);
ControlAllHttpd (char*);
int ControlAuthSkelKey (char*, BOOL);
int ControlCheck (META_CONFIG*, char*, int);
ControlCommand (char*, BOOL);
ControlCommandAst ();
ControlDelay (int);
char* ControlEnqueueCommand (int, char*);
int ControlEnqueueCommandSize ();
void ControlDoHelp (REQUEST_STRUCT*);
ControlHttpdAst (struct lksb*);
ControlMessage (char*);
ControlZeroAccounting ();
ControlZeroNoticed ();
ControlZeroProxyAccounting ();
ControlZeroStatus ();

#endif /* CONTROL_H_LOADED */

/*****************************************************************************/
