1

我找不到函数“ netlink_register_notifier ”或“ netlink_unregister_notifier”,它们用于在当前支持使用 netlink_kernel_create( net , ...) 函数的 Unix 内核中的“ NETLINK_URELEASE ”等事件期间处理通知

    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);
}

现在,如果我通过运行启动 lxc

lxc-start -d -n Container1

然后内核崩溃但是如果我删除了整个通知程序 netlink_register_notifier 和 netlink_unregister_notifier 事情都很好,但现在我无法处理用户应用程序终止:(

4

0 回答 0