OSDN Git Service

Change l7vsadm -V format(sorryserver forward mode)
[ultramonkey-l7/ultramonkey-l7-v3.git] / l7vsd / src / l7vsadm.cpp
index 3553756..5593c62 100644 (file)
@@ -25,6 +25,7 @@
 #include <iostream>
 #include <sstream>
 #include <exception>
+#include <csignal>
 #include <boost/bind.hpp>
 #include <boost/archive/text_oarchive.hpp>
 #include <boost/archive/text_iarchive.hpp>
@@ -779,7 +780,7 @@ bool l7vs::l7vsadm::parse_opt_vs_qosup_func(int &pos, int argc, char *argv[])
                 return false;
         }
         try {
-                virtualservice_element &elem = request.vs_element; // request virtualservice element refalence get.
+                virtualservice_element &elem = request.vs_element; // request virtualservice element reference get.
                 std::string tmp = argv[pos];
                 std::string::reverse_iterator ritr = tmp.rbegin();
                 if (*ritr == 'G' || *ritr == 'g') {
@@ -836,7 +837,7 @@ bool l7vs::l7vsadm::parse_opt_vs_qosup_func(int &pos, int argc, char *argv[])
         }
         return true;
 }
-//! virtualservice option qosdownstream functipn
+//! virtualservice option qosdownstream function
 //! @param[in] argument position
 //! @param[in] argument count
 //! @param[in] argument value
@@ -852,7 +853,7 @@ bool l7vs::l7vsadm::parse_opt_vs_qosdown_func(int &pos, int argc, char *argv[])
                 return false;
         }
         try {
-                virtualservice_element &elem = request.vs_element; // request virtualservice element refalence get.
+                virtualservice_element &elem = request.vs_element; // request virtualservice element reference get.
                 std::string tmp = argv[pos];
                 std::string::reverse_iterator ritr = tmp.rbegin();
                 if (*ritr == 'G' || *ritr == 'g') {
@@ -917,10 +918,10 @@ bool l7vs::l7vsadm::parse_opt_vs_udp_func(int &pos, int argc, char *argv[])
 {
         Logger logger(LOG_CAT_L7VSADM_COMMON, 12, "l7vsadm::parse_opt_vs_udp_func", __FILE__, __LINE__);
 
-        virtualservice_element &elem = request.vs_element; // request virtualservie element reference get.
+        virtualservice_element &elem = request.vs_element; // request virtualservice element reference get.
         elem.udpmode = true; // udpmode on.
         boost::asio::ip::tcp::endpoint zeropoint;
-        if (zeropoint != elem.tcp_accept_endpoint) { // adddress tcp_acceptor endpoint
+        if (zeropoint != elem.tcp_accept_endpoint) { // address tcp_acceptor endpoint
                 std::stringstream sstream;
                 sstream << elem.tcp_accept_endpoint;
                 std::string endpoint = sstream.str();
@@ -1856,10 +1857,12 @@ bool    l7vs::l7vsadm::parse_opt_snmp_refresh_func(int &pos, int argc, char *arg
                         } else {
                                 std::string    buf("Invalid option value for -r option.");
                                 l7vsadm_err.setter(true, buf);
-                                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 79, buf, __FILE__, __LINE__);
+                                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 78, buf, __FILE__, __LINE__);
                                 return false;
                         }
                 }
+                request.snmpinfo.option_set_flag |= snmp_info::SNMP_REFRESH_OPTION_FLAG;
+
         } else {
                 std::string    buf("Argument argc is illegal for -S command.");
                 l7vsadm_err.setter(true, buf);
@@ -1877,14 +1880,6 @@ bool    l7vs::l7vsadm::parse_opt_snmp_refresh_func(int &pos, int argc, char *arg
 bool    l7vs::l7vsadm::parse_opt_snmp_vs_target_func(int &pos, int argc, char *argv[])
 {
        Logger    logger(LOG_CAT_L7VSADM_COMMON, 43, "l7vsadm::parse_opt_vs_target_func", __FILE__, __LINE__);
-        if (++pos >= argc) {
-                //don't target recvaddress:port
-                std::string    buf("target endpoint is not specified.");
-                l7vsadm_err.setter(true, buf);
-                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 131, buf, __FILE__, __LINE__);
-                return false;
-        }
-
         if (request.snmpinfo.option_set_flag & snmp_info::SNMP_TCP_SERVICE_OPTION_FLAG ) {
                 std::stringstream buf;
                 buf << "Option ";
@@ -1892,7 +1887,15 @@ bool    l7vs::l7vsadm::parse_opt_snmp_vs_target_func(int &pos, int argc, char *a
                 buf << " conflict.";
 
                 l7vsadm_err.setter(true, buf.str());
-                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 132, buf.str(), __FILE__, __LINE__);
+                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 131, buf.str(), __FILE__, __LINE__);
+                return false;
+        }
+
+        if (++pos >= argc) {
+                //don't target recvaddress:port
+                std::string    buf("target endpoint is not specified.");
+                l7vsadm_err.setter(true, buf);
+                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 132, buf, __FILE__, __LINE__);
                 return false;
         }
 
@@ -1906,7 +1909,7 @@ bool    l7vs::l7vsadm::parse_opt_snmp_vs_target_func(int &pos, int argc, char *a
                 std::stringstream buf;
                 buf << "target endpoint parse error:" << err.get_message() << src_str;
                 l7vsadm_err.setter(true, buf.str());
-                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 12, buf.str(), __FILE__, __LINE__);
+                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 133, buf.str(), __FILE__, __LINE__);
                 return false;
         }
 
