OSDN Git Service

UltraMonkey-L7 2.1.3-1 release.
[ultramonkey-l7/ultramonkey-l7-v2.git] / include / l7vsadm.h
1 /*
2  * @file  l7vsadm.h
3  * @brief l7vsadm header file.
4  *
5  * L7VSADM: Virtual Server Administration Program for L7vsd
6  * Copyright (C) 2005  NTT COMWARE Corporation.
7  *
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.
12  *
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.
17  *
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
21  * 02110-1301 USA
22  *
23  **********************************************************************/
24
25 #ifndef __L7VSADM_H__
26 #define __L7VSADM_H__
27
28 #include <glib.h>
29 #include <sys/types.h>
30 #include <sys/socket.h>
31 #include <netdb.h>
32
33 #include "l7vs_module.h"
34 #include "l7vs_service.h"
35
36 #include "logger_wrapper.h"
37 #include "parameter_wrapper.h"
38
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
49
50 #define L7VSADM_RECV_FAILED (-1)                //!< Receive faild
51 #define L7VSADM_RECV_TOO_LARGE (-2)             //!< Receive size too large
52
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
71 };
72
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
93 };
94
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
102 };
103
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
131 };
132
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
140 };
141
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
148 };
149
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
154 };
155
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
161 };
162
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
167 };
168
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
173 };
174
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
181 };
182
183 //! L7vsadm signal list.
184 struct l7vsadm_sig_list {
185         int sig;                                        //!< Signal number
186         void (*sig_func)(int sig);                      //!< Signal hander pointer
187 };
188
189 //! Debug functions.
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);
193
194 #endif //__L7VSADM_H__