大家好,我是陈景序,今天我们来聊聊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(
