X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=utilities%2Fovs-openflowd.c;h=f54eb355d30694b51cb48d6266b26784d26166d4;hb=d08a2e920631099d68f4efd4e72f6c14987520ce;hp=f096af199517f2c45da4b3d6061815db7e147a36;hpb=33d532dafaf36cafa1f65c8d4ed042e9ddef8078;p=openvswitch diff --git a/utilities/ovs-openflowd.c b/utilities/ovs-openflowd.c index f096af19..f54eb355 100644 --- a/utilities/ovs-openflowd.c +++ b/utilities/ovs-openflowd.c @@ -93,7 +93,6 @@ main(int argc, char *argv[]) struct ofproto *ofproto; struct ofsettings s; int error; - struct dpif *dpif; struct netflow_options nf_options; const char *port; bool exiting; @@ -103,7 +102,6 @@ main(int argc, char *argv[]) parse_options(argc, argv, &s); signal(SIGPIPE, SIG_IGN); - die_if_already_running(); daemonize_start(); /* Start listening for ovs-appctl requests. */ @@ -117,9 +115,10 @@ main(int argc, char *argv[]) VLOG_INFO("Open vSwitch version %s", VERSION BUILDNR); VLOG_INFO("OpenFlow protocol version 0x%02x", OFP_VERSION); - error = dpif_create_and_open(s.dp_name, s.dp_type, &dpif); + error = ofproto_create(s.dp_name, s.dp_type, NULL, NULL, &ofproto); if (error) { - ovs_fatal(error, "could not create datapath"); + VLOG_FATAL("could not initialize OpenFlow switch (%s)", + strerror(error)); } /* Add ports to the datapath if requested by the user. */ @@ -128,22 +127,20 @@ main(int argc, char *argv[]) error = netdev_open_default(port, &netdev); if (error) { - ovs_fatal(error, "%s: failed to open network device", port); + VLOG_FATAL("%s: failed to open network device (%s)", + port, strerror(error)); } - error = dpif_port_add(dpif, netdev, NULL); + error = ofproto_port_add(ofproto, netdev, NULL); if (error) { - ovs_fatal(error, "failed to add %s as a port", port); + VLOG_FATAL("failed to add %s as a port (%s)", + port, strerror(error)); } netdev_close(netdev); } - /* Start OpenFlow processing. */ - error = ofproto_create(s.dp_name, s.dp_type, NULL, NULL, &ofproto); - if (error) { - ovs_fatal(error, "could not initialize openflow switch"); - } + /* Configure OpenFlow switch. */ if (s.datapath_id) { ofproto_set_datapath_id(ofproto, s.datapath_id); } @@ -151,14 +148,15 @@ main(int argc, char *argv[]) s.serial_desc, s.dp_desc); error = ofproto_set_snoops(ofproto, &s.snoops); if (error) { - ovs_fatal(error, - "failed to configure controller snooping connections"); + VLOG_FATAL("failed to configure controller snooping connections (%s)", + strerror(error)); } memset(&nf_options, 0, sizeof nf_options); nf_options.collectors = s.netflow; error = ofproto_set_netflow(ofproto, &nf_options); if (error) { - ovs_fatal(error, "failed to configure NetFlow collectors"); + VLOG_FATAL("failed to configure NetFlow collectors (%s)", + strerror(error)); } ofproto_set_controllers(ofproto, s.controllers, s.n_controllers); ofproto_set_fail_mode(ofproto, s.fail_mode); @@ -169,7 +167,7 @@ main(int argc, char *argv[]) while (!exiting && (s.run_forever || ofproto_is_alive(ofproto))) { error = ofproto_run(ofproto); if (error) { - ovs_fatal(error, "unrecoverable datapath error"); + VLOG_FATAL("unrecoverable datapath error (%s)", strerror(error)); } unixctl_server_run(unixctl); dp_run(); @@ -185,7 +183,7 @@ main(int argc, char *argv[]) poll_block(); } - dpif_close(dpif); + ofproto_destroy(ofproto); return 0; } @@ -317,8 +315,8 @@ parse_options(int argc, char *argv[], struct ofsettings *s) switch (c) { case OPT_DATAPATH_ID: if (!dpid_from_string(optarg, &s->datapath_id)) { - ovs_fatal(0, "argument to --datapath-id must be " - "exactly 16 hex digits and may not be all-zero"); + VLOG_FATAL("argument to --datapath-id must be exactly 16 hex " + "digits and may not be all-zero"); } break; @@ -349,15 +347,15 @@ parse_options(int argc, char *argv[], struct ofsettings *s) || !strcmp(optarg, "secure")) { s->fail_mode = OFPROTO_FAIL_SECURE; } else { - ovs_fatal(0, "--fail argument must be \"standalone\" " - "or \"secure\""); + VLOG_FATAL("--fail argument must be \"standalone\" " + "or \"secure\""); } break; case OPT_INACTIVITY_PROBE: controller_opts.probe_interval = atoi(optarg); if (controller_opts.probe_interval < 5) { - ovs_fatal(0, "--inactivity-probe argument must be at least 5"); + VLOG_FATAL("--inactivity-probe argument must be at least 5"); } break; @@ -367,8 +365,8 @@ parse_options(int argc, char *argv[], struct ofsettings *s) } else { s->max_idle = atoi(optarg); if (s->max_idle < 1 || s->max_idle > 65535) { - ovs_fatal(0, "--max-idle argument must be between 1 and " - "65535 or the word 'permanent'"); + VLOG_FATAL("--max-idle argument must be between 1 and " + "65535 or the word 'permanent'"); } } break; @@ -376,7 +374,7 @@ parse_options(int argc, char *argv[], struct ofsettings *s) case OPT_MAX_BACKOFF: controller_opts.max_backoff = atoi(optarg); if (controller_opts.max_backoff < 1) { - ovs_fatal(0, "--max-backoff argument must be at least 1"); + VLOG_FATAL("--max-backoff argument must be at least 1"); } else if (controller_opts.max_backoff > 3600) { controller_opts.max_backoff = 3600; } @@ -386,7 +384,7 @@ parse_options(int argc, char *argv[], struct ofsettings *s) if (optarg) { controller_opts.rate_limit = atoi(optarg); if (controller_opts.rate_limit < 1) { - ovs_fatal(0, "--rate-limit argument must be at least 1"); + VLOG_FATAL("--rate-limit argument must be at least 1"); } } else { controller_opts.rate_limit = 1000; @@ -396,7 +394,7 @@ parse_options(int argc, char *argv[], struct ofsettings *s) case OPT_BURST_LIMIT: controller_opts.burst_limit = atoi(optarg); if (controller_opts.burst_limit < 1) { - ovs_fatal(0, "--burst-limit argument must be at least 1"); + VLOG_FATAL("--burst-limit argument must be at least 1"); } break; @@ -465,8 +463,8 @@ parse_options(int argc, char *argv[], struct ofsettings *s) argc -= optind; argv += optind; if (argc < 2) { - ovs_fatal(0, "need at least two non-option arguments; " - "use --help for usage"); + VLOG_FATAL("need at least two non-option arguments; " + "use --help for usage"); } /* Rate limiting. */