- 论坛徽章:
- 0
|
在内核创建一个sock:其中NETLINK_PRODATA为自己新增的协议类型定位,值为23,没有冲突;PRONETLINK_GRP_MAX为自定义的group组,值为1
static int __init pronetlink_net_init(void)
{
pronetlink_sock = netlink_kernel_create(&init_net, NETLINK_PRODATA, PRONETLINK_GRP_MAX,
protocol_netlink_rcv, NULL, THIS_MODULE);
if (!pronetlink_sock)
{
return -ENOMEM;
}
return 0;
}
在使用处进行调用:
netlink_broadcast(pronetlink_sock, skbb, 0, PRONETLINK_GRP_DATA, GFP_KERNEL);
结果在如下循环的地方始终是first指针为空,导致不能调用do_one_broadcast发送;
sk_for_each_bound(sk, node, &nl_table[ssk->sk_protocol].mc_list)
do_one_broadcast(sk, &info);
|
|