![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
netlink
拿破仑的海阔天空
交流,笔记,提高
展开
-
用户空间和内核空间通讯之【Netlink 中】
今天我们来动手演练一下Netlink的用法,看看它到底是如何实现用户-内核空间的数据通信的。我们依旧是在2.6.21的内核环境下进行开发。 在文件里包含了Netlink协议簇已经定义好的一些预定义协议:点击(此处)折叠或打开#define NETLINK_ROUTE 0 /* Routing/device hook转载 2015-01-20 10:22:17 · 398 阅读 · 0 评论 -
netlink的内核实现原理
注: 当用户态进程发送数据时,调用sendmsg实现,其调用内核netlink_sendmsg函数完成,新建了sk_buff,然后给其cb私有缓存中保存了源地址信息,然后把数据拷贝到sk_buff中[nlmsghdr头部已经附在数据部分前面,作为数据部分了]然后利用netlink_unicast发送出去 而当内核态发送时,新建了一个sk_buff,头部填写了nlmsghd转载 2015-01-20 10:24:02 · 722 阅读 · 0 评论 -
linux 内核与用户空间通信之netlink使用方法
1 引言Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的Posix IPC标准,在三者的基础之上实现了以下几种主要的IPC机制:管道(Pipe)转载 2015-01-20 10:24:52 · 404 阅读 · 0 评论 -
用户空间和内核空间通讯之【Netlink 下】
关于Netlink多播机制的用法 在上一篇博文中我们所遇到的情况都是用户空间作为消息进程的发起者,Netlink还支持内核作为消息的发送方的情况。这一般用于内核主动向用户空间报告一些内核状态,例如我们在用户空间看到的USB的热插拔事件的通告就是这样的应用。 先说一下我们的目标,内核线程每个一秒钟往一个多播组里发送一条消息,然后用户空间所以加入了该组的进程都会收转载 2015-01-20 10:22:54 · 476 阅读 · 0 评论 -
用户空间和内核空间通讯之【Netlink 上】
引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式提供内核与用户空间的双向数据通信;随后,在2.1内核开发过程中,Alexey Kuznetsov将Netlink改写成一个更加灵活、且易于扩展的基于消息通信接口,并将其应用到高级路由子系统的基础框架里。自那时起,Netlink就成了Linux内核子系统和转载 2015-01-20 10:21:26 · 524 阅读 · 0 评论