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);
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.");
}
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.");
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.");
}
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.");
* @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;
* 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 : "