【OVS2.5.0源码分析】nlattr数据结构分析

本文主要探讨OVS2.5.0版本中nlattr数据结构的应用,揭示其在网络操作中的关键作用。nlattr虽然结构简单,但作为action的数据格式定义,它并不直接存储数据,而是用于规范数据存储方式。OVS通过skb来承载实际的数据内容,并借助相关函数如nla_len等进行处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从nlattr类型定义来看,是非常简单,但是OVS使用该数据结构来定义action,nlattr自身是不存储数据,而使用来定义数据格式的,OVS也会使用skb来存储真实数据。

nlattr数据结构定义

struct nlattr {
    uint16_t nla_len;     //数据长度
    uint16_t nla_type;    //数据类型
};
使用nlattr构造的数据结构如下图所示:

相关函数的定义如下:

nla_len函数

static inline int nla_len(const struct nlattr *nla)   //返回数据的长度
{
	return nla->nla_len - NLA_HDRLEN;     //数据总长度减去头长度
}
nla_data函数

static inline void *nla_data(const struct nlattr *nla)   //返回数据的首地址
{
	return (char *) nla + NLA_HDRLEN;   //当前指针加上头长度
}
nla_next函数


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值