X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=utilities%2Fovs-controller.c;h=27c8e4731c7e326ef56042c739ae35c136375fad;hb=2c360fbb2777fba6d35599e4b53287e2ecb26fa9;hp=1be84f78706ffd688d16180b9cf7e556f1793466;hpb=d98e60075528c3065ad453f7add4b30f22edcde3;p=openvswitch diff --git a/utilities/ovs-controller.c b/utilities/ovs-controller.c index 1be84f78..27c8e473 100644 --- a/utilities/ovs-controller.c +++ b/utilities/ovs-controller.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -77,9 +77,9 @@ static uint32_t default_queue = UINT32_MAX; /* -Q, --port-queue: map from port name to port number (cast to void *). */ static struct shash port_queues = SHASH_INITIALIZER(&port_queues); -/* --with-flows: File with flows to send to switch, or null to not load - * any default flows. */ -static struct ovs_queue default_flows = OVS_QUEUE_INITIALIZER; +/* --with-flows: Flows to send to switch, or an empty list not to send any + * default flows. */ +static struct list default_flows = LIST_INITIALIZER(&default_flows); /* --unixctl: Name of unixctl socket, or null to use the default. */ static char *unixctl_path = NULL; @@ -139,7 +139,6 @@ main(int argc, char *argv[]) ovs_fatal(0, "no active or passive switch connections"); } - die_if_already_running(); daemonize_start(); retval = unixctl_server_create(unixctl_path, &unixctl); @@ -228,8 +227,9 @@ new_switch(struct switch_ *sw, struct vconn *vconn) cfg.mode = (action_normal ? LSW_NORMAL : learn_macs ? LSW_LEARN : LSW_FLOOD); + cfg.exact_flows = exact_flows; cfg.max_idle = set_up_flows ? max_idle : -1; - cfg.default_flows = default_flows.head; + cfg.default_flows = &default_flows; cfg.default_queue = default_queue; cfg.port_queues = &port_queues; sw->lswitch = lswitch_create(sw->rconn, &cfg); @@ -260,7 +260,7 @@ do_switching(struct switch_ *sw) static void read_flow_file(const char *name) { - struct ofpbuf *b; + enum nx_flow_format flow_format; FILE *stream; stream = fopen(optarg, "r"); @@ -268,8 +268,10 @@ read_flow_file(const char *name) ovs_fatal(errno, "%s: open", name); } - while ((b = parse_ofp_add_flow_file(stream)) != NULL) { - queue_push_tail(&default_flows, b); + flow_format = NXFF_OPENFLOW10; + while (parse_ofp_flow_mod_file(&default_flows, &flow_format, stream, + OFPFC_ADD)) { + continue; } fclose(stream); @@ -305,7 +307,8 @@ parse_options(int argc, char *argv[]) OPT_MUTE, OPT_WITH_FLOWS, OPT_UNIXCTL, - VLOG_OPTION_ENUMS + VLOG_OPTION_ENUMS, + DAEMON_OPTION_ENUMS }; static struct option long_options[] = { {"hub", no_argument, 0, 'H'},