Catalli's threaded switch
[sliver-openvswitch.git] / ovsdb / ovsdb-server.c
index 0d95cb2..27db070 100644 (file)
@@ -45,9 +45,9 @@
 #include "trigger.h"
 #include "util.h"
 #include "unixctl.h"
-
 #include "vlog.h"
-#define THIS_MODULE VLM_ovsdb_server
+
+VLOG_DEFINE_THIS_MODULE(ovsdb_server)
 
 #if HAVE_OPENSSL
 /* SSL configuration. */
@@ -59,6 +59,7 @@ static bool bootstrap_ca_cert;
 
 static unixctl_cb_func ovsdb_server_exit;
 static unixctl_cb_func ovsdb_server_compact;
+static unixctl_cb_func ovsdb_server_reconnect;
 
 static void parse_options(int argc, char *argv[], char **file_namep,
                           struct shash *remotes, char **unixctl_pathp,
@@ -86,8 +87,6 @@ main(int argc, char *argv[])
 
     proctitle_init(argc, argv);
     set_program_name(argv[0]);
-    time_init();
-    vlog_init();
     signal(SIGPIPE, SIG_IGN);
     process_init();
 
@@ -131,6 +130,8 @@ main(int argc, char *argv[])
     unixctl_command_register("exit", ovsdb_server_exit, &exiting);
     unixctl_command_register("ovsdb-server/compact", ovsdb_server_compact,
                              file);
+    unixctl_command_register("ovsdb-server/reconnect", ovsdb_server_reconnect,
+                             jsonrpc);
 
     exiting = false;
     while (!exiting) {
@@ -282,8 +283,8 @@ reconfigure_from_db(struct ovsdb_jsonrpc_server *jsonrpc,
 
 #if HAVE_OPENSSL
     /* Configure SSL. */
-    stream_ssl_set_private_key_file(query_db_string(db, private_key_file));
-    stream_ssl_set_certificate_file(query_db_string(db, certificate_file));
+    stream_ssl_set_key_and_cert(query_db_string(db, private_key_file),
+                                query_db_string(db, certificate_file));
     stream_ssl_set_ca_cert_file(query_db_string(db, ca_cert_file),
                                 bootstrap_ca_cert);
 #endif
@@ -317,6 +318,18 @@ ovsdb_server_compact(struct unixctl_conn *conn, const char *args OVS_UNUSED,
     }
 }
 
+/* "ovsdb-server/reconnect": makes ovsdb-server drop all of its JSON-RPC
+ * connections and reconnect. */
+static void
+ovsdb_server_reconnect(struct unixctl_conn *conn, const char *args OVS_UNUSED,
+                       void *jsonrpc_)
+{
+    struct ovsdb_jsonrpc_server *jsonrpc = jsonrpc_;
+
+    ovsdb_jsonrpc_server_reconnect(jsonrpc);
+    unixctl_command_reply(conn, 200, NULL);
+}
+
 static void
 parse_options(int argc, char *argv[], char **file_namep,
               struct shash *remotes, char **unixctl_pathp,