新手求教,跪求,内核如何使用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);广播
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com