linux netlink简单配置使用
来源:互联网 发布:防御矩阵 觉醒 编辑:程序博客网 时间:2024/06/05 19:59
内核模块
#include <linux/init.h>
#include <linux/module.h>#include <linux/kernel.h>
//#include <linux/netlink.h>
//#include <net/netlink.h>
//#include <linux/socket.h>
#include <net/sock.h>
#define NL_TEST 21
#define MYPAYLOAD NLMSG_ALIGN(100)
extern struct net init_net;
struct sock *sock = NULL;
unsigned int pid;
void NL_kernel_send(void)
{
struct sk_buff *skb_send = NULL;
struct nlmsghdr *nlh_send = NULL;
int ret;
char *buf = "kernel recv ok!";
skb_send = alloc_skb(NLMSG_SPACE(MYPAYLOAD ), GFP_ATOMIC);
if (NULL == skb_send){
printk("alloc_skb fail\n");
return ;
}
nlh_send = nlmsg_put(skb_send, 0, 0, 0, MYPAYLOAD, 0);
NETLINK_CB(skb_send).pid = 0;
//NETLINK_CB(skb_send).dst_pid = pid;
NETLINK_CB(skb_send).dst_group = 0;
memcpy(NLMSG_DATA(nlh_send), buf, sizeof(buf));
ret = netlink_unicast(sock, skb_send, pid, MSG_DONTWAIT);
if (ret < 0) {
printk(KERN_ERR "net_link: can not unicast skb \n");
return ;
}
printk("net_link: send is ok.\n");
return ;
}
void NL_kernel_recv(struct sk_buff * skb)
{
struct nlmsghdr *nlh = NULL;
skb_get(skb);
nlh = nlmsg_hdr(skb);
pid = nlh->nlmsg_pid;
kfree_skb(skb);
NL_kernel_send();
}
int netlink_init(void)
{
sock = netlink_kernel_create(&init_net, NL_TEST, 0, NL_kernel_recv, 0, THIS_MODULE);
return 0;
}
void netlink_exit(void)
{
sock_release(sock->sk_socket);
}
module_init(netlink_init);
module_exit(netlink_exit);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("PFFW");
MODULE_AUTHOR("PFFW");
0 0
- linux netlink简单配置使用
- linux使用 netlink 添加路由简单代码
- Linux Netlink 基本使用
- Linux Netlink基本使用
- Linux Netlink基本使用
- Linux netlink socket使用总结
- Linux netlink之添加一个简单协议
- netlink简单介绍 (linux-3.14.2)
- linux netlink的使用及示例
- Linux下使用NetLink 监听网络变化
- linux netlink的使用及示例
- linux netlink
- Linux Netlink
- Linux Netlink
- linux netlink
- Linux netlink
- netlink linux
- Linux Netlink
- 批处理TexturePacker指打包图
- Java 一个String对象为空和空串
- iOS添加到购物车的简单动画效果
- C++ replace() 函数用法详解
- (黑马程序员)学习笔记,javaAPI之String
- linux netlink简单配置使用
- 详解SQL Server 比较带有尾随空格的字符串
- Spring中实现文件上传
- vi
- 修改编译 SynEdit 源码
- java中的char类型
- 吉列公司申请3D打印剃须刀架技术专利
- C++——CString用法大全
- android emulator创建avd命令