1. netlink_kernel_create创建失败,返回NULL。
代码:nl_sk = netlink_kernel_create(&init_net, NETLINK_GENERIC, 0, nl_data_ready, NULL, THIS_MODULE);
原因:参数2 值为NETLINK_GENERIC,而该协议在系统已经被占用,可以使用下面命令查看:
cat /proc/net/netlink
解决办法:添加自定义协议
#define NETLINK_TEST 21
nl_sk = netlink_kernel_create(&init_net, NETLINK_TEST, 0, nl_data_ready, NULL, THIS_MODULE);
注意:应用也要修改。