3 * @brief l7vsadm header file.
5 * L7VSADM: Virtual Server Administration Program for L7vsd
6 * Copyright (C) 2005 NTT COMWARE Corporation.
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
23 **********************************************************************/
29 #include <sys/types.h>
30 #include <sys/socket.h>
33 #include "l7vs_module.h"
34 #include "l7vs_service.h"
36 #include "logger_wrapper.h"
37 #include "parameter_wrapper.h"
39 #define L7VSADM_NAME "l7vsadm" //!< L7vsadm name string
40 #define L7VSADM_COMPONENT PARAM_COMP_L7VSADM //!< L7vsadm component
41 #define L7VSADM_DEFAULT_LIST_VS_BUFSIZE (4096) //!< Default vs buffer size
42 #define L7VSADM_DEFAULT_LIST_RS_RSNUM (16) //!< Default number of rs
43 #define L7VSADM_DEFAULT_BACKLOG (127) //!< Default backlog size
44 #define L7VSADM_DEFAULT_SCHEDULER "rr" //!< Default scheduler name
45 #define L7VSADM_DEFAULT_WAIT_INTERVAL (1) //!< Default wait interval
46 #define L7VSADM_DEFAULT_WAIT_COUNT (10) //!< Default wait count
47 #define L7VSADM_MAX_WAIT (60) //!< Max wait value
48 #define L7VSADM_INIT_ENDPOINT_STR "0.0.0.0:0" //!< Endpoint string for initialize
50 #define L7VSADM_RECV_FAILED (-1) //!< Receive faild
51 #define L7VSADM_RECV_TOO_LARGE (-2) //!< Receive size too large
53 //! L7vsadm command code.
54 enum L7VSADM_COMMAND_CODE_TAG {
55 CMD_LIST, //!< List command(-l)
56 CMD_LIST_VERBOSE, //!< Verbose list command(-V)
57 CMD_LIST_KEY, //!< Key list command(-K)
58 CMD_ADD_VS, //!< Add VirtualService command(-A)
59 CMD_DEL_VS, //!< Delete VirtualService command(-D)
60 CMD_EDIT_VS, //!< Edit VirtualService command(-E)
61 CMD_FLUSH_VS, //!< Flush VirtualService command(-C)
62 CMD_ADD_RS, //!< Add RealServer command(-a)
63 CMD_DEL_RS, //!< Delete RealServer command(-d)
64 CMD_EDIT_RS, //!< Edit RealServer command(-e)
65 CMD_REPLICATION, //!< Replication command(-R)
66 CMD_LOG, //!< Logger command(-L)
67 CMD_SNMP, //!< SNMPAgent command(-S)
68 CMD_PARAMETER, //!< Parameter command(-P)
69 CMD_HELP, //!< Help command(-h)
70 CMD_NONE //!< No command
73 //! L7vsadm option code.
74 enum L7VSADM_OPTION_CODE_TAG {
75 OPT_TCP_SERVICE, //!< VirtualService option(-t)
76 OPT_PROTO_MODULE, //!< ProtocolModule option(-m)
77 OPT_SCHEDULER, //!< ScheduleModule option(-s)
78 OPT_UPPER, //!< Sorry max connection option(-u)
79 OPT_BYPASS, //!< SorryServer option(-b)
80 OPT_FLAG, //!< Sorry flag option(-f)
81 OPT_QOS_UP, //!< QoS-UP option(-Q)
82 OPT_QOS_DOWN, //!< QoS-DOWN option(-q)
83 OPT_REAL_SERVER, //!< RealServer option(-r)
84 OPT_WEIGHT, //!< RealServer weight option(-w)
85 OPT_SWITCH, //!< Replication switching option(-s)
86 OPT_FORCE, //!< Force Replication option(-f)
87 OPT_DUMP, //!< Replication data dump option(-d)
88 OPT_CATEGORY, //!< Log-Category option(-c)
89 OPT_LEVEL, //!< Log-Level option(-l)
90 OPT_RELOAD, //!< Reload Parameter option(-r)
91 OPT_NUMERIC, //!< Numeric list option(-n)
92 OPT_NONE //!< No option
95 //! L7vsadm parameter code.
96 enum L7VSADM_PARAMETER_TAG {
97 PARA_CMD_INTERVAL, //!< Command wait interval parameter
98 PARA_CMD_COUNT, //!< Command wait count parameter
99 PARA_CON_INTERVAL, //!< Connect wait interval parameter
100 PARA_CON_COUNT, //!< Connect wait count parameter
101 PARA_NONE //!< No parameter
104 //! L7vsadm parsed option data.
105 struct l7vsadm_option_data {
106 enum L7VSADM_COMMAND_CODE_TAG command_code; //!< Command code
107 int (*parse_func)(int argc, char *argv[]); //!< Parse function pointer
108 int (*operate_func)(void); //!< Operate function pointer
109 struct sockaddr_in vs_addr; //!< VirtualService endpoint
110 struct sockaddr_in rs_addr; //!< RealServer endpoint
111 char protomod_name[L7VS_MODNAME_LEN]; //!< ProtocolModule name
112 char schedmod_name[L7VS_MODNAME_LEN]; //!< ScheduleModule name
113 struct l7vs_protomod *protomod; //!< ProtocolModule data
114 int persist; //!< Persist
115 int backlog; //!< Backlog
116 int weight; //!< RealServer weight
117 int isnumeric; //!< Numeric list
118 GArray *protomod_options; //!< ProtocolModule option
119 struct l7vs_service_arg_multi protomod_sarg; //!< Service_arg_multi
120 int max_connection; //!< Sorry max connection
121 struct sockaddr_storage sorry_addr; //!< SorryServer endpoint
122 int sorry_flag; //!< Sorry flag
123 unsigned long long qos_threshold_up; //!< QoS threshold to real server (UP Direction)
124 unsigned long long qos_threshold_down; //!< QoS threshold to client (DOWN Direction)
125 enum L7VSADM_OPTION_CODE_TAG control_code; //!< Control code(Sub command)
126 enum LOG_CATEGORY_TAG log_category; //!< Log-Category
127 enum LOG_LEVEL_TAG log_level; //!< Log-Level
128 int category_all_flag; //!< All Log-Category flag
129 int replication_start_flag; //!< Start Replication flag
130 enum PARAMETER_COMPONENT_TAG reload_param; //!< Parameter Reload Componet
133 //! L7vsadm command code list.
134 struct l7vsadm_command_list {
135 enum L7VSADM_COMMAND_CODE_TAG command_code; //!< Command code
136 const char *command_name; //!< Command name
137 const char *command_name_long; //!< Command long name
138 int (*parse_func)(int argc, char *argv[]); //!< Parse function pointer
139 int (*operate_func)(void); //!< Operate function pointer
142 //! L7vsadm option code list.
143 struct l7vsadm_option_list {
144 enum L7VSADM_OPTION_CODE_TAG option_code; //!< Option code
145 const char *option_name; //!< Option name
146 const char *option_name_long; //!< Option long name
147 int check_flag; //!< Conflict check flag
150 //! L7vsadm parameter code list.
151 struct l7vsadm_parameter_list {
152 enum L7VSADM_PARAMETER_TAG parameter_code; //!< Parameter code
153 const char *parameter_name; //!< Parameter name
156 //! L7vsadm log-category code list.
157 struct l7vsadm_category_name_list {
158 enum LOG_CATEGORY_TAG category_code; //!< Log-Category code
159 const char *category_name; //!< Log-Category name
160 const char *category_name_short; //!< Log-Category short name
163 //! L7vsadm log-level code list.
164 struct l7vsadm_level_name_list {
165 enum LOG_LEVEL_TAG level_code; //!< Log-Level code
166 const char *level_name; //!< Log-Level name
169 //! L7vsadm component code list.
170 struct l7vsadm_component_name_list {
171 enum PARAMETER_COMPONENT_TAG component_code; //!< Component code
172 const char *component_name; //!< Component name
175 //! L7vsadm io vector data.
176 struct l7vsadm_iov_data {
177 struct iovec req_iov[2]; //!< Request io-vector
178 int req_cnt; //!< Request io-vector count
179 struct iovec rsp_iov[2]; //!< Response io-vector
180 int rsp_cnt; //!< Response io-vector count
183 //! L7vsadm signal list.
184 struct l7vsadm_sig_list {
185 int sig; //!< Signal number
186 void (*sig_func)(int sig); //!< Signal hander pointer
190 extern void endpoint_c_str(char* ep_str, void *addr);
191 extern void argc_argv_c_str(char* arg_str, int argc, char *argv[]);
192 extern void l7vsadm_option_data_c_str(char* parse_str);
194 #endif //__L7VSADM_H__