mirror of
https://github.com/openvswitch/ovs
synced 2025-10-15 14:17:18 +00:00
ofpbuf: New function ofpbuf_shift().
An upcoming commit will add the first user. Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
18
lib/ofpbuf.c
18
lib/ofpbuf.c
@@ -359,6 +359,24 @@ ofpbuf_padto(struct ofpbuf *b, size_t length)
|
||||
}
|
||||
}
|
||||
|
||||
/* Shifts all of the data within the allocated space in 'b' by 'delta' bytes.
|
||||
* For example, a 'delta' of 1 would cause each byte of data to move one byte
|
||||
* forward (from address 'p' to 'p+1'), and a 'delta' of -1 would cause each
|
||||
* byte to move one byte backward (from 'p' to 'p-1'). */
|
||||
void
|
||||
ofpbuf_shift(struct ofpbuf *b, int delta)
|
||||
{
|
||||
ovs_assert(delta > 0 ? delta <= ofpbuf_tailroom(b)
|
||||
: delta < 0 ? -delta <= ofpbuf_headroom(b)
|
||||
: true);
|
||||
|
||||
if (delta != 0) {
|
||||
char *dst = (char *) b->data + delta;
|
||||
memmove(dst, b->data, b->size);
|
||||
b->data = dst;
|
||||
}
|
||||
}
|
||||
|
||||
/* 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. */
|
||||
|
@@ -94,6 +94,7 @@ void ofpbuf_prealloc_headroom(struct ofpbuf *, size_t);
|
||||
void ofpbuf_prealloc_tailroom(struct ofpbuf *, size_t);
|
||||
void ofpbuf_trim(struct ofpbuf *);
|
||||
void ofpbuf_padto(struct ofpbuf *, size_t);
|
||||
void ofpbuf_shift(struct ofpbuf *, int);
|
||||
|
||||
void ofpbuf_clear(struct ofpbuf *);
|
||||
void *ofpbuf_pull(struct ofpbuf *, size_t);
|
||||
|
Reference in New Issue
Block a user