IPsec技术详解:XFRM框架、ESP协议实现与数据包处理
1. XFRM初始化
在IPv4中,XFRM初始化通过在 net/ipv4/route.c 的 ip_rt_init() 方法里调用 xfrm_init() 和 xfrm4_init() 方法完成。而在IPv6中, ip6_route_init() 方法会调用 xfrm6_init() 方法来进行XFRM初始化。用户空间和内核之间的通信借助创建 NETLINK_XFRM netlink套接字并收发netlink消息来实现。下面是创建 NETLINK_XFRM 内核套接字的方法:
static int __net_init xfrm_user_net_init(struct net *net)
{
struct sock *nlsk;
struct netlink_kernel_cfg cfg = {
.groups = XFRMNLGRP_MAX,
.input = xfrm_netlink_rcv,
};
nlsk = netlink_kernel_create(net, NETLINK_XFRM, &cfg);
...
return 0;
}
超级会员免费看
订阅专栏 解锁全文
235

被折叠的 条评论
为什么被折叠?



