X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=vswitchd%2Fovs-vswitchd.c;h=ebac1aa5cfd4d61f45ae4c871b9207bfca70d43c;hb=42d89d2a61a8c9e550a3a98cf7aaebce23f1b033;hp=2a86972657af4636dd53757a5ca0a2c1ebd6344d;hpb=0e15264f96e3caff662c7998cc739a3dd5c1c0f2;p=sliver-openvswitch.git diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c index 2a8697265..ebac1aa5c 100644 --- a/vswitchd/ovs-vswitchd.c +++ b/vswitchd/ovs-vswitchd.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks +/* Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira Networks * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -49,18 +49,19 @@ #include "util.h" #include "vconn.h" #include "vlog.h" -#include "vswitchd/vswitch-idl.h" +#include "vswitch-idl.h" VLOG_DEFINE_THIS_MODULE(vswitchd); static unixctl_cb_func ovs_vswitchd_exit; -static char *parse_options(int argc, char *argv[]); +static char *parse_options(int argc, char *argv[], char **unixctl_path); static void usage(void) NO_RETURN; int main(int argc, char *argv[]) { + char *unixctl_path = NULL; struct unixctl_server *unixctl; struct signal *sighup; char *remote; @@ -70,7 +71,7 @@ main(int argc, char *argv[]) proctitle_init(argc, argv); set_program_name(argv[0]); stress_init_command(); - remote = parse_options(argc, argv); + remote = parse_options(argc, argv, &unixctl_path); signal(SIGPIPE, SIG_IGN); sighup = signal_register(SIGHUP); process_init(); @@ -78,7 +79,7 @@ main(int argc, char *argv[]) daemonize_start(); - retval = unixctl_server_create(NULL, &unixctl); + retval = unixctl_server_create(unixctl_path, &unixctl); if (retval) { exit(EXIT_FAILURE); } @@ -115,11 +116,12 @@ main(int argc, char *argv[]) } static char * -parse_options(int argc, char *argv[]) +parse_options(int argc, char *argv[], char **unixctl_pathp) { enum { OPT_PEER_CA_CERT = UCHAR_MAX + 1, OPT_MLOCKALL, + OPT_UNIXCTL, VLOG_OPTION_ENUMS, LEAK_CHECKER_OPTION_ENUMS, OPT_BOOTSTRAP_CA_CERT, @@ -131,13 +133,14 @@ parse_options(int argc, char *argv[]) {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'V'}, {"mlockall", no_argument, NULL, OPT_MLOCKALL}, + {"unixctl", required_argument, NULL, OPT_UNIXCTL}, DAEMON_LONG_OPTIONS, VLOG_LONG_OPTIONS, LEAK_CHECKER_LONG_OPTIONS, STREAM_SSL_LONG_OPTIONS, {"peer-ca-cert", required_argument, NULL, OPT_PEER_CA_CERT}, {"bootstrap-ca-cert", required_argument, NULL, OPT_BOOTSTRAP_CA_CERT}, - {"enable-dummy", no_argument, NULL, OPT_ENABLE_DUMMY}, + {"enable-dummy", optional_argument, NULL, OPT_ENABLE_DUMMY}, {"disable-system", no_argument, NULL, OPT_DISABLE_SYSTEM}, {NULL, 0, NULL, 0}, }; @@ -156,7 +159,7 @@ parse_options(int argc, char *argv[]) usage(); case 'V': - ovs_print_version(OFP_VERSION, OFP_VERSION); + ovs_print_version(OFP10_VERSION, OFP10_VERSION); exit(EXIT_SUCCESS); case OPT_MLOCKALL: @@ -169,6 +172,10 @@ parse_options(int argc, char *argv[]) #endif break; + case OPT_UNIXCTL: + *unixctl_pathp = optarg; + break; + VLOG_OPTION_HANDLERS DAEMON_OPTION_HANDLERS LEAK_CHECKER_OPTION_HANDLERS @@ -183,7 +190,7 @@ parse_options(int argc, char *argv[]) break; case OPT_ENABLE_DUMMY: - dummy_enable(); + dummy_enable(optarg && !strcmp(optarg, "override")); break; case OPT_DISABLE_SYSTEM: @@ -227,6 +234,7 @@ usage(void) daemon_usage(); vlog_usage(); printf("\nOther options:\n" + " --unixctl=SOCKET override default control socket name\n" " -h, --help display this help message\n" " -V, --version display version information\n"); leak_checker_usage(); @@ -239,5 +247,5 @@ ovs_vswitchd_exit(struct unixctl_conn *conn, int argc OVS_UNUSED, { bool *exiting = exiting_; *exiting = true; - unixctl_command_reply(conn, 200, NULL); + unixctl_command_reply(conn, NULL); }