新手求教,跪求,内核如何使用netlink协议发送数据
发布网友
发布时间:2022-04-20 09:49
我来回答
共1个回答
热心网友
时间:2024-02-16 19:02
这是我之前的代码仅供参考
struct nlmsghdr *nlh;
struct sk_buff *skb;
if (!netlink_has_listeners(nls, group)) 看看有没有对象监听
return;
if (!(skb = alloc_skb(size, GFP_KERNEL))) { 注意这个地方要给skb分配一块空间,用过后netlink会自己释放 所以不需要你去free
pr_err("%s: alloc_skb failed.\n", __func__);
return;
}
nlh = NLMSG_PUT(skb, 0, 0, NLMSG_DONE, size - sizeof(*nlh));
if (snprintf((char *)NLMSG_DATA(nlh), MAX_NLMSG_LEN,
"这里是你需要传送上去的字符串",字符串参数) {
pr_err("%s Buffer overflowed.", __func__);
goto nlmsg_failure;
}
NETLINK_CB(skb).dst_group = NETLINK_CASTGROUP; netlink的发送link号
(void)netlink_broadcast(nls, skb, 0,NETLINK_CASTGROUP , GFP_KERNEL);广播