



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
netfilter提供了nf_register_sockopt()和nf_unregister_sockopt()来动态登记或取消sockopt命令字;打开一个网络socket后可以使用set/getsockopt(2)可实现用户空间与内核的通信,本质和ioctl差不多,区别在于set/getsockopt不用新建设备,直接利用系统已有的socket类型就可以进行,可用setsockopt函数向内核写数据,用getsockopt向内核读数据。module.c:#include#include#include#include#include#include#include#defineSOCKET_OPS_BASE128#defineSOCKET_OPS_SET(SOCKET_OPS_BASE)#defineSOCKET_OPS_GET(SOCKET_OPS_BASE)#defineSOCKET_OPS_MAX(SOCKET_OPS_BASE+1)#defineKMSGamessagefromkernel#defineKMSG_LENsizeof(amessagefromkernel)MODULE_LICENSE(GPL);staticintrecv_msg(structsock*sk,intcmd,void_user*user,unsignedintlen)intret=0;printk(KERN_INFOsockopt:recv_msg()n);if(cmd=SOCKET_OPS_SET)charumsg64;intlen=sizeof(char)*64;memset(umsg,0,len);ret=copy_from_user(umsg,user,len);printk(recv_msg:umsg=%s.ret=%dn,umsg,ret);return0;staticintsend_msg(structsock*sk,intcmd,void_user*user,int*len)intret=0;printk(KERN_INFOsockopt:send_msg()n);if(cmd=SOCKET_OPS_GET)ret=copy_to_user(user,KMSG,KMSG_LEN);printk(send_msg:umsg=%s.ret=%d.successn,KMSG,ret);return0;staticstructnf_sockopt_opstest_sockops=.pf=PF_INET,.set_optmin=SOCKET_OPS_SET,.set_optmax=SOCKET_OPS_MAX,.set=recv_msg,.get_optmin=SOCKET_OPS_GET,.get_optmax=SOCKET_OPS_MAX,.get=send_msg,.owner=THIS_MODULE,;staticint_initinit_sockopt(void)printk(KERN_INFOsockopt:init_sockopt()n);returnnf_register_sockopt(&test_sockops);staticvoid_exitfini_sockopt(void)printk(KERN_INFOsockopt:fini_sockopt()n);nf_unregister_sockopt(&test_sockops);module_init(init_sockopt);module_exit(fini_sockopt);user.c:#include#include#include#include#include#include#defineSOCKET_OPS_BASE128#defineSOCKET_OPS_SET(SOCKET_OPS_BASE)#defineSOCKET_OPS_GET(SOCKET_OPS_BASE)#defineSOCKET_OPS_MAX(SOCKET_OPS_BASE+1)#defineUMSGamessagefromuserspace#defineUMSG_LENsizeof(amessagefromuserspace)charkmsg64;intmain(void)intsockfd;intlen;intret;sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_RAW);if(sockfd0)printf(cannotcreateasocketn);return-1;/*callfunctionrecv_msg()*/ret=setsockopt(sockfd,IPPROTO_IP,SOCKET_OPS_SET,UMSG,UMSG_LEN);printf(setsockopt:ret=%d.msg=%sn,ret,UMSG);len=sizeof(char)*64;/*callfunctionsend_msg()*/ret=getsockopt(sockfd,IPPROTO_IP,SOCKET_OPS_GET,kmsg,&len);printf(getsockopt:ret=%d.msg=%sn,ret,kmsg);if(ret!=0)printf(getsockopterror:errno=%d,errstr=%sn,errno,strerror(errno);close(sockfd);return0;Makefile:TARGET=testOBJS=test.oMDIR=drivers/miscEXTRA_CFLAGS=-DEXPORT_SYMTABCURRENT=$(shelluname-r)KDIR=/lib/modules/$(CURRENT)/buildPWD=$(shellpwd)DEST=/lib/modules/$(CURRENT)/kernel/$(MDIR)obj-m:=$(TARGET).o$(TARGET)-objs:=module.odefault:make-C$(KDIR)SUBDIRS=$(PWD)modulesgcc-ouseruser.c$(TARGET).o:$(OBJS)$(LD)$(LD_RFLAG)-r-o$(OBJS)ifneq(,$(findstring2.4.,$(CURRENT)install:su-ccp-v$(TARGET).o$(DEST)&/sbin/depmod-aelseinstall:su-ccp-v$(TARGET).ko$(DEST)&/sbin/depmod-aendifclean:-rm-rf*.o*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国智慧农业技术推广现状与乡村振兴机遇分析报告
- 2025贵州道真自治县农业农村局特聘农技员(动物防疫员)考试参考试题及答案解析
- 2025内蒙古草原牧区经济与发展研究中心科研助理招聘1人考试参考试题及答案解析
- 2026中国五洲集团校园招聘全面开启考试参考试题及答案解析
- 农业特色养殖技术推广合作合同
- 2025年青铜峡市职业教育中心秋季学期教师招聘考试参考试题及答案解析
- 2025福建福州第八中学招聘代课教师及行政人员5人考试参考试题及答案解析
- 2025河南郑州市第十五人民医院招聘26人考试参考试题及答案解析
- 2025德宏州瑞丽海关综合技术中心招聘(3人)考试参考试题及答案解析
- 2025年马鞍山二中附属新博中学秋季学期宿舍管理员招聘3名考试参考试题及答案解析
- 2025年国家网络安全宣传周知识竞赛题库(试题及答案)
- 国企纪委面试题目及答案
- 2025年广西专业技术人员继续教育公需科目(三)答案
- 《论教育》主要篇目课件
- 银杏内酯的药代动力学研究
- 防止滑倒摔伤事故的安全培训
- DB11-T 1796-2020文物建筑三维信息采集技术规程
- (完整版)工程流体力学课件(第四版)
- 非常规油气勘探开发
- 小学科学课堂存在的问题与解决方法
- 陕西污水处理定价成本监审办法
评论
0/150
提交评论