X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=vswitchd%2Fovs-vswitchd.c;h=fd2144abb0da2e20d4ecf7decb7e55f990ffb21a;hb=3adb8bf04838d8fa5a382f501437b62af99ed874;hp=9528ec5fd7c9cf6efa84c599ead6ed5df47a550b;hpb=064af42167bf4fc9aaea2702d80ce08074b889c0;p=openvswitch diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c index 9528ec5f..fd2144ab 100644 --- a/vswitchd/ovs-vswitchd.c +++ b/vswitchd/ovs-vswitchd.c @@ -1,27 +1,16 @@ /* Copyright (c) 2008, 2009 Nicira Networks - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * http://www.apache.org/licenses/LICENSE-2.0 * - * In addition, as a special exception, Nicira Networks gives permission - * to link the code of its release of vswitchd with the OpenSSL project's - * "OpenSSL" library (or with modified versions of it that use the same - * license as the "OpenSSL" library), and distribute the linked - * executables. You must obey the GNU General Public License in all - * respects for all of the code used other than "OpenSSL". If you modify - * this file, you may extend this exception to your version of the file, - * but you are not obligated to do so. If you do not wish to do so, - * delete this exception statement from your version. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #include @@ -39,12 +28,13 @@ #include "command-line.h" #include "compiler.h" #include "daemon.h" +#include "dpif.h" #include "fault.h" #include "leak-checker.h" #include "mgmt.h" +#include "netdev.h" #include "ovs-vswitchd.h" #include "poll-loop.h" -#include "port.h" #include "proc-net-compat.h" #include "process.h" #include "signals.h" @@ -60,7 +50,7 @@ static void parse_options(int argc, char *argv[]); static void usage(void) NO_RETURN; -static void reload(struct unixctl_conn *, const char *args); +static unixctl_cb_func reload; static bool need_reconfigure; static struct unixctl_conn **conns; @@ -89,12 +79,14 @@ main(int argc, char *argv[]) if (retval) { ovs_fatal(retval, "could not listen for control connections"); } - unixctl_command_register("vswitchd/reload", reload); + unixctl_command_register("vswitchd/reload", reload, NULL); - cfg_read(); + retval = cfg_read(); + if (retval) { + ovs_fatal(retval, "could not read config file"); + } mgmt_init(); bridge_init(); - port_init(); mgmt_reconfigure(); need_reconfigure = false; @@ -104,11 +96,15 @@ main(int argc, char *argv[]) vlog_reopen_log_file(); reconfigure(); } - mgmt_run(); + if (mgmt_run()) { + need_reconfigure = true; + } if (bridge_run()) { need_reconfigure = true; } unixctl_server_run(unixctl); + dp_run(); + netdev_run(); if (need_reconfigure) { poll_immediate_wake(); @@ -117,6 +113,8 @@ main(int argc, char *argv[]) mgmt_wait(); bridge_wait(); unixctl_server_wait(unixctl); + dp_wait(); + netdev_wait(); poll_block(); } @@ -124,7 +122,7 @@ main(int argc, char *argv[]) } static void -reload(struct unixctl_conn *conn, const char *args UNUSED) +reload(struct unixctl_conn *conn, const char *args UNUSED, void *aux UNUSED) { need_reconfigure = true; conns = xrealloc(conns, sizeof *conns * (n_conns + 1)); @@ -139,7 +137,6 @@ reconfigure(void) cfg_read(); bridge_reconfigure(); mgmt_reconfigure(); - port_reconfigure(); for (i = 0; i < n_conns; i++) { unixctl_command_reply(conns[i], 202, NULL); @@ -228,6 +225,7 @@ parse_options(int argc, char *argv[]) "use --help for usage"); } + cfg_init(); config_file = argv[0]; error = cfg_set_file(config_file); if (error) { @@ -239,7 +237,7 @@ parse_options(int argc, char *argv[]) static void usage(void) { - printf("%s: virtual switch daemon\n" + printf("%s: Open vSwitch daemon\n" "usage: %s [OPTIONS] CONFIG\n" "CONFIG is a configuration file in ovs-vswitchd.conf(5) format.\n", program_name, program_name);