2.6版本的 netlink_kernel_create(&init_net, NETLINK_TEST, 0, NULL,kernel_receive,THIS_MODULE); 3.8后版本 netlink_kernel_create(&init_net, NETLINK_TEST, &cfg); cfg 的定义如下。 struct netlink_kernel_cfg cfg = { .input =kernel_receive};...
内核通过netlink_kernel_create()/netlink_kernel_release() 创建/销毁struct sock: staticinlinestructsock *netlink_kernel_create(structnet *net,intunit,structnetlink_kernel_cfg *cfg) net:net指向所在的网络命名空间,一般默认传入的是&init_net,不需要定义;定义在net_namespace.c中。 unit:netlink协议类型。
netlink_kernel_create 创建netlink内核通信服务端,定义如下,uinit就是魔术字表示使用哪种协议,下面使用的是自定义的魔术字 NETLINK_TEST,通常设置网络参数使用的是NETLINK_ROUTE 魔术字 static inline struct sock * netlink_kernel_create(struct net *net, int unit, struct netlink_kernel_cfg *cfg) { retur...
—配置。kconfig和make就好比将军和士兵。kconfig是指导方向的,make是干活的。kconfig对内核进行配置,告诉make,哪些功能需要编译进内核,哪些功能要作为模块编译,make便根据配置文件来进行编译。 ###编译步骤 获取内核源码(这几天kernel.org被黑了,该步骤方法暂时用不了): 1、使用git工具: ubuntu ...
netlink_kernel_create内核函数用于创建 内核socket用用户态通信 1 static inline struct sock * 2 netlink_kernel_create(struct net *net, int unit, struct netlink_kernel_cfg *cfg) 3 /* net: net指向所在的网络命名空间, 一般默认传入的是&init_net(不需要定义); 定义在net_namespace.c(extern struct...
.create = netlink_create, .owner = THIS_MODULE, /* for consistency 8) */ }; ... sock_register(&netlink_family_ops); PF_NETLINK是表示 netlink 的协议族,在后面我们在客户端创建 netlink socket 的时候就要用到这个东东。如下面的代码,代码来自我的测试代码https://github.com/helight/kernel_...
= netlink_rcv_msg, /* set recv callback */}; staticint __init netlink_init(void){/* create netlink socket */ nl_sk = (struct sock *)netlink_kernel_create(&init_net, NETLINK_TEST, &cfg);if(nl_sk == NULL) { printk("netlink_kernel_create error !\n");return-1;...
/* create netlink socket */ nlsk = (struct sock *)netlink_kernel_create(&init_net, NETLINK_TEST, &cfg); if(nlsk == NULL) { printk("netlink_kernel_create error !\n"); return -1; } printk("test_netlink_init\n"); return 0; } void test_netlink_exit(void) { if (nlsk){...
/* create netlink socket */ nlsk = (struct sock *)netlink_kernel_create(&init_net, NETLINK_TEST, &cfg); if(nlsk == NULL) { printk("netlink_kernel_create error !\n"); return -1; } printk("test_netlink_init\n"); return 0; ...
__kernel_sa_family_t nl_family; /* AF_NETLINK (跟AF_INET对应)*/ unsigned short nl_pad; /* zero */ __u32 nl_pid; /* port ID (通信端⼝号)*/ __u32 nl_groups; /* multicast groups mask */ };2. struct nlmsghd 结构:/* struct nlmsghd 是netlink消息...