@@ -1924,13 +1927,6 @@ bool    l7vs::l7vsadm::parse_opt_snmp_vs_module_func(int &pos, int argc, char *a
 {
         Logger    logger(LOG_CAT_L7VSADM_COMMON, 44, "l7vsadm::parse_opt_snmp_vs_module_func", __FILE__, __LINE__);
 
-        if (++pos >= argc) {
-               //don't target protomod name.
-                std::string    buf("protomod name is not specified.");
-                l7vsadm_err.setter(true, buf);
-                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 134, buf, __FILE__, __LINE__);
-                return false;
-        }
        if (request.snmpinfo.option_set_flag & snmp_info::SNMP_PROTOCOL_MODULE_OPTION_FLAG ) {
                 std::stringstream buf;
                 buf << "Option ";
@@ -1938,10 +1934,17 @@ bool    l7vs::l7vsadm::parse_opt_snmp_vs_module_func(int &pos, int argc, char *a
                 buf << " conflict.";
 
                 l7vsadm_err.setter(true, buf.str());
-                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 135, buf.str(), __FILE__, __LINE__);
+                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 134, buf.str(), __FILE__, __LINE__);
                 return false;
         }
 
+        if (++pos >= argc) {
+                //don't target protomod name.
+                std::string    buf("protomod name is not specified.");
+                l7vsadm_err.setter(true, buf);
+                Logger::putLogError(LOG_CAT_L7VSADM_PARSE, 135, buf, __FILE__, __LINE__);
+                return false;
+        }
 
        std::string    module_name = argv[pos];
         if (L7VS_MODNAME_LEN < module_name.length()) {
@@ -2272,13 +2275,13 @@ bool l7vs::l7vsadm::parse_help_func(l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd,
         std::cout <<
                   "Options:\n"
                   "  --tcp-service      -t service-address     service-address is host:port\n"
-                  "  --proto-module     -m proto-module        protocol module name and module argment\n"
+                  "  --proto-module     -m proto-module        protocol module name and module argument\n"
                   "                        [module-args]\n"
                   "  --scheduler        -s scheduler           one of rr,lc,wrr\n"
                   "  --upper            -u connection-count    maximum number of connections\n"
                   "  --bypass           -b sorry-server        sorry server address is host:port\n"
                   "  --tproxy           -T                     set sorry server connection to IP transparent mode.\n"
-                  "  --masq             -M                     set sorry server connection to IP masquarade mode.\n"
+                  "  --masq             -M                     set sorry server connection to IP masquerade mode.\n"
 
                   "  --flag             -f sorry-flag          sorry status set to virtual service\n"
                   "  --qos-up           -Q QoSval-up           QoS Threshold(bps) set to real server direction\n"
@@ -2291,7 +2294,7 @@ bool l7vs::l7vsadm::parse_help_func(l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd,
                   "  --real-server      -r server-address      server-address is host:port\n"
                   "  --weight           -w weight              scheduling weight set to real server\n"
                   "  --tproxy           -T                     set real server connection to IP transparent mode.\n"
-                  "  --masq             -M                     set real server connection to IP masquarade mode.\n"
+                  "  --masq             -M                     set real server connection to IP masquerade mode.\n"
                   "  --switch           -s replication-switch  start or stop replication\n"
                   "  --force            -f                     force replication start\n"
                   "  --dump             -d                     dump replication memory\n"
@@ -2580,7 +2583,8 @@ void l7vs::l7vsadm::disp_list_verbose()
                         if (zeropoint == vse.sorry_endpoint) {
                                 sorryepstr = "none";
                         } else {
-                                sorryepstr = endpoint_to_string<boost::asio::ip::tcp>(vse.sorry_endpoint, numeric_flag);
+                                sorryepstr = endpoint_to_string<boost::asio::ip::tcp>(vse.sorry_endpoint,
+                                             numeric_flag) + " " + vse.get_fwdmode_str();
                         }
 
                         if (vse.sorry_flag) {
@@ -2637,7 +2641,7 @@ void l7vs::l7vsadm::disp_list_verbose()
         }
         std::cout << buf.str();
 }
-//! l7vsadm constractor.
+//! l7vsadm constructor.
 //! create including all dictionary.
 l7vs::l7vsadm::l7vsadm()
         :   numeric_flag(false),
@@ -2977,7 +2981,7 @@ bool l7vs::l7vsadm::execute(int argc, char *argv[])
         }
         /*------ DEBUG LOG END ------*/
 
-        // set sighanlder
+        // set sighandler
         if (0 > set_sighandlers()) {
                 std::string buf("set_sighandlers failed.");
                 std::cerr << "COMMON ERROR: " << buf << std::endl;
@@ -2985,7 +2989,7 @@ bool l7vs::l7vsadm::execute(int argc, char *argv[])
                 return false;
         }
 
-        // readparam
+        // read param
         set_parameter();
 
         // Get l7vsadm execute file path from /proc/(pid)/exe (symbolic link)
@@ -3190,7 +3194,7 @@ static void sig_exit_handler(int sig)
         signal_flag = true;
 }
 
-//! set singal handler function
+//! set signal handler function
 //! @param[in] signal
 //! @param[in] handler function pointer
 //! @return 0/success, -1/fail
@@ -3215,7 +3219,7 @@ static int set_sighandler(int sig, void (*handler)(int))
         return 0;
 }
 
-//! set all singal handler function
+//! set all signal handler function
 //! @return 0/success, -1/fail
 static int set_sighandlers()
 {