1、netlink_kernel_create()函数分析
/*
* We export these functions to other modules. They provide a
* complete set of kernel non-blocking support for message
* queueing.
*/
struct sock *
netlink_kernel_create(struct net *net, int unit, unsigned int groups,
void (*input)(struct sk_buff *skb),
struct mutex *cb_mutex, struct module *module)
//net参数是新引入的,可用&init_net。这个init_net结构体是在linux/net/core/net_namespace.c 中定义的,此外在linux/include/net/net_namespace.h中也有外部定义,直接作为参数使用
//即可。unit即netlink接口类型,有ROUTE,FIREWALL,IP6_FW,XFRM等,最大值为MAX_LINKS。groups为具体各种类型netlink接口中的组号。input是消息处理函数,只要用户程序发送一个NETLINK_TEST类型的netlink消息到内核的话,通过netlink_kernel_create()函数注册的回调函数input()都会被调用。cb_mutex和module都是新添加的参数,具体功能不了解。
{
struct socket *sock;
struct sock *sk;