Changeset: 049ba0242124 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=049ba0242124
Modified Files:
        tools/merovingian/daemon/forkmserver.c
        tools/merovingian/daemon/merovingian.c
        tools/merovingian/utils/properties.c
        tools/merovingian/utils/utils.c
Branch: Oct2020
Log Message:

monetdb daemon listenaddr changes

The property ipv6 has been removed.

The property localhost now accepts the following values:
- ::1, :: (bind only ipv6 interfaces)
- 127.0.0.1, 0.0.0.0 (bind only ipv4 interfaces)
- localhost, all (bind both ipv4 and ipv6 interfaces)


diffs (112 lines):

diff --git a/tools/merovingian/daemon/forkmserver.c 
b/tools/merovingian/daemon/forkmserver.c
--- a/tools/merovingian/daemon/forkmserver.c
+++ b/tools/merovingian/daemon/forkmserver.c
@@ -533,7 +533,6 @@ forkMserver(char *database, sabdb** stat
                raw_strings="raw_strings=true";
        }
        mport = (unsigned int)getConfNum(_mero_props, "port");
-       ipv6 = getConfNum(_mero_props, "ipv6") == 1;
 
        /* ok, now exec that mserver we want */
        snprintf(dbpath, sizeof(dbpath),
@@ -559,6 +558,13 @@ forkMserver(char *database, sabdb** stat
                argv[c++] = dbtrace_path;
        }
 
+       if (strncmp(listenaddr, "127.0.0.1", strlen("127.0.0.1")) == 0 ||
+               strncmp(listenaddr, "0.0.0.0", strlen("0.0.0.0")) == 0) {
+               ipv6 = false;
+       } else {
+               ipv6 = true;
+       }
+
        if (mydoproxy) {
                /* we "proxy", so we can just solely use UNIX domain sockets
                 * internally.  Before we hit our head, check if we can
diff --git a/tools/merovingian/daemon/merovingian.c 
b/tools/merovingian/daemon/merovingian.c
--- a/tools/merovingian/daemon/merovingian.c
+++ b/tools/merovingian/daemon/merovingian.c
@@ -361,7 +361,6 @@ main(int argc, char *argv[])
                {"sockdir",       strdup("/tmp"),          0,                  
STR},
                {"listenaddr",    strdup("localhost"),     0,                  
LADDR},
                {"port",          strdup(MERO_PORT),       atoi(MERO_PORT),    
INT},
-               {"ipv6",          strdup("false"),         0,                  
BOOLEAN},
 
                {"exittimeout",   strdup("60"),            60,                 
INT},
                {"forward",       strdup("proxy"),         0,                  
OTHER},
@@ -423,8 +422,6 @@ main(int argc, char *argv[])
        kv->val = strdup("no");
        kv = findConfKey(_mero_db_props, "embedc");
        kv->val = strdup("no");
-       kv = findConfKey(_mero_db_props, "ipv6");
-       kv->val = strdup("no");
        kv = findConfKey(_mero_db_props, "nclients");
        kv->val = strdup("64");
        kv = findConfKey(_mero_db_props, "type");
@@ -642,7 +639,6 @@ main(int argc, char *argv[])
        }
        _mero_props = ckv;
 
-       use_ipv6 = getConfNum(_mero_props, "ipv6") == 1;
        pidfilename = getConfVal(_mero_props, "pidfile");
 
        p = getConfVal(_mero_props, "forward");
@@ -663,6 +659,17 @@ main(int argc, char *argv[])
        }
        host = kv->val;
 
+       if (strncmp(host, "127.0.0.1", strlen("127.0.0.1")) == 0 ||
+               strncmp(host, "0.0.0.0", strlen("0.0.0.0")) == 0) {
+               use_ipv6 = false;
+       } else {
+               use_ipv6 = true;
+       }
+
+       if (strncmp(host, "all", strlen("all")) == 0) {
+               host = NULL;
+       }
+
        kv = findConfKey(_mero_props, "port");
        if (kv->ival <= 0 || kv->ival > 65535) {
                Mfprintf(stderr, "invalid port number: %s, defaulting to %s\n",
@@ -967,7 +974,7 @@ main(int argc, char *argv[])
        /* open up connections */
        if ((e = openConnectionIP(&sock, false, use_ipv6, host, port, stdout)) 
== NO_ERR &&
                (e = openConnectionUNIX(&socku, mapi_usock, 0, stdout)) == 
NO_ERR &&
-               (!discovery || (e = openConnectionIP(&discsock, true, false, 
host, port, _mero_discout)) == NO_ERR) &&
+               (!discovery || (e = openConnectionIP(&discsock, true, use_ipv6, 
host, port, _mero_discout)) == NO_ERR) &&
                (e = openConnectionUNIX(&unsock, control_usock, S_IRWXO, 
_mero_ctlout)) == NO_ERR) {
                pthread_t ctid = 0;
                pthread_t dtid = 0;
diff --git a/tools/merovingian/utils/properties.c 
b/tools/merovingian/utils/properties.c
--- a/tools/merovingian/utils/properties.c
+++ b/tools/merovingian/utils/properties.c
@@ -34,7 +34,6 @@ static const confkeyval _internal_prop_k
        {"embedpy",     NULL, 0, BOOLEAN},
        {"embedpy3",    NULL, 0, BOOLEAN},
        {"embedc",      NULL, 0, BOOLEAN},
-       {"ipv6",        NULL, 0, BOOLEAN},
        {"listenaddr",  NULL, 0, LADDR},
        {"nclients",    NULL, 0, INT},
        {"mfunnel",     NULL, 0, STR},
diff --git a/tools/merovingian/utils/utils.c b/tools/merovingian/utils/utils.c
--- a/tools/merovingian/utils/utils.c
+++ b/tools/merovingian/utils/utils.c
@@ -269,10 +269,15 @@ setConfVal(confkeyval *ckv, const char *
                }; break;
                case LADDR: {
                        if (strncmp(val, "127.0.0.1", strlen("127.0.0.1")) != 0 
&&
-                               strncmp(val, "0.0.0.0", strlen("0.0.0.0")) != 
0) {
+                               strncmp(val, "0.0.0.0", strlen("0.0.0.0")) != 0 
&&
+                               strncmp(val, "::", 2) != 0 &&
+                               strncmp(val, "::1", 3) != 0 &&
+                               strncmp(val, "localhost", strlen("localhost")) 
!= 0 &&
+                               strncmp(val, "all", strlen("all")) != 0
+                       ) {
                                char buf[256];
                                snprintf(buf, sizeof(buf),
-                                                "only valid values for %s are 
\"127.0.0.1\" or \"0.0.0.0\"\n",
+                                                "only valid values for %s are 
\"127.0.0.1\", \"0.0.0.0\", \"::1\", \"::\", \"localhost\" or \"all\"\n",
                                                 ckv->key);
                                return(strdup(buf));
                        }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to