OSDN Git Service

Changes to listen on INADDR_ANY as a virtual service.
authorTATEISHI Katsuyuki <tateishi.katsuyuki@oss.ntt.co.jp>
Tue, 9 Jun 2009 07:59:18 +0000 (16:59 +0900)
committerTATEISHI Katsuyuki <tateishi.katsuyuki@oss.ntt.co.jp>
Tue, 9 Jun 2009 07:59:18 +0000 (16:59 +0900)
src/l7vsadm_main.c

index ab79791..6cbeea6 100644 (file)
@@ -58,7 +58,7 @@ static int parse_option_snmp(int argc, char *argv[]);
 static int parse_option_parameter(int argc, char *argv[]);
 static int parse_option_help(int argc, char *argv[]);
 
-static int parse_endpoint(struct sockaddr_in *addr, const char *endpoint_str);
+static int parse_endpoint(struct sockaddr_in *addr, const char *endpoint_str, int allow_inaddr_any);
 static int parse_digit(const char *digit_str);
 static long long parse_qos(const char *qos_str);
 static int parse_option_protomod(int argc, char *argv[], int m_idx_begin, int m_idx_end);
@@ -516,7 +516,7 @@ parse_option_vs(int argc, char *argv[])
        if (strcmp(argv[idx], "-t") == 0 || strcmp(argv[idx], "--tcp-service") == 0) {
                idx++;
                ret = parse_endpoint(&l7vsadm_option_data.vs_addr,
-                                    argv[idx]);
+                                    argv[idx], TRUE);
                if (ret < 0) {
                        LOGGER_PUT_LOG_WARN(LOG_CAT_L7VSADM_PARSE,7,
                                "Parse VirtualService endpoint error.");
@@ -813,7 +813,7 @@ parse_option_vs(int argc, char *argv[])
                                        }
                                        ret = parse_endpoint(
                                                (struct sockaddr_in *)(&l7vsadm_option_data.sorry_addr),
-                                               argv[idx]);
+                                               argv[idx], FALSE);
                                        if (ret < 0) {
                                                LOGGER_PUT_LOG_WARN(LOG_CAT_L7VSADM_PARSE,20,
                                                        "Parse SorryServer endpoint error.");
@@ -1048,7 +1048,7 @@ parse_option_rs(int argc, char *argv[])
        if (strcmp(argv[idx], "-t") == 0 || strcmp(argv[idx], "--tcp-service") == 0) {
                idx++;
                ret = parse_endpoint(&l7vsadm_option_data.vs_addr,
-                                    argv[idx]);
+                                    argv[idx], TRUE);
                if (ret < 0) {
                        LOGGER_PUT_LOG_WARN(LOG_CAT_L7VSADM_PARSE,30,
                                "Parse VirtualService endpoint error.");
@@ -1181,7 +1181,7 @@ parse_option_rs(int argc, char *argv[])
        }
 
        idx++;
-       ret = parse_endpoint(&l7vsadm_option_data.rs_addr, argv[idx]);
+       ret = parse_endpoint(&l7vsadm_option_data.rs_addr, argv[idx], FALSE);
        if (ret < 0) {
                LOGGER_PUT_LOG_WARN(LOG_CAT_L7VSADM_PARSE,36,
                        "Parse RealServer endpoint error.");
@@ -2260,7 +2260,7 @@ parse_option_help(int argc, char *argv[])
  * @return     int     parse result OK=0, NG=-1
  */
 static int
-parse_endpoint(struct sockaddr_in *addr, const char *endpoint_str)
+parse_endpoint(struct sockaddr_in *addr, const char *endpoint_str, int allow_inaddr_any)
 {
        struct addrinfo *res, hints;
        struct sockaddr_in *sin;
@@ -2346,7 +2346,7 @@ parse_endpoint(struct sockaddr_in *addr, const char *endpoint_str)
         * which entry you want to specify if we have multiple entries.
         */
        sin = (struct sockaddr_in *)res->ai_addr;
-       if (sin->sin_addr.s_addr == htonl(INADDR_ANY)) {
+       if (!allow_inaddr_any && sin->sin_addr.s_addr == htonl(INADDR_ANY)) {
                LOGGER_PUT_LOG_WARN(LOG_CAT_L7VSADM_PARSE,73,
                        "You can't specify INADDR_ANY for endpoint.");
                fprintf(stderr, "PARSE ERROR : "