码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2017-01-20 11:14:06      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:垃圾   部分   timer   hash表   网络   内存错误   分配   链表   lin   

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函数介绍

标签:垃圾   部分   timer   hash表   网络   内存错误   分配   链表   lin   

原文地址:http://www.cnblogs.com/qixoo/p/6321996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!