跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Linux下的Netlink通信,到底怎么做?

大家好,我是陈景序,今天我们来聊聊Linux下的Netlink通信。Netlink是一种在内核和用户空间之间进行通信的机制,它广泛应用于路由表管理、uevent等场景。今天,我们就来一起了解一下Netlink的基本原理和实战技巧。

首先,Netlink通信包括内核空间和用户空间两部分,具体来说,是两个分别位于内核空间和用户空间的AF_NETLINK协议簇套接字。接下来,我会通过一个具体的例子,带你一步步了解Netlink通信的过程。

内核空间Netlink示例模块

/* netlink_kern_test.c */
#include 
#include 
#include 
#include 
#include 

extern struct net init_net;

#define NETLINK_TEST	30
#define MSG_LEN		100
#define USER_PORT	66

static struct sock *test_nlsk;

int send_usrmsg(char *buf, uint16_t len)
{
    /* ... */
}

static void netlink_rcv_msg(struct sk_buff *skb)
{   
    /* ... */
}

static int __init test_netlink_init(void)
{
    /* ... */
}

static void __exit test_netlink_exit(void)
{
    /* ... */
}

module_init(test_netlink_init);
module_exit(test_netlink_exit);

MODULE_LICENSE(
                            

相关文章