diff options
| author | Ben Pfaff <blp@nicira.com> | 2011-04-11 15:08:19 -0700 |
|---|---|---|
| committer | Ben Pfaff <blp@nicira.com> | 2011-05-11 12:26:08 -0700 |
| commit | 63d347ce1bb0019713fcae184ac574335d717df0 (patch) | |
| tree | 47765a7982dcfe961828cbb78a6960cd31df6447 /utilities | |
| parent | 54ed8a5d74773e75b79490dc65e65b7498a14fb7 (diff) | |
| download | openvswitch-63d347ce1bb0019713fcae184ac574335d717df0.tar.gz | |
ofproto: Improve abstraction by adding function ofproto_parse_name().
This means that ovs-ofctl and ovs-openflowd don't have to use the dpif
layer at all, making it easier to change the ofproto implementation.
Diffstat (limited to 'utilities')
| -rw-r--r-- | utilities/automake.mk | 5 | ||||
| -rw-r--r-- | utilities/ovs-ofctl.c | 37 | ||||
| -rw-r--r-- | utilities/ovs-openflowd.c | 3 |
3 files changed, 17 insertions, 28 deletions
diff --git a/utilities/automake.mk b/utilities/automake.mk index fc3a19de6..cb06f5a3e 100644 --- a/utilities/automake.mk +++ b/utilities/automake.mk @@ -78,7 +78,10 @@ utilities_ovs_dpctl_SOURCES = utilities/ovs-dpctl.c utilities_ovs_dpctl_LDADD = lib/libopenvswitch.a utilities_ovs_ofctl_SOURCES = utilities/ovs-ofctl.c -utilities_ovs_ofctl_LDADD = lib/libopenvswitch.a $(SSL_LIBS) +utilities_ovs_ofctl_LDADD = \ + ofproto/libofproto.a \ + lib/libopenvswitch.a \ + $(SSL_LIBS) utilities_ovs_openflowd_SOURCES = utilities/ovs-openflowd.c utilities_ovs_openflowd_LDADD = \ diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c index bc8cc6bd8..660fc3aed 100644 --- a/utilities/ovs-ofctl.c +++ b/utilities/ovs-ofctl.c @@ -32,7 +32,6 @@ #include "command-line.h" #include "compiler.h" #include "dirs.h" -#include "dpif.h" #include "dynamic-string.h" #include "netlink.h" #include "nx-match.h" @@ -41,6 +40,7 @@ #include "ofp-print.h" #include "ofp-util.h" #include "ofpbuf.h" +#include "ofproto/ofproto.h" #include "openflow/nicira-ext.h" #include "openflow/openflow.h" #include "random.h" @@ -220,12 +220,17 @@ static void open_vconn__(const char *name, const char *default_suffix, struct vconn **vconnp) { - struct dpif *dpif; + char *datapath_name, *datapath_type, *socket_name; + char *bridge_path; struct stat s; - char *bridge_path, *datapath_name, *datapath_type; bridge_path = xasprintf("%s/%s.%s", ovs_rundir(), name, default_suffix); - dp_parse_name(name, &datapath_name, &datapath_type); + + ofproto_parse_name(name, &datapath_name, &datapath_type); + socket_name = xasprintf("%s/%s.%s", + ovs_rundir(), datapath_name, default_suffix); + free(datapath_name); + free(datapath_type); if (strstr(name, ":")) { run(vconn_open_block(name, OFP_VERSION, vconnp), @@ -234,36 +239,18 @@ open_vconn__(const char *name, const char *default_suffix, open_vconn_socket(name, vconnp); } else if (!stat(bridge_path, &s) && S_ISSOCK(s.st_mode)) { open_vconn_socket(bridge_path, vconnp); - } else if (!dpif_open(datapath_name, datapath_type, &dpif)) { - char dpif_name[IF_NAMESIZE + 1]; - char *socket_name; - - run(dpif_port_get_name(dpif, ODPP_LOCAL, dpif_name, sizeof dpif_name), - "obtaining name of %s", dpif_name); - dpif_close(dpif); - if (strcmp(dpif_name, name)) { - VLOG_DBG("datapath %s is named %s", name, dpif_name); - } - - socket_name = xasprintf("%s/%s.%s", - ovs_rundir(), dpif_name, default_suffix); - if (stat(socket_name, &s)) { - ovs_fatal(errno, "cannot connect to %s: stat failed on %s", - name, socket_name); - } else if (!S_ISSOCK(s.st_mode)) { + } else if (!stat(socket_name, &s)) { + if (!S_ISSOCK(s.st_mode)) { ovs_fatal(0, "cannot connect to %s: %s is not a socket", name, socket_name); } - open_vconn_socket(socket_name, vconnp); - free(socket_name); } else { ovs_fatal(0, "%s is not a valid connection method", name); } - free(datapath_name); - free(datapath_type); free(bridge_path); + free(socket_name); } static void diff --git a/utilities/ovs-openflowd.c b/utilities/ovs-openflowd.c index 4e8303672..2d2446e13 100644 --- a/utilities/ovs-openflowd.c +++ b/utilities/ovs-openflowd.c @@ -28,7 +28,6 @@ #include "compiler.h" #include "daemon.h" #include "dirs.h" -#include "dpif.h" #include "dummy.h" #include "leak-checker.h" #include "list.h" @@ -472,7 +471,7 @@ parse_options(int argc, char *argv[], struct ofsettings *s) } /* Local vconns. */ - dp_parse_name(argv[0], &s->dp_name, &s->dp_type); + ofproto_parse_name(argv[0], &s->dp_name, &s->dp_type); /* Figure out controller names. */ s->run_forever = false; |
