基于openswan klips的IPsec实现分析(五)应用层和内核通信——内核操作
转载请注明出处:http://blog.csdn.net/rosetta
在数据发送一节讲过,加载模块时会执行pfkey_init()初始化与用户层通信的PF_KEY套接字,在这个函数里会把支持的协议和算法加到pfkey_supported_list[]全局数组中,并在sock_register ()函数里注册PF_KEY套接字操作函数sock->ops = &pfkey_ops ,pfkey_ops内容如下。
struct proto_ops SOCKOPS_WRAPPED(pfkey_ops)= {
family: PF_KEY,
owner: THIS_MODULE,
release: pfkey_release,
bind: sock_no_bind,
connect: sock_no_connect,
socketpair: sock_no_socketpair,
accept: sock_no_accept,
getname: sock_no_getname,
poll: datagram_poll,
ioctl: sock_no_ioctl,
listen: sock_no_listen,
shutdown: pfkey_shutdown,
setsockopt: sock_no_setsockopt,
getsockopt: sock