netlink 审计子系统分析

netlink在审计子系统中的应用分析
本文探讨了netlink作为内核与用户层通信的机制,它提供了一种无需轮询、简单易实现的方式,使内核能主动发送信息。netlink支持数据报、双向及多播通信,并且工作异步。审计子系统利用netlink进行通信,相关代码位于kernel/audit.c。文章介绍了回调函数的具体实现,并引用了相关资源。

netlink 是一种基于网络的通信机制,允许在内核内部以及内核与用户层之间进行通信,其正式定义见RFC3549

netlink 相对于 procfs 或 sysfs 具有以下优势:

1.不需要轮询。

2. 简单、容易实现。

3. 内核可以直接向用户层发送信息,而无需用户层事先请求。

netlink 只支持数据报信息,但提供了双向通信。此外,netlink 不仅支持单播信息,也可以进行多播。类似于其他socket机制,netlink的工作方式是异步的。


审计子系统代码: kernle/audit.c

/* Initialize audit support at boot time. */
static int __init audit_init(void)
{
    int i;

    if (audit_initialized == AUDIT_DISABLED)
        return 0;

    printk(KERN_INFO "audit: initializing netlink socket (%s)\n",
           audit_default ? "enabled" : "disabled");
    audit_sock = netlink_kernel_create(&init_net, NETLINK_AUDIT, 0,
                       audit_receive, NULL, THIS_MODULE);
    if (!audit_sock)
        audit_panic("cannot initialize netlink socket");
    else
        audit_sock->sk_sndtimeo = MAX_SCHEDULE_TIMEOUT;

    skb_queue_head_init(&audit_skb_queue);
    skb_queue_head_init(&audit_s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值