netlink简单介绍 (linux-3.14.2)
来源:互联网 发布:光环大数据培训靠谱吗 编辑:程序博客网 时间:2024/05/16 14:45
~~~~MARK~~~~~~~:
看了几遍关于netlink的文章:
Kernel Korner - Why and How to Use Netlink Socket:
http://www.linuxjournal.com/article/7356
对应翻译:
http://bbs.chinaunix.net/thread-2029813-1-1.html
相当不错,感谢!
由于netlink的内容一直在变,这些帖子也是有些年头了,所以具体的调用方法与当前的linux kernel有些不匹配,配合linux-3.14.2的code:
netlink_kernel.c
#include <linux/kernel.h>#include <linux/module.h>#include <linux/types.h>#include <linux/sched.h>#include <net/sock.h>#include <linux/netlink.h>#define NETLINK_TEST 17static struct sock *generic_nlsk;static void nl_process_data(struct sk_buff *skb){ //printk("nl_recv_data in\n"); struct nlmsghdr* nlh = NULL; void* data = NULL; printk("skb->len %u\n", skb->len); if (skb->len >= nlmsg_total_size(0)) { nlh = nlmsg_hdr(skb); //printk("nlh->nlmsg_len %u, nlh->nlmsg_flags %u, nlh->nlmsg_pid %u\n", nlh->nlmsg_len, nlh->nlmsg_flags, nlh->nlmsg_pid); data = NLMSG_DATA(nlh); if (data) { printk("data: %s\n", (char*)data); } //printk("NETLINK_CB(skb).portid %u\n", NETLINK_CB(skb).portid); //netlink_unicast(skb->sk, skb, NETLINK_CB(skb).portid, MSG_DONTWAIT); } return;}static int netlink_k_init(void){ struct netlink_kernel_cfg cfg = { .input = nl_process_data, }; generic_nlsk = netlink_kernel_create(&init_net, NETLINK_TEST, &cfg); if (!generic_nlsk) { printk("create NETLINK_GENERIC fail!\n"); return -1; } printk("create NETLINK_GENERIC done\n"); return 0;}static int netlink_init(void){ printk("netlink_k init\n"); netlink_k_init(); return 0;}static void netlink_exit(void){ if (generic_nlsk) { netlink_kernel_release(generic_nlsk); } printk("netlink exit\n");}MODULE_LICENSE("GPL");MODULE_AUTHOR("chuchen");module_init(netlink_init);module_exit(netlink_exit);
user.c参考以上链接的帖子就可以了。
主要的变动:
1 create API
2 struct nlmsghdr定义
0 0
- netlink简单介绍 (linux-3.14.2)
- netlink 简单介绍
- netlink 简单介绍
- Linux netlink机制介绍
- Linux netlink机制介绍
- LINUX netlink机制介绍
- linux netlink简单配置使用
- netlink 编程介绍(V0.2)
- linux netlink机制介绍与实例
- linux netlink机制介绍与实例
- netlink 介绍
- linux使用 netlink 添加路由简单代码
- Linux netlink之添加一个简单协议
- linux netlink
- Linux Netlink
- Linux Netlink
- linux netlink
- Linux netlink
- MFC使用CListCtrl方法
- wpa_supplicant--EVENT 分析
- Oracle EBS WebADI的配置(IE+Excel)
- Android activity的启动模式
- glib介绍
- netlink简单介绍 (linux-3.14.2)
- 粒子系统实现与用户交互的特效
- GoF著作中未提到的设计模式(7):Publish-Subscribe
- eclipse 中将tab键用4个空格表示
- Gesture Recognizers与触摸事件分发
- Javascript:提取 对象的方法作为高阶函数的参数 要注意的
- 如何限制用户在某个时间段内禁止登录数据库
- 黑马程序员_C#基础之方法重载总结
- Struts2中的ModelDriven机制及其运用