#include <errno.h>
#include <getopt.h>
+#include <inttypes.h>
#include <signal.h>
#include <unistd.h>
run_argv[2] = run_command;
run_argv[3] = NULL;
- retval = process_start(run_argv, NULL, 0, NULL, 0, &run_process);
+ retval = process_start(run_argv, &run_process);
if (retval) {
ovs_fatal(retval, "%s: process failed to start", run_command);
}
for (i = 0; i < n_dbs; i++) {
ovsdb_trigger_run(dbs[i].db, time_msec());
}
- if (run_process && process_exited(run_process)) {
- exiting = true;
+ if (run_process) {
+ process_run();
+ if (process_exited(run_process)) {
+ exiting = true;
+ }
}
/* update Manager status(es) every 5 seconds */
struct ovsdb_jsonrpc_remote_status status;
struct ovsdb_row *rw_row;
const char *target;
- char *keys[8], *values[8];
+ char *keys[9], *values[9];
size_t n = 0;
/* Get the "target" (protocol/host/port) spec. */
keys[n] = xstrdup("n_connections");
values[n++] = xasprintf("%d", status.n_connections);
}
+ if (status.bound_port != htons(0)) {
+ keys[n] = xstrdup("bound_port");
+ values[n++] = xasprintf("%"PRIu16, ntohs(status.bound_port));
+ }
write_string_string_column(rw_row, "status", keys, values, n);
ovsdb_jsonrpc_server_free_remote_status(&status);
LEAK_CHECKER_OPTION_ENUMS,
DAEMON_OPTION_ENUMS
};
- static struct option long_options[] = {
+ static const struct option long_options[] = {
{"remote", required_argument, NULL, OPT_REMOTE},
{"unixctl", required_argument, NULL, OPT_UNIXCTL},
{"run", required_argument, NULL, OPT_RUN},