Linux网络子系统安全性模块详细分析之文件xfrm_state.c函数介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络子系统安全性模块详细分析之文件xfrm_state.c函数介绍相关的知识,希望对你有一定的参考价值。

2.4.4.4 外部函数


1. tasklet_hrtimer_start ( )

函数原型:

static inline int tasklet_hrtimer_start(struct tasklet_hrtimer *ttimer, ktime_t time, const enum hrtimer_mode mode)

函数参数:ttimer为含有定时器的小任务,time表示时间结构,mode表示时间的模式是相对时间还是绝对时间。

函数功能:设置带有定时器的小任务。

返回值:定时器如果在队列中则返回1,否则返回0。

 


2.4.4.5 内部函数

 

1. xfrm_state_init ( )

函数原型:

int __net_init xfrm_state_init(struct net *net)

函数参数:net表示网络命名空间,里面包含了部分网络设备的信息,以及协议信息等。

函数功能:用于安全关联SA的初始化,主要创建了全局的SA链表,以及建立了目的地址、源地址和SPI三组Hash表,每组Hash表包含8个链表,函数还初始化了垃圾回收链表和等待队列。

返回值:成功返回0,失败返回无内存错误。

2. xfrm_state_alloc( )

函数原型:

struct xfrm_state *xfrm_state_alloc(struct net *net)

函数参数:net表示网络命名空间,里面包含了部分网络设备的信息,以及协议信息等。

函数功能:分配SA结构,并初始化其中的链表,以及生存期成员。

返回值:返回SA结构。

3. xfrm_state_insert ( )

函数原型:

void xfrm_state_insert(struct xfrm_state *x)

函数参数:参数x为SA结构,表示要插入到系统链表中的SA。

函数功能:将当前的SA插入到系统的链表,以及目的地址、源地址、SPI的Hash表中,并进行定时器相关设置。

返回值:无。

4. xfrm_state_find ( )

函数原型:

struct xfrm_state *

xfrm_state_find(const xfrm_address_t *daddr, const xfrm_address_t *saddr,

const struct flowi *fl, struct xfrm_tmpl *tmpl,

struct xfrm_policy *pol, int *err,

unsigned short family)

函数参数:daddr为要查找的目的地址,http://www.51969.com/saddr为要查找的源地址,fl表示当前的数据流,tmpl为SA模块,与SA进行匹配,pol为当前的策略,err为被调用函数返回错误码,family表示协议簇。

函数功能:查找SA,当内核发现一个包符合安全策略时会查找是否有相应的SA, 如果有则返回,否则会通知用户空间的IKE工具进行协商, 生成新的SA。

返回值:返回SA。

5. xfrm_find_acq ( )

函数原型:

struct xfrm_state *

xfrm_find_acq(struct net *net, struct xfrm_mark *mark, u8 mode, u32 reqid, u8 proto,

const xfrm_address_t *daddr, const xfrm_address_t *saddr,

int create, unsigned short family)

函数参数:net为网络命名空间,mark为SA的标记,mode为工作模式,reqid为序列号,proto为协议,daddr和saddr分别为目的和源地址,create为创建判断变量,family为协议簇。

函数功能:查找ACQUIRE类型的SA,此种类型的SA并非真正意义上的SA,当内核发现数据需要进行Ipsec处理时会查找是否有相应的SA,如果没有就向用户空间的IKE发送ACQUIRE请求, 并生成一个ACQUIRE类型的SA,待用户空间协商成功会生成合适的SA传内核, 内核就会替换此ACQUIRE的SA。

返回值:查找到的SA。

6. xfrm_state_update ( )

函数原型:

int xfrm_state_update(struct xfrm_state *x)

函数参数:安全关联SA

函数功能:使用SA更新系统的SAD,如果该SA的类型为ACQ则将其插入到SAD中。

返回值:成功返回0,否则返回错误码。

7. xfrm_state_gc_task ( )

函数原型:

static void xfrm_state_gc_task(struct work_struct *work)

函数参数:work为工作队列。

函数功能:释放垃圾链表中的SA,并唤醒等待队列。

返回值:无。

8. km_state_expired ( )

函数原型:

void km_state_expired(struct xfrm_state *x, int hard, u32 pid)

函数参数:参数x为SA结构,hard为强行通知变量,pid为进程的PID。

函数功能:调用xfrm_mgr中的notity函数进行SA到期的回调通知,并唤醒等待队列。

返回值:无。

 



以上是关于Linux网络子系统安全性模块详细分析之文件xfrm_state.c函数介绍的主要内容,如果未能解决你的问题,请参考以下文章

网络空间安全中职重庆市比赛赛题解析分析四个阶段解析答案(共五套题)第二套题目

2021全国职业技能大赛-网络安全赛题解析———防火墙篇iptables(超详细)

全国职业技能大赛网络安全-金砖技能大赛——应急响应内存镜像分析(超详细解析)

2023年广东省网络安全竞赛——Linux 操作系统渗透解析(超级详细)

网络空间安全中职重庆市比赛赛题解析分析四个阶段解析答案(共五套题)第五套题目

网络空间安全中职重庆市比赛赛题解析分析四个阶段解析答案(共五套题)第五套题目