aboutsummaryrefslogtreecommitdiff
path: root/vswitchd/ovs-vswitchd.c
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-07-26 10:13:07 -0700
committerBen Pfaff <blp@nicira.com>2011-07-26 16:50:08 -0700
commit80df177a5f624a84f4c97bbe913511726c3e9bb8 (patch)
tree622af2c2e935c0ba9dad496cd74a7c8f52f8d422 /vswitchd/ovs-vswitchd.c
parent2970119462bf163a21ed0bc14f0268b0a54df508 (diff)
ovs-vswitchd: Make database socket command-line argument optional.
In practice the default location is the only one used, so we might as well make it easy.
Diffstat (limited to 'vswitchd/ovs-vswitchd.c')
-rw-r--r--vswitchd/ovs-vswitchd.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c
index a71eeccc..7d4e4d77 100644
--- a/vswitchd/ovs-vswitchd.c
+++ b/vswitchd/ovs-vswitchd.c
@@ -30,6 +30,7 @@
#include "command-line.h"
#include "compiler.h"
#include "daemon.h"
+#include "dirs.h"
#include "dummy.h"
#include "leak-checker.h"
#include "netdev.h"
@@ -52,7 +53,7 @@ VLOG_DEFINE_THIS_MODULE(vswitchd);
static unixctl_cb_func ovs_vswitchd_exit;
-static const char *parse_options(int argc, char *argv[]);
+static char *parse_options(int argc, char *argv[]);
static void usage(void) NO_RETURN;
int
@@ -60,7 +61,7 @@ main(int argc, char *argv[])
{
struct unixctl_server *unixctl;
struct signal *sighup;
- const char *remote;
+ char *remote;
bool exiting;
int retval;
@@ -82,6 +83,8 @@ main(int argc, char *argv[])
unixctl_command_register("exit", ovs_vswitchd_exit, &exiting);
bridge_init(remote);
+ free(remote);
+
exiting = false;
while (!exiting) {
if (signal_poll(sighup)) {
@@ -107,7 +110,7 @@ main(int argc, char *argv[])
return 0;
}
-static const char *
+static char *
parse_options(int argc, char *argv[])
{
enum {
@@ -190,21 +193,27 @@ parse_options(int argc, char *argv[])
argc -= optind;
argv += optind;
- if (argc != 1) {
- VLOG_FATAL("database socket is only non-option argument; "
+ switch (argc) {
+ case 0:
+ return xasprintf("unix:%s/db.sock", ovs_rundir());
+
+ case 1:
+ return xstrdup(argv[0]);
+
+ default:
+ VLOG_FATAL("at most one non-option argument accepted; "
"use --help for usage");
}
-
- return argv[0];
}
static void
usage(void)
{
printf("%s: Open vSwitch daemon\n"
- "usage: %s [OPTIONS] DATABASE\n"
- "where DATABASE is a socket on which ovsdb-server is listening.\n",
- program_name, program_name);
+ "usage: %s [OPTIONS] [DATABASE]\n"
+ "where DATABASE is a socket on which ovsdb-server is listening\n"
+ " (default: \"unix:%s/db.sock\").\n",
+ program_name, program_name, ovs_rundir());
stream_usage("DATABASE", true, false, true);
daemon_usage();
vlog_usage();