Linux Netlink???????
?????lvyilong316 ???????[ 2016/8/12 11:06:39 ] ?????????????? Linux
???????????????????????????????????????Netlink???????????????????nl_groups????????????潲??????????濴??????????????Netlink???
????4. ??? Netlink api
????4.1???? netlink socket
????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);
?????????????
????(1) net?????????????????namespace??????????????????????????????????????????????net_device?????????????????? init_net???????????
????(2) unit?????netlinkЭ?????????NETLINK_TEST??NETLINK_SELINUX??
????(3) groups?????????
????(4) input????????鶨???netlink?????????????????? ????????netlink socket?????input?????????????????д??????????????????sendmsg????????
????(5) cb_mutex????????????????????????
????(6) module?? ????THIS_MODULE??
????4.2 ?????????? netlink_unicast
????int netlink_unicast(struct sock *ssk?? struct sk_buff *skb?? u32 pid?? int nonblock)
?????????????
????(1) ssk??????? netlink_kernel_create()?????socket??
????(2) skb??????????????data????????????netlink????????? skb?????鱣??????????????????NETLINK_CB(skb)???????????????顣
????(3) pid????????????????pid???????????????????????????????? 0??
????(4) nonblock??????ú???????????????????1???ú?????????н???????????????????????????0???ú???????н?????????????????
????4.3 ???????? netlink_broadcast
????int netlink_broadcast(struct sock *ssk?? struct sk_buff *skb?? u32 pid?? u32 group?? gfp_t allocation)
?????????????????? netlink_unicast?????????group????????????飬?ò?????????λ??????????飬?????????????????飬??ò?????????????????ID??λ??????allocation????????????????????GFP_ATOMIC??GFP_KERNEL??GFP_ATOMIC???????????????????????????????GFP_KERNEL???????????????
????4.4 ??? netlink socket
????int netlink_broadcast(struct sock *ssk?? struct sk_buff *skb?? u32 pid?? u32 group?? gfp_t allocation)
????5. ???????????
#include <linux/init.h>
#include <linux/module.h>
#include <linux/timer.h>
#include <linux/time.h>
#include <linux/types.h>
#include <net/sock.h>
#include <net/netlink.h>
#define NETLINK_TEST 25
#define MAX_MSGSIZE 1024
int stringlength(char *s);
int err;
struct sock *nl_sk = NULL;
int flag = 0;
//???????????????
void sendnlmsg(char *message?? int pid)
{
struct sk_buff *skb_1;
struct nlmsghdr *nlh;
int len = NLMSG_SPACE(MAX_MSGSIZE);
int slen = 0;
if(!message || !nl_sk)
{
return ;
}
printk(KERN_ERR "pid:%d "??pid);
skb_1 = alloc_skb(len??GFP_KERNEL);
if(!skb_1)
{
printk(KERN_ERR "my_net_link:alloc_skb error ");
}
slen = stringlength(message);
nlh = nlmsg_put(skb_1??0??0??0??MAX_MSGSIZE??0);
NETLINK_CB(skb_1).pid = 0;
NETLINK_CB(skb_1).dst_group = 0;
message[slen]= ' 主站蜘蛛池模板: 亚洲欧美日韩国产综合专区 | 成年免费看片在线观看 | 激情欧美一区二区三区 | 国产日产欧美一区二区三区 | 五月天丁香婷婷开心激情五月 | 久久这里只精品99re免费 | 又黄又爽又色视频 | 在线看片网站 | 好紧好湿好黄的视频 | 成年在线观看网站免费视频 | 久久人人爽人人爽人 | 欧美超高清在线观看 | 国产自啪啪| 中文字幕丝袜制服 | 国产亚洲欧美日韩在线看片 | 欧美另类综合 | 99视频精品全部在线播放 | 免费观看60秒做受视频 | 加勒比一本大道香蕉在线视频 | 欧美 日韩 国产 在线 | 婷婷精品在线 | 精品一区二区视频在线观看 | 日本三级香港三级人妇网站 | 欧美成人一区二区 | 看全色黄大色黄女片爽毛片 | 99久久中文字幕伊人情人 | 久中文字幕中文字幕亚洲无线 | 免费黄色的视频 | 午夜寂寞影院在线观看 | 99免费| 欧美性猛交ⅹxxx乱大交按摩 | 成人免费在线网站 | 欧美青青草 | 亚欧洲乱码专区视频 | 狠狠干狠狠爱 | 日本一区二区影院 | 99免费观看视频 | 黄色毛片黄色毛片 | 日韩一区二区在线视频 | 午夜一级做a爰片久久毛片 午夜一级免费视频 | 制服丝袜中文 |