[ovs-dev] [PATCH 03/32] ofp-errors: Add OFPET_FLOW_MONITOR_FAILED
Simon Horman
horms at verge.net.au
Mon Jun 9 03:53:59 UTC 2014
Add OFPET_FLOW_MONITOR_FAILED which is added in OpenFLow1.4.
Map the OFPERR_NXBRC_FM_* errors to the corresponding new OpenFlow errors.
This is a step towards supporting OpenFlow1.4 flow monitors.
Signed-off-by: Simon Horman <horms at verge.net.au>
---
lib/ofp-errors.h | 47 ++++++++++++++++++++++++++++++++---------------
lib/ofp-util.c | 2 +-
ofproto/connmgr.c | 2 +-
ofproto/ofproto.c | 2 +-
4 files changed, 35 insertions(+), 18 deletions(-)
diff --git a/lib/ofp-errors.h b/lib/ofp-errors.h
index 169112a..563c75a 100644
--- a/lib/ofp-errors.h
+++ b/lib/ofp-errors.h
@@ -156,21 +156,6 @@ enum ofperr {
* is not valid. */
OFPERR_NXBRC_BAD_REASON,
- /* NX1.0-1.1(1,517), NX1.2+(6). The 'id' in an NXST_FLOW_MONITOR request
- * is the same as an existing monitor id (or two monitors in the same
- * NXST_FLOW_MONITOR request have the same 'id'). */
- OFPERR_NXBRC_FM_DUPLICATE_ID,
-
- /* NX1.0-1.1(1,518), NX1.2+(7). The 'flags' in an NXST_FLOW_MONITOR
- * request either does not specify at least one of the NXFMF_ADD,
- * NXFMF_DELETE, or NXFMF_MODIFY flags, or specifies a flag bit that is not
- * defined. */
- OFPERR_NXBRC_FM_BAD_FLAGS,
-
- /* NX1.0-1.1(1,519), NX1.2+(8). The 'id' in an NXT_FLOW_MONITOR_CANCEL
- * request is not the id of any existing monitor. */
- OFPERR_NXBRC_FM_BAD_ID,
-
/* NX1.0-1.1(1,520), NX1.2+(9). The 'event' in an NXST_FLOW_MONITOR reply
* does not specify one of the NXFME_ABBREV, NXFME_ADD, NXFME_DELETE, or
* NXFME_MODIFY. */
@@ -637,6 +622,38 @@ enum ofperr {
/* OF1.4+(17,15). Bundle is locking the resource. */
OFPERR_OFPBFC_BUNDLE_IN_PROGRESS,
+/* ## ------------------------- ## */
+/* ## OFPET_FLOW_MONITOR_FAILED ## */
+/* ## ------------------------- ## */
+
+ /* OF1.4+(16,0). Unspecified error. */
+ OFPERR_OFPMOFC_UNKNOWN,
+
+ /* NX1.0-1.1(1,517), NX1.2-1.3(6), OF1.4+(16,1). Monitor not added
+ * because a Monitor ADD attempted to replace an existing Monitor. */
+ OFPERR_OFPMOFC_MONITOR_EXISTS,
+
+ /* OF1.4+(16,2). Monitor not added because
+ * Monitor specified is invalid. */
+ OFPERR_OFPMOFC_INVALID_MONITOR,
+
+ /* NX1.0-1.1(1,519), NX1.2-1.3(8), OF1.4+(16,3). Monitor not modified
+ * because a Monitor MODIFY attempted to modify a non-existent Monitor. */
+ OFPERR_OFPMOFC_UNKNOWN_MONITOR,
+
+ /* OF1.4+(16,4). Unsupported or unknown command. */
+ OFPERR_OFPMOFC_BAD_COMMAND,
+
+ /* NX1.0-1.1(1,518), NX1.2-1.3(7), OF1.4+(16,5). Flag configuration
+ * unsupported. */
+ OFPERR_OFPMOFC_BAD_FLAGS,
+
+ /* OF1.4+(16,6). Specified table does not exist. */
+ OFPERR_OFPMOFC_BAD_TABLE_ID,
+
+ /* OF1.4+(16,7). Error in output port/group. */
+ OFPERR_OFPMOFC_BAD_OUT,
+
/* ## ------------------ ## */
/* ## OFPET_EXPERIMENTER ## */
/* ## ------------------ ## */
diff --git a/lib/ofp-util.c b/lib/ofp-util.c
index bcefc9a..181a464 100644
--- a/lib/ofp-util.c
+++ b/lib/ofp-util.c
@@ -5262,7 +5262,7 @@ ofputil_decode_flow_monitor_request(struct ofputil_flow_monitor_request *rq,
| NXFMF_MODIFY | NXFMF_ACTIONS | NXFMF_OWN)) {
VLOG_WARN_RL(&bad_ofmsg_rl, "NXST_FLOW_MONITOR has bad flags %#"PRIx16,
flags);
- return OFPERR_NXBRC_FM_BAD_FLAGS;
+ return OFPERR_OFPMOFC_BAD_FLAGS;
}
if (!is_all_zeros(nfmr->zeros, sizeof nfmr->zeros)) {
diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c
index 9561c45..317e3f4 100644
--- a/ofproto/connmgr.c
+++ b/ofproto/connmgr.c
@@ -2101,7 +2101,7 @@ ofmonitor_create(const struct ofputil_flow_monitor_request *request,
m = ofmonitor_lookup(ofconn, request->id);
if (m) {
- return OFPERR_NXBRC_FM_DUPLICATE_ID;
+ return OFPERR_OFPMOFC_MONITOR_EXISTS;
}
m = xmalloc(sizeof *m);
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 4a1ad8c..b145a23 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -4981,7 +4981,7 @@ handle_flow_monitor_cancel(struct ofconn *ofconn, const struct ofp_header *oh)
ofmonitor_destroy(m);
error = 0;
} else {
- error = OFPERR_NXBRC_FM_BAD_ID;
+ error = OFPERR_OFPMOFC_UNKNOWN_MONITOR;
}
ovs_mutex_unlock(&ofproto_mutex);
--
2.0.0.rc2
More information about the dev
mailing list