LwIP之数据包管理

151 篇文章 3 订阅 ¥299.90 ¥99.00

先看一下数据包结构体pbuf

/* pbuf结构体 */
struct pbuf {
  struct pbuf *next;	//用于将pbuf连接成链表
  void *payload;		//数据指针
  u16_t tot_len;		//当前以及后续所有pbuf包含的数据总长度
  u16_t len;  			//当前pbuf的数据长度
  u8_t type;			//pbuf类型
  u8_t flags;			//状态位
  u16_t ref;			//pbuf被引用的次数
};

pbuf中有个成员type,表示pbuf的类型。pbuf共有四种类型PBUF_REF、PBUF_ROM、PBUF_POOL和PBUF_RAM。

/* pbuf类型 */
typedef enum {
  PBUF_RAM, 		/* pbuf和数据来自连续的内存堆 */
  PBUF_ROM, 		/* pbuf来自内存池MEMP_PBUF,数据来自ROM */
  PBUF_REF, 		/* pbuf来自内存池MEMP_PBUF,数据来自RAM */
  PBUF_POOL 		/* pbuf和数据来自一个或多个内存池MEMP_PBUF_POOL */
} pbuf_type;

 

 

再看一下pbuf_layer,表示层类型,上层数据包需要为下层预留足够空间用来填充头部

/* pbuf分层类型 */
typedef enum {
  PBUF_TRANSPORT,	//传输层
  PBUF_IP,					//网络层
  PBUF_LINK,				//链路层
  PBUF_RAW				//原始层
} pbuf_layer;

 

下面看一下申请pbuf

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值