/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <config.h>
#include "ofpbuf.h"
-#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include "dynamic-string.h"
b->allocated = allocated;
b->source = source;
b->size = 0;
- b->l2 = b->l3 = b->l4 = b->l7 = NULL;
+ b->l2 = b->l2_5 = b->l3 = b->l4 = b->l7 = NULL;
list_poison(&b->list_node);
b->private_p = NULL;
}
*
* '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
- * for 32- or 64-bit data. OFPBUF_STACK_BUFFER is a convenient way to do so.
+ * for 32- or 64-bit data.
*
* An ofpbuf operation that requires reallocating data will assert-fail if this
* function was used to initialize it. Thus, one need not call ofpbuf_uninit()
*
* '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
- * for 32- or 64-bit data. OFPBUF_STACK_BUFFER is a convenient way to do so.
+ * for 32- or 64-bit data.
*
* An ofpbuf operation that requires reallocating data will copy the provided
* buffer into a malloc()'d buffer. Thus, it is wise to call ofpbuf_uninit()
void
ofpbuf_use_const(struct ofpbuf *b, const void *data, size_t size)
{
- ofpbuf_use__(b, (void *) data, size, OFPBUF_STACK);
+ ofpbuf_use__(b, CONST_CAST(void *, data), size, OFPBUF_STACK);
b->size = size;
}
if (buffer->l2) {
new_buffer->l2 = (char *) buffer->l2 + data_delta;
}
+ if (buffer->l2_5) {
+ new_buffer->l2_5 = (char *) buffer->l2_5 + data_delta;
+ }
if (buffer->l3) {
new_buffer->l3 = (char *) buffer->l3 + data_delta;
}
if (b->l2) {
b->l2 = (char *) b->l2 + data_delta;
}
+ if (b->l2_5) {
+ b->l2_5 = (char *) b->l2_5 + data_delta;
+ }
if (b->l3) {
b->l3 = (char *) b->l3 + data_delta;
}
if (n) {
*n = b->size - initial_size;
}
- return (char *) s;
+ return CONST_CAST(char *, s);
}
ofpbuf_put(b, &byte, 1);
void
ofpbuf_reserve(struct ofpbuf *b, size_t size)
{
- assert(!b->size);
+ ovs_assert(!b->size);
ofpbuf_prealloc_tailroom(b, size);
b->data = (char*)b->data + size;
}
void *
ofpbuf_at_assert(const struct ofpbuf *b, size_t offset, size_t size)
{
- assert(offset + size <= b->size);
+ ovs_assert(offset + size <= b->size);
return ((char *) b->data) + offset;
}
ofpbuf_pull(struct ofpbuf *b, size_t size)
{
void *data = b->data;
- assert(b->size >= size);
+ ovs_assert(b->size >= size);
b->data = (char*)b->data + size;
b->size -= size;
return data;