projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
datapath: Use consume_skb() on non-errors.
[openvswitch]
/
lib
/
ofpbuf.c
diff --git
a/lib/ofpbuf.c
b/lib/ofpbuf.c
index 7e9653600c2c881bbc67e657fe08fb6ac494733a..38874816c1f88679548bb1581b53547c42b5e7b1 100644
(file)
--- a/
lib/ofpbuf.c
+++ b/
lib/ofpbuf.c
@@
-47,9
+47,9
@@
ofpbuf_use(struct ofpbuf *b, void *base, size_t allocated)
/* Initializes 'b' as an empty ofpbuf that contains the 'allocated' bytes of
* memory starting at 'base'. 'base' should point to a buffer on the stack.
/* Initializes 'b' as an empty ofpbuf that contains the 'allocated' bytes of
* memory starting at 'base'. 'base' should point to a buffer on the stack.
- *
If 'b' is resized, new memory will be allocated with malloc() and 'base'
- *
will not be freed. This is useful when a small stack-allocated buffer
is
- *
normally appropriate but sometimes it must be expanded
.
+ *
+ *
An ofpbuf operation that requires reallocating data will assert-fail if th
is
+ *
function was used to initialize it
.
*
* 'base' should be appropriately aligned. Using an array of uint32_t or
* uint64_t for the buffer is a reasonable way to ensure appropriate alignment
*
* 'base' should be appropriately aligned. Using an array of uint32_t or
* uint64_t for the buffer is a reasonable way to ensure appropriate alignment
@@
-74,7
+74,7
@@
ofpbuf_use_stack(struct ofpbuf *b, void *base, size_t allocated)
void
ofpbuf_use_const(struct ofpbuf *b, const void *data, size_t size)
{
void
ofpbuf_use_const(struct ofpbuf *b, const void *data, size_t size)
{
- ofpbuf_use__(b, (void *) data, size, OFPBUF_
CONST
);
+ ofpbuf_use__(b, (void *) data, size, OFPBUF_
STACK
);
b->size = size;
}
b->size = size;
}
@@
-225,12
+225,6
@@
ofpbuf_resize__(struct ofpbuf *b, size_t new_headroom, size_t new_tailroom)
break;
case OFPBUF_STACK:
break;
case OFPBUF_STACK:
- new_base = xmalloc(new_allocated);
- ofpbuf_copy__(b, new_base, new_headroom, new_tailroom);
- b->source = OFPBUF_MALLOC;
- break;
-
- case OFPBUF_CONST:
NOT_REACHED();
default:
NOT_REACHED();
default:
@@
-295,6
+289,16
@@
ofpbuf_trim(struct ofpbuf *b)
}
}
}
}
+/* If 'b' is shorter than 'length' bytes, pads its tail out with zeros to that
+ * length. */
+void
+ofpbuf_padto(struct ofpbuf *b, size_t length)
+{
+ if (b->size < length) {
+ ofpbuf_put_zeros(b, length - b->size);
+ }
+}
+
/* Appends 'size' bytes of data to the tail end of 'b', reallocating and
* copying its data if necessary. Returns a pointer to the first byte of the
* new data, which is left uninitialized. */
/* Appends 'size' bytes of data to the tail end of 'b', reallocating and
* copying its data if necessary. Returns a pointer to the first byte of the
* new data, which is left uninitialized. */