projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ofproto-dpif: Fix small typo in comment.
[openvswitch]
/
ofproto
/
pktbuf.c
diff --git
a/ofproto/pktbuf.c
b/ofproto/pktbuf.c
index 14781c11d3c979e23508e039bfe9da365fcdbc26..fc4c66ca102e48e2dad99c71ac32d83ac4665a09 100644
(file)
--- a/
ofproto/pktbuf.c
+++ b/
ofproto/pktbuf.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.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-28,6
+28,11
@@
VLOG_DEFINE_THIS_MODULE(pktbuf);
VLOG_DEFINE_THIS_MODULE(pktbuf);
+COVERAGE_DEFINE(pktbuf_buffer_unknown);
+COVERAGE_DEFINE(pktbuf_null_cookie);
+COVERAGE_DEFINE(pktbuf_retrieved);
+COVERAGE_DEFINE(pktbuf_reuse_error);
+
/* Buffers are identified by a 32-bit opaque ID. We divide the ID
* into a buffer number (low bits) and a cookie (high bits). The buffer number
* is an index into an array of buffers. The cookie distinguishes between
/* Buffers are identified by a 32-bit opaque ID. We divide the ID
* into a buffer number (low bits) and a cookie (high bits). The buffer number
* is an index into an array of buffers. The cookie distinguishes between
@@
-156,6
+161,8
@@
pktbuf_get_null(void)
* identifies a "null" packet buffer (created with pktbuf_get_null()), stores
* NULL in '*bufferp' and UINT16_max in '*in_port'.
*
* identifies a "null" packet buffer (created with pktbuf_get_null()), stores
* NULL in '*bufferp' and UINT16_max in '*in_port'.
*
+ * 'in_port' may be NULL if the input port is not of interest.
+ *
* A returned packet will have at least sizeof(struct ofp_packet_in) bytes of
* headroom.
*
* A returned packet will have at least sizeof(struct ofp_packet_in) bytes of
* headroom.
*
@@
-168,6
+175,11
@@
pktbuf_retrieve(struct pktbuf *pb, uint32_t id, struct ofpbuf **bufferp,
struct packet *p;
int error;
struct packet *p;
int error;
+ if (id == UINT32_MAX) {
+ error = 0;
+ goto error;
+ }
+
if (!pb) {
VLOG_WARN_RL(&rl, "attempt to send buffered packet via connection "
"without buffers");
if (!pb) {
VLOG_WARN_RL(&rl, "attempt to send buffered packet via connection "
"without buffers");
@@
-179,7
+191,9
@@
pktbuf_retrieve(struct pktbuf *pb, uint32_t id, struct ofpbuf **bufferp,
struct ofpbuf *buffer = p->buffer;
if (buffer) {
*bufferp = buffer;
struct ofpbuf *buffer = p->buffer;
if (buffer) {
*bufferp = buffer;
- *in_port = p->in_port;
+ if (in_port) {
+ *in_port = p->in_port;
+ }
p->buffer = NULL;
COVERAGE_INC(pktbuf_retrieved);
return 0;
p->buffer = NULL;
COVERAGE_INC(pktbuf_retrieved);
return 0;
@@
-199,8
+213,11
@@
pktbuf_retrieve(struct pktbuf *pb, uint32_t id, struct ofpbuf **bufferp,
"if the switch was recently in fail-open mode)", id);
error = 0;
}
"if the switch was recently in fail-open mode)", id);
error = 0;
}
+error:
*bufferp = NULL;
*bufferp = NULL;
- *in_port = UINT16_MAX;
+ if (in_port) {
+ *in_port = UINT16_MAX;
+ }
return error;
}
return error;
}