首页 > 代码库 > Linux网络子系统安全性模块详细分析之文件xfrm_state.c函数介绍
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函数介绍