netlink 通信广播demo

最近在做工程时,用到了内核间通信,需要把内核部分得到发送至用户空间。下面给出demo例子:

分为内核部分和用户空间部分:


首先在内核部分增加一个netlink消息类型

#define NETLINK_URL			23

创建内核的netlink socket

	static struct sock *nlfd;


	struct netlink_kernel_cfg cfg = {
		.groups		= 1,	//组播标识,当前只有1个组	
		.input		= netlink_receive,//接收回调函数
	};

	nlfd = netlink_kernel_create(net, NETLINK_URL, &cfg);
	if (nlfd == NULL) {
		printk(KERN_INFO "netlink kernel create failed\n");
		return -ENOMEM;
	}

向用户空间广播报文

 int send_urlinfo_to_usrspace(struct sk_buff *skb, char *url)
{
	struct sk_buff *info;
	struct nlmsghdr *nlh;
	struct packet_info *data;
	int ret;
	
	if(unlikely(nlfd== NULL))
		return 0;

	if (!netlink_has_listeners(nlfd, 1))
		return 0;

	info = alloc_skb(NLMSG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值