Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Handle buffer alloc failure in vlib_buffer_add_data
[vpp.git]
/
src
/
vlib
/
buffer.c
diff --git
a/src/vlib/buffer.c
b/src/vlib/buffer.c
index
d024aba
..
5370d50
100644
(file)
--- a/
src/vlib/buffer.c
+++ b/
src/vlib/buffer.c
@@
-705,16
+705,16
@@
vlib_packet_template_get_packet (vlib_main_t * vm,
}
/* Append given data to end of buffer, possibly allocating new buffers. */
}
/* Append given data to end of buffer, possibly allocating new buffers. */
-u32
+int
vlib_buffer_add_data (vlib_main_t * vm,
vlib_buffer_free_list_index_t free_list_index,
vlib_buffer_add_data (vlib_main_t * vm,
vlib_buffer_free_list_index_t free_list_index,
- u32 buffer_index, void *data, u32 n_data_bytes)
+ u32
*
buffer_index, void *data, u32 n_data_bytes)
{
u32 n_buffer_bytes, n_left, n_left_this_buffer, bi;
vlib_buffer_t *b;
void *d;
{
u32 n_buffer_bytes, n_left, n_left_this_buffer, bi;
vlib_buffer_t *b;
void *d;
- bi = buffer_index;
+ bi =
*
buffer_index;
if (bi == ~0
&& 1 != vlib_buffer_alloc_from_free_list (vm, &bi, 1, free_list_index))
goto out_of_buffers;
if (bi == ~0
&& 1 != vlib_buffer_alloc_from_free_list (vm, &bi, 1, free_list_index))
goto out_of_buffers;
@@
-756,11
+756,12
@@
vlib_buffer_add_data (vlib_main_t * vm,
b = vlib_get_buffer (vm, b->next_buffer);
}
b = vlib_get_buffer (vm, b->next_buffer);
}
- return bi;
+ *buffer_index = bi;
+ return 0;
out_of_buffers:
out_of_buffers:
- clib_
error
("out of buffers");
- return
bi
;
+ clib_
warning
("out of buffers");
+ return
1
;
}
u16
}
u16