2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-13 14:07:02 +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:
Ben Pfaff
2013-11-22 11:42:42 -08:00
parent 229b900438
commit b2348f6d5a
2 changed files with 19 additions and 0 deletions

View File

@@ -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. */