我找不到功能" netlink_register_notifier "或" netlink_unregister_notifier" ,用于在" NETLINK_URELEASE "等事件中处理通知。在当前Unix内核支持网络命名空间中使用netlink_kernel_create( net ,...)"功能使用
register_pernet_subsys
那么处理Netlink通知的方式是什么?像NETLINK_URELEASE?
当用户空间进程关闭或终止时,内核中的netlink通知程序将被调用,我们可以处理清除关闭;现在如何在当前支持网络命名空间的Linux内核中处理这个问题。
例如:
static int my_notifier(struct notifier_block *this,
unsigned long event, void *ptr)
{
/* NO CODE HERE other than return*/
return NOTIFY_DONE;
}
static struct notifier_block nBlk =
{
.notifier_call = my_notifier,
};
static int __net_init my_netlink_start(struct net *net)
{
nlsk = kzalloc(sizeof(*nlsk), GFP_KERNEL);
if (!nlsk)
return -ENOMEM;
netlink_register_notifier(&nBlk);
nlsk->sk = netlink_kernel_create(net ...);
...
}
static void my_netlink_end(struct net *net)
{
netlink_kernel_release(nlsk->sk);
netlink_unregister_notifier(&nBlk);
}
现在,如果我通过运行
启动lxclxc-start -d -n Container1
然后内核崩溃然后如果我删除了整个通知程序netlink_register_notifier和netlink_unregister_notifier的东西都运行得很好但是现在我无法处理用户应用程序终止:(