]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
config: add OPT_ADDR type, move "public_addr"/"cluster_addr" processing there
authorGreg Farnum <gregf@hq.newdream.net>
Fri, 9 Jul 2010 18:58:48 +0000 (11:58 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Tue, 3 Aug 2010 21:56:01 +0000 (14:56 -0700)
Necessary side effect: move public_addr/cluster_addr into g_conf.

src/cmon.cc
src/config.cc
src/config.h
src/cosd.cc
src/msg/SimpleMessenger.h
src/testmsgr.cc

index 65c8e5d8ec6a02a1ff71d162d5a50910bf90900c..734e38ac3037bef9a37584139b9033ac60323da6 100644 (file)
@@ -211,7 +211,7 @@ int main(int argc, const char **argv)
        << " mon_data " << g_conf.mon_data
        << " fsid " << monmap.get_fsid()
        << std::endl;
-  g_public_addr = monmap.get_addr(name);
+  g_conf.public_addr = monmap.get_addr(name);
   err = messenger->bind();
   if (err < 0)
     return 1;
index 9f38879ab3aebe1ed396af6b2797832d7bda6b9b..0545f1b569ae798ef9668ced403ed994fa76a31b 100644 (file)
@@ -91,8 +91,6 @@ struct ceph_file_layout g_default_file_layout = {
 // fake osd failures: osd -> time
 std::map<entity_name_t,float> g_fake_kill_after;
 
-entity_addr_t g_public_addr;
-entity_addr_t g_cluster_addr;
 
 md_config_t g_conf;
 bool g_daemon = false;
@@ -233,6 +231,10 @@ struct config_option {
        { STRINGIFY(section), NULL, STRINGIFY(name), \
           &g_conf.name, def_val, 0, 0, type, schar }
 
+#define OPTION_OPT_ADDR(section, name, schar, type, def_val) \
+       { STRINGIFY(section), NULL, STRINGIFY(name), \
+          &g_conf.name, def_val, 0, 0, type, schar }
+
 #define OPTION_OPT_LONGLONG(section, name, schar, type, def_val) \
        { STRINGIFY(section), NULL, STRINGIFY(name), \
           &g_conf.name, 0, def_val, 0, type, schar }
@@ -252,6 +254,8 @@ struct config_option {
 
 static struct config_option config_optionsp[] = {
        OPTION(host, 0, OPT_STR, "localhost"),
+       OPTION(public_addr, 0, OPT_ADDR, ""),
+       OPTION(cluster_addr, 0, OPT_ADDR, ""),
        OPTION(num_mon, 0, OPT_INT, 1),
        OPTION(num_mds, 0, OPT_INT, 1),
        OPTION(num_osd, 0, OPT_INT, 4),
@@ -564,6 +568,8 @@ bool conf_set_conf_val(void *field, opt_type_t type, const char *val)
   case OPT_DOUBLE:
     *(double *)field = strtod(val, NULL);
     break;
+  case OPT_ADDR:
+    ((entity_addr_t *)field)->parse(val);
   default:
     return false;
   }
@@ -596,6 +602,9 @@ bool conf_set_conf_val(void *field, opt_type_t type, const char *val, long long
   case OPT_DOUBLE:
     *(double *)field = doubleval;
     break;
+  case OPT_ADDR:
+    ((entity_addr_t *)field)->parse(val);
+    break;
   default:
     return false;
   }
@@ -624,6 +633,9 @@ static bool conf_reset_val(void *field, opt_type_t type)
   case OPT_DOUBLE:
     *(double *)field = 0;
     break;
+  case OPT_ADDR:
+    *(entity_addr_t *)field = entity_addr_t();
+    break;
   default:
     return false;
   }
@@ -913,6 +925,8 @@ int conf_read_key_ext(const char *conf_name, const char *conf_alt_name, const ch
     case OPT_DOUBLE:
       OPT_READ_TYPE(ret, section, key, double, out, def);
       break;
+    case OPT_ADDR:
+      OPT_READ_TYPE(ret, section, key, char *, out, def);
     default:
        ret = 0;
         break;
@@ -979,11 +993,7 @@ void parse_startup_config_options(std::vector<const char*>& args, const char *mo
     } else if (CONF_ARG_EQ("show_conf", 'S')) {
       show_config = true;
     } else if (isdaemon && CONF_ARG_EQ("bind", 0)) {
-      g_public_addr.parse(args[++i]);
-    } else if (CONF_ARG_EQ("public_addr", 0)) {
-      g_public_addr.parse(args[++i]);
-    } else if (CONF_ARG_EQ("cluster_addr", 0)) {
-      g_cluster_addr.parse(args[++i]);
+      g_conf.public_addr.parse(args[++i]);
     } else if (isdaemon && CONF_ARG_EQ("nodaemon", 'D')) {
       g_conf.daemonize = false;
       g_conf.log_to_stdout = true;
index 0aefa46d681223dffe30929bd819baa62cff644b..b8db0352f3296215fb6a64d800c4f617f726910e 100644 (file)
@@ -31,9 +31,6 @@ extern struct ceph_file_layout g_default_file_layout;
 
 #include "msg/msg_types.h"
 
-extern entity_addr_t g_public_addr;
-extern entity_addr_t g_cluster_addr;
-
 extern bool g_daemon;
 extern const char *g_default_id;
 
@@ -132,6 +129,8 @@ struct md_config_t {
   bool tcp_multi_out;
   bool tcp_multi_dispatch;
   */
+  entity_addr_t public_addr;
+  entity_addr_t cluster_addr;
 
   bool ms_tcp_nodelay;
   double ms_initial_backoff;
@@ -427,7 +426,8 @@ struct md_config_t {
 extern md_config_t g_conf;     
 
 typedef enum {
-       OPT_NONE, OPT_INT, OPT_LONGLONG, OPT_STR, OPT_DOUBLE, OPT_FLOAT, OPT_BOOL
+       OPT_NONE, OPT_INT, OPT_LONGLONG, OPT_STR, OPT_DOUBLE, OPT_FLOAT, OPT_BOOL,
+       OPT_ADDR
 } opt_type_t;
 
 /**
index 918c1c0f8c29b0de771fdf63d24bfac9b7380c9a..bd322327f42b3054d13c899c4798a3d7ee29df46 100644 (file)
@@ -189,14 +189,14 @@ int main(int argc, const char **argv)
     exit(1);
   }
 
-  bool client_addr_set = !g_public_addr.is_blank_addr();
-  bool cluster_addr_set = !g_cluster_addr.is_blank_addr();
+  bool client_addr_set = !g_conf.public_addr.is_blank_addr();
+  bool cluster_addr_set = !g_conf.cluster_addr.is_blank_addr();
 
   if (cluster_addr_set && !client_addr_set) {
     cerr << TEXT_RED << " ** "
          << "WARNING: set cluster address but not client address!" << " **\n"
          << "using cluster address for clients" << TEXT_NORMAL << std::endl;
-    g_public_addr = g_cluster_addr;
+    g_conf.public_addr = g_conf.cluster_addr;
     client_addr_set = true;
     cluster_addr_set = false;
   }
@@ -211,8 +211,8 @@ int main(int argc, const char **argv)
   entity_addr_t hb_addr;
 
   if (client_addr_set) {
-    client_messenger->bind(g_public_addr);
-    hb_addr = g_public_addr;
+    client_messenger->bind(g_conf.public_addr);
+    hb_addr = g_conf.public_addr;
     hb_addr.set_port(0);
   }
   else client_messenger->bind();
@@ -221,8 +221,8 @@ int main(int argc, const char **argv)
     cluster_messenger = new SimpleMessenger();
     if (!cluster_messenger)
       return 1;
-    cluster_messenger->bind(g_cluster_addr);
-    hb_addr = g_cluster_addr;
+    cluster_messenger->bind(g_conf.cluster_addr);
+    hb_addr = g_conf.cluster_addr;
     hb_addr.set_port(0);
   }
 
index a45ad3d0b331a8997e435d16336a9108c7a49466..b9857110ee2b3f09b6a65daf2b783809199b2a51 100644 (file)
@@ -567,7 +567,7 @@ public:
   //void set_listen_addr(tcpaddr_t& a);
 
   int bind(entity_addr_t& bind_addr, int64_t force_nonce = -1);
-  int bind(int64_t force_nonce = -1) { return bind(g_public_addr, force_nonce); }
+  int bind(int64_t force_nonce = -1) { return bind(g_conf.public_addr, force_nonce); }
   int start(bool nodaemon = false);
   void wait();
 
index 68e4a7020b7dc0891ee3257228138a943bdef08e..95a3096178008c8ee2f4569c4d4c26703004db61 100644 (file)
@@ -84,8 +84,7 @@ int main(int argc, const char **argv, const char *envp[]) {
   // start up network
   int whoami = mc.monmap.get_rank(args[0]);
   assert(whoami >= 0);
-  g_public_addr = mc.monmap.get_addr(whoami);
-
+  g_conf.public_addr = mc.monmap.get_addr(whoami);
   SimpleMessenger *rank = new SimpleMessenger();
   int err = rank->bind();
   if (err < 0)