[ovs-dev] [PATCH 11/17] lib: Add helpers for OpenFlow version command line options

Simon Horman horms at verge.net.au
Thu Oct 4 02:41:26 UTC 2012


Signed-off-by: Simon Horman <horms at verge.net.au>
---
 lib/automake.mk       |    3 +++
 lib/ofp-version-opt.c |   32 ++++++++++++++++++++++++++++++++
 lib/ofp-version-opt.h |   39 +++++++++++++++++++++++++++++++++++++++
 lib/ofp-version.man   |   23 +++++++++++++++++++++++
 4 files changed, 97 insertions(+)
 create mode 100644 lib/ofp-version-opt.c
 create mode 100644 lib/ofp-version-opt.h
 create mode 100644 lib/ofp-version.man

diff --git a/lib/automake.mk b/lib/automake.mk
index 94b86f6..1f90419 100644
--- a/lib/automake.mk
+++ b/lib/automake.mk
@@ -111,6 +111,8 @@ lib_libopenvswitch_a_SOURCES = \
 	lib/ofp-util.c \
 	lib/ofp-util.def \
 	lib/ofp-util.h \
+	lib/ofp-version-opt.h \
+	lib/ofp-version-opt.c \
 	lib/ofpbuf.c \
 	lib/ofpbuf.h \
 	lib/ovsdb-data.c \
@@ -282,6 +284,7 @@ MAN_FRAGMENTS += \
 	lib/daemon-syn.man \
 	lib/leak-checker.man \
 	lib/memory-unixctl.man \
+	lib/ofp-version.man \
 	lib/ovs.tmac \
 	lib/ssl-bootstrap.man \
 	lib/ssl-bootstrap-syn.man \
diff --git a/lib/ofp-version-opt.c b/lib/ofp-version-opt.c
new file mode 100644
index 0000000..ec5d3cc
--- /dev/null
+++ b/lib/ofp-version-opt.c
@@ -0,0 +1,32 @@
+#include <config.h>
+#include "ofp-util.h"
+#include "ofp-version-opt.h"
+#include "vlog.h"
+
+VLOG_DEFINE_THIS_MODULE(ofp_version);
+
+enum ofp_version min_ofp_version = DEFAULT_MIN_OFP_VERSION;
+enum ofp_version max_ofp_version = DEFAULT_MAX_OFP_VERSION;
+
+void
+ofp_version_check(void)
+{
+     if (min_ofp_version > max_ofp_version) {
+        VLOG_FATAL("maximum Open Flow version must not be less than the "
+                   "minimum Open Flow version");
+     }
+}
+
+void
+ofp_version_usage(void)
+{
+    printf(
+        "\nOpen Flow Version options:\n"
+        "  -V, --version           display version information\n"
+        "  --min-ofp-version       minimum ofp version\n"
+        "                          (default: %s)\n"
+        "  --max-ofp-version       maximum ofp version\n"
+        "                          (default: %s)\n",
+        ofputil_version_to_string(DEFAULT_MIN_OFP_VERSION),
+        ofputil_version_to_string(DEFAULT_MAX_OFP_VERSION));
+}
diff --git a/lib/ofp-version-opt.h b/lib/ofp-version-opt.h
new file mode 100644
index 0000000..f9a1703
--- /dev/null
+++ b/lib/ofp-version-opt.h
@@ -0,0 +1,39 @@
+#ifndef OFP_VERSION_H
+#define OFP_VERSION_H 1
+
+#include <openflow/openflow-common.h>
+#include "util.h"
+#include "ofp-util.h"
+
+#define OFP_VERSION_OPTION_ENUMS                \
+    OPT_MIN_OFP_VERSION,                        \
+    OPT_MAX_OFP_VERSION
+
+#define OFP_VERSION_LONG_OPTIONS                                           \
+        {"version",     no_argument, NULL, 'V'},                           \
+        {"min-ofp-version", required_argument, NULL, OPT_MIN_OFP_VERSION}, \
+        {"max-ofp-version", required_argument, NULL, OPT_MAX_OFP_VERSION}
+
+#define OFP_VERSION_OPTION_HANDLERS                                 \
+        case 'V':                                                   \
+            ovs_print_version(OFP10_VERSION, OFP12_VERSION);        \
+            exit(EXIT_SUCCESS);                                     \
+                                                                    \
+        case OPT_MIN_OFP_VERSION:                                   \
+            min_ofp_version = ofputil_version_from_string(optarg);  \
+            break;                                                  \
+                                                                    \
+        case OPT_MAX_OFP_VERSION:                                   \
+            max_ofp_version = ofputil_version_from_string(optarg);  \
+            break;
+
+#define DEFAULT_MIN_OFP_VERSION OFP10_VERSION
+#define DEFAULT_MAX_OFP_VERSION OFP10_VERSION
+
+extern enum ofp_version min_ofp_version;
+extern enum ofp_version max_ofp_version;
+
+void ofp_version_check(void);
+void ofp_version_usage(void);
+
+#endif
diff --git a/lib/ofp-version.man b/lib/ofp-version.man
new file mode 100644
index 0000000..a25d45e
--- /dev/null
+++ b/lib/ofp-version.man
@@ -0,0 +1,23 @@
+.IP "\fB\-\-min\-ofp-version=\fIversion\fR"
+.IQ "\fB\-\-max\-ofp-version=\fIversion\fR"
+\fBovs\-vswitchd\fR supports the following OpenFlow protocol versions.
+-\-min\-ofp-version and -\-max\-ofp-version set upper and lower bounds
+on the version that may be negotiated when establishing a session. By
+default both -\-min\-ofp-version and -\-max\-ofp-version are set to
+"\fBOpenFlow10\fR".
+.RS
+.IP \(bu
+\fBOpenFlow10\fR
+.
+.IP \(bu
+\fBOpenFlow11\fR (Experimental Implementation)
+.
+.IP \(bu
+\fBOpenFlow12\fR (Experimental Implementation)
+.RE
+.
+.IP
+N.B: Currently only \fBOpenFlow10\fR is considered to be ready
+for general consumption. The option to enable \fBOpenFlow11\fR and
+\fBOpenFlow12\fR is currently provided for development purposes.
+.
-- 
1.7.10.4




More information about the dev mailing list