OVS中ofpbuf结构体应用较多,例如action保存等,其本质是支持数据自动伸缩的连续内存。
1、数据结构定义
struct ofpbuf {
void *base; /* First byte of allocated space. */
void *data; /* First byte actually in use. */
uint32_t size; /* Number of bytes in use. */
uint32_t allocated; /* Number of bytes allocated. */
void *header; /* OpenFlow header. */
void *msg; /* message's body */
struct ovs_list list_node; /* Private list element for use by owner. */
enum ofpbuf_source source; /* Source of memory allocated as 'base'. */
};
2、关键成员数据和宏定义之间的关系
3、put函数
put系列函数,ofpbuf数据向后生长,通过增加siz