#include "openflow/openflow.h"
#include "ovsdb-idl.h"
#include "poll-loop.h"
-#include "process.h"
-#include "signals.h"
#include "simap.h"
#include "stream-ssl.h"
#include "stream.h"
{
char *unixctl_path = NULL;
struct unixctl_server *unixctl;
- struct signal *sighup;
char *remote;
bool exiting;
int retval;
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);
- process_init();
ovsrec_init();
daemonize_start();
exiting = false;
while (!exiting) {
- if (signal_poll(sighup)) {
- vlog_reopen_log_file();
- }
memory_run();
if (memory_should_report()) {
struct simap usage;
unixctl_server_run(unixctl);
netdev_run();
- signal_wait(sighup);
memory_wait();
bridge_wait();
unixctl_server_wait(unixctl);
poll_immediate_wake();
}
poll_block();
+ if (should_service_stop()) {
+ exiting = true;
+ }
}
bridge_exit();
unixctl_server_destroy(unixctl);
+ service_stop();
return 0;
}