aboutsummaryrefslogtreecommitdiff
path: root/ofproto/pktbuf.c
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2012-01-12 15:48:19 -0800
committerBen Pfaff <blp@nicira.com>2012-01-12 15:54:25 -0800
commit90bf1e0732ac9b11dd51ca856b635cac1f0269c1 (patch)
tree05e5852229f3b6f85218a74f9401b3b765459599 /ofproto/pktbuf.c
parente25c55d28f30b537aa657797c41483a9bab59b93 (diff)
Better abstract OpenFlow error codes.
This commit switches from using the actual protocol values of error codes internally in Open vSwitch, to using abstract values that are translated to and from protocol values at message parsing and serialization time. I believe that this makes the code easier to read and to write. This is also one step along the way toward OpenFlow 1.1 support because OpenFlow 1.1 renumbered a bunch of error codes. Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'ofproto/pktbuf.c')
-rw-r--r--ofproto/pktbuf.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/ofproto/pktbuf.c b/ofproto/pktbuf.c
index 7cc96a5ce..23c01e032 100644
--- a/ofproto/pktbuf.c
+++ b/ofproto/pktbuf.c
@@ -155,8 +155,7 @@ pktbuf_get_null(void)
}
/* Attempts to retrieve a saved packet with the given 'id' from 'pb'. Returns
- * 0 if successful, otherwise an OpenFlow error code constructed with
- * ofp_mkerr().
+ * 0 if successful, otherwise an OpenFlow error code.
*
* On success, ordinarily stores the buffered packet in '*bufferp' and the
* datapath port number on which the packet was received in '*in_port'. The
@@ -170,13 +169,13 @@ pktbuf_get_null(void)
* headroom.
*
* On failure, stores NULL in in '*bufferp' and UINT16_MAX in '*in_port'. */
-int
+enum ofperr
pktbuf_retrieve(struct pktbuf *pb, uint32_t id, struct ofpbuf **bufferp,
uint16_t *in_port)
{
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 20);
struct packet *p;
- int error;
+ enum ofperr error;
if (id == UINT32_MAX) {
error = 0;
@@ -186,7 +185,7 @@ pktbuf_retrieve(struct pktbuf *pb, uint32_t id, struct ofpbuf **bufferp,
if (!pb) {
VLOG_WARN_RL(&rl, "attempt to send buffered packet via connection "
"without buffers");
- return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BUFFER_UNKNOWN);
+ return OFPERR_OFPBRC_BUFFER_UNKNOWN;
}
p = &pb->packets[id & PKTBUF_MASK];
@@ -203,13 +202,13 @@ pktbuf_retrieve(struct pktbuf *pb, uint32_t id, struct ofpbuf **bufferp,
} else {
COVERAGE_INC(pktbuf_reuse_error);
VLOG_WARN_RL(&rl, "attempt to reuse buffer %08"PRIx32, id);
- error = ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BUFFER_EMPTY);
+ error = OFPERR_OFPBRC_BUFFER_EMPTY;
}
} else if (id >> PKTBUF_BITS != COOKIE_MAX) {
COVERAGE_INC(pktbuf_buffer_unknown);
VLOG_WARN_RL(&rl, "cookie mismatch: %08"PRIx32" != %08"PRIx32,
id, (id & PKTBUF_MASK) | (p->cookie << PKTBUF_BITS));
- error = ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_BUFFER_UNKNOWN);
+ error = OFPERR_OFPBRC_BUFFER_UNKNOWN;
} else {
COVERAGE_INC(pktbuf_null_cookie);
VLOG_INFO_RL(&rl, "Received null cookie %08"PRIx32" (this is normal "