linux-510147版本中对接口xfrm_nlmsg_put_compat的执行过程
在Linux内核5.10.147版本中,xfrm_nlmsg_put_compat函数用于向Netlink消息中添加兼容的XFRM扩展头部。
下面是xfrm_nlmsg_put_compat函数的执行过程:
-
首先,该函数会检查提供的
ext_len参数是否大于0,以及是否小于等于XFRMA_MAX。如果不是,则返回一个负值错误。 -
接下来,函数会根据
ext_len参数计算需要的总长度,并检查是否超过了Netlink消息的最大长度(XFRM_MSG_ALIGN(XFRM_ALIGN_TO(NLMSG_HDRLEN) + ext_len))。如果超过了最大长度,则返回一个负值错误。 -
然后,函数会调用
nlmsg_reserve函数为Netlink消息保留足够的空间。如果失败,则返回一个负值错误。 -
接着,函数会将提供的
ext_len参数存储在消息头部的nlmsg_len字段中。 -
然后,函数会将消息类型设置为
XFRM_MSG_NEWSA。 -
接着,函数会在消息中添加一个兼容的XFRM扩展头部。首先,它会调用
nla_reserve函数为扩展头部保留足够的空间。然后,它会将扩展头部的类型设置为XFRMA_ALG_CRYPT,并将其存储在消息中。 -
最后,函数会返回一个指向扩展头部的指针,供调用者使用。
总结起来,xfrm_nlmsg_put_compat函数的执行过程主要包括计算总长度、保留空间、设置消息类型和添加扩展头部
原文地址: https://www.cveoy.top/t/topic/iqbe 著作权归作者所有。请勿转载和采集!