[ovs-dev] [PATCH v2 2/2] daemon-windows: Add users for windows services.
Gurucharan Shetty
shettyg at nicira.com
Tue Jan 28 21:56:30 UTC 2014
Start with ovs-vswitchd and ovsdb-server.
Signed-off-by: Gurucharan Shetty <gshetty at nicira.com>
---
v1->v2:
No change
---
lib/daemon.man | 1 +
lib/service.man | 1 +
lib/util.c | 4 ++++
manpages.mk | 6 ++++++
ovsdb/ovsdb-server.1.in | 3 +++
ovsdb/ovsdb-server.c | 5 +++++
vswitchd/ovs-vswitchd.8.in | 3 +++
vswitchd/ovs-vswitchd.c | 5 +++++
8 files changed, 28 insertions(+)
diff --git a/lib/daemon.man b/lib/daemon.man
index 00de1a3..4ab9823 100644
--- a/lib/daemon.man
+++ b/lib/daemon.man
@@ -1,3 +1,4 @@
+The following options are valid on POSIX based platforms.
.TP
\fB\-\-pidfile\fR[\fB=\fIpidfile\fR]
Causes a file (by default, \fB\*(PN.pid\fR) to be created indicating
diff --git a/lib/service.man b/lib/service.man
index c7927af..7d1189e 100644
--- a/lib/service.man
+++ b/lib/service.man
@@ -1,3 +1,4 @@
+The following options are valid only on Windows platform.
.TP
\fB\-\-service\fR
Causes \fB\*(PN\fR to run as a service in the background. The service
diff --git a/lib/util.c b/lib/util.c
index 87cc112..845f86c 100644
--- a/lib/util.c
+++ b/lib/util.c
@@ -376,6 +376,10 @@ set_program_name__(const char *argv0, const char *version, const char *date,
#ifdef _WIN32
char *basename;
size_t max_len = strlen(argv0) + 1;
+
+ if (program_name) {
+ return;
+ }
basename = xmalloc(max_len);
_splitpath_s(argv0, NULL, 0, NULL, 0, basename, max_len, NULL, 0);
assert_single_threaded();
diff --git a/manpages.mk b/manpages.mk
index 7f59019..5d5df03 100644
--- a/manpages.mk
+++ b/manpages.mk
@@ -38,6 +38,8 @@ ovsdb/ovsdb-server.1: \
lib/daemon-syn.man \
lib/daemon.man \
lib/memory-unixctl.man \
+ lib/service-syn.man \
+ lib/service.man \
lib/ssl-bootstrap-syn.man \
lib/ssl-bootstrap.man \
lib/ssl-syn.man \
@@ -56,6 +58,8 @@ lib/coverage-unixctl.man:
lib/daemon-syn.man:
lib/daemon.man:
lib/memory-unixctl.man:
+lib/service-syn.man:
+lib/service.man:
lib/ssl-bootstrap-syn.man:
lib/ssl-bootstrap.man:
lib/ssl-syn.man:
@@ -232,6 +236,7 @@ vswitchd/ovs-vswitchd.8: \
lib/coverage-unixctl.man \
lib/daemon.man \
lib/memory-unixctl.man \
+ lib/service.man \
lib/ssl-bootstrap.man \
lib/ssl.man \
lib/vlog-unixctl.man \
@@ -245,6 +250,7 @@ lib/common.man:
lib/coverage-unixctl.man:
lib/daemon.man:
lib/memory-unixctl.man:
+lib/service.man:
lib/ssl-bootstrap.man:
lib/ssl.man:
lib/vlog-unixctl.man:
diff --git a/ovsdb/ovsdb-server.1.in b/ovsdb/ovsdb-server.1.in
index 269d4f4..6924d42 100644
--- a/ovsdb/ovsdb-server.1.in
+++ b/ovsdb/ovsdb-server.1.in
@@ -17,6 +17,7 @@ ovsdb\-server \- Open vSwitch database server
[\fB\-\-remote=\fIremote\fR]\&...
[\fB\-\-run=\fIcommand\fR]
.so lib/daemon-syn.man
+.so lib/service-syn.man
.so lib/vlog-syn.man
.so lib/ssl-syn.man
.so lib/ssl-bootstrap-syn.man
@@ -92,6 +93,8 @@ run a single command, e.g.:
\fBovsdb\-server\fR detaches only after it starts listening on all \
configured remotes.
.so lib/daemon.man
+.SS "Service Options"
+.so lib/service.man
.SS "Logging Options"
.so lib/vlog.man
.SS "Public Key Infrastructure Options"
diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c
index 4105a95..c24d355 100644
--- a/ovsdb/ovsdb-server.c
+++ b/ovsdb/ovsdb-server.c
@@ -136,6 +136,7 @@ main(int argc, char *argv[])
proctitle_init(argc, argv);
set_program_name(argv[0]);
+ service_start(&argc, &argv);
signal(SIGPIPE, SIG_IGN);
process_init();
@@ -302,6 +303,9 @@ main(int argc, char *argv[])
}
poll_timer_wait_until(status_timer);
poll_block();
+ if (should_service_stop()) {
+ exiting = true;
+ }
}
ovsdb_jsonrpc_server_destroy(jsonrpc);
SHASH_FOR_EACH(node, &all_dbs) {
@@ -319,6 +323,7 @@ main(int argc, char *argv[])
}
}
+ service_stop();
return 0;
}
diff --git a/vswitchd/ovs-vswitchd.8.in b/vswitchd/ovs-vswitchd.8.in
index 0dd091f..d2544f7 100644
--- a/vswitchd/ovs-vswitchd.8.in
+++ b/vswitchd/ovs-vswitchd.8.in
@@ -86,11 +86,14 @@ only allow privileged users, such as the superuser, to use it.
\fBovs\-vswitchd\fR emits a log message if \fBmlockall()\fR is
unavailable or unsuccessful.
.
+.SS "Daemon Options"
.ds DD \
\fBovs\-vswitchd\fR detaches only after it has connected to the \
database, retrieved the initial configuration, and set up that \
configuration.
.so lib/daemon.man
+.SS "Service Options"
+.so lib/service.man
.SS "Public Key Infrastructure Options"
.so lib/ssl.man
.so lib/ssl-bootstrap.man
diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c
index 990e58f..9da2f49 100644
--- a/vswitchd/ovs-vswitchd.c
+++ b/vswitchd/ovs-vswitchd.c
@@ -73,6 +73,7 @@ main(int argc, char *argv[])
proctitle_init(argc, argv);
set_program_name(argv[0]);
+ service_start(&argc, &argv);
remote = parse_options(argc, argv, &unixctl_path);
signal(SIGPIPE, SIG_IGN);
sighup = signal_register(SIGHUP);
@@ -127,9 +128,13 @@ main(int argc, char *argv[])
poll_immediate_wake();
}
poll_block();
+ if (should_service_stop()) {
+ exiting = true;
+ }
}
bridge_exit();
unixctl_server_destroy(unixctl);
+ service_stop();
return 0;
}
--
1.7.9.5
More information about the dev
mailing list