summaryrefslogtreecommitdiff
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
parent2970119462bf163a21ed0bc14f0268b0a54df508 (diff)
downloadopenvswitch-80df177a5f624a84f4c97bbe913511726c3e9bb8.tar.gz
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.
-rw-r--r--INSTALL.Linux3
-rw-r--r--vswitchd/ovs-vswitchd.8.in10
-rw-r--r--vswitchd/ovs-vswitchd.c29
3 files changed, 24 insertions, 18 deletions
diff --git a/INSTALL.Linux b/INSTALL.Linux
index 6442fcc9b..6c17ca498 100644
--- a/INSTALL.Linux
+++ b/INSTALL.Linux
@@ -287,8 +287,7 @@ ovsdb-tool (but running it at any time is harmless):
Then start the main Open vSwitch daemon, telling it to connect to the
same Unix domain socket:
- % ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock \
- --pidfile --detach
+ % ovs-vswitchd --pidfile --detach
Now you may use ovs-vsctl to set up bridges and other Open vSwitch
features. For example, to create a bridge named br0 and add ports
diff --git a/vswitchd/ovs-vswitchd.8.in b/vswitchd/ovs-vswitchd.8.in
index 3e41babd1..516e6da77 100644
--- a/vswitchd/ovs-vswitchd.8.in
+++ b/vswitchd/ovs-vswitchd.8.in
@@ -14,17 +14,15 @@
ovs\-vswitchd \- Open vSwitch daemon
.
.SH SYNOPSIS
-.B ovs\-vswitchd
-\fIdatabase\fR
+\fBovs\-vswitchd \fR[\fIdatabase\fR]
.
.SH DESCRIPTION
A daemon that manages and controls any number of Open vSwitch switches
on the local machine.
.PP
-The mandatory \fIdatabase\fR argument normally takes the form
-\fBunix:\fIfile\fR, where \fIfile\fR is the name of a Unix domain
-socket on which \fBovsdb\-server\fR is listening. However, all of the
-following forms are accepted:
+The \fIdatabase\fR argument specifies how \fBovs\-vswitchd\fR connects
+to \fBovsdb\-server\fR. The default is \fBunix:@RUNDIR@/db.sock\fR.
+The following forms are accepted:
.so ovsdb/remote-active.man
.so ovsdb/remote-passive.man
.PP
diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c
index a71eecccc..7d4e4d770 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();