Linux
文章平均质量分 78
newand
nothing
展开
-
用户空间与内核的通信方式之netlink
用户空间与内核通信方式主要有两种:/proc和netlinknetlink涉及的数据结构 struct msghdr { void *msg_name; //数据包目的地址(对应sockaddr_in) int msg_namelen; //数据原创 2013-08-02 16:09:44 · 803 阅读 · 0 评论 -
Libconfig
一:什么是Libconfig?程序开发过程中往往很多参数需要放在配置文件中,因为这样可以避免更改代码重新编译的问题。通常我们可以通过自己读init文件来实现,不过已经有很多人做了这方面的东西,可以借用,Libconfig就是其中之一。Libconfig是用来读写,控制配置文件的一个库,目前支持C和C++两种语言,方便好用,可以一试。二:怎么使用?1. 下载http:原创 2013-03-03 16:35:29 · 2494 阅读 · 0 评论 -
netfilter例3:扩展ip报头
前两个例子是比较简单的应用。本例对报文头部做扩展,加上一个扩展报头。/** This programe is working as plugin of netfilter which will pin a timestamp to* the destination header of ipv6 packet every x seconds when the packet is * the原创 2012-12-10 16:33:52 · 1063 阅读 · 0 评论 -
netfilter例2:改ip报文头部里的ip地址
本例对ip报文的报头源地址做了修改,然后转发。文件名:change_srcip.c/** this programe is working as plugin of netfilter which will change the source address* of ipv6 packets.*/#include #include #include #include #原创 2012-12-06 17:00:44 · 2819 阅读 · 0 评论 -
Linux内核模块编程
1. 内核模块通常我们说的内核模块全称是可加载内核模块(loadable kernel modules)。如果没有 内核模块的话,那么对Linux这种单内核系统而言,所有模块需要全部放在内存中,而且每次更改都需要重新编译,重新启动系统,有了它则避免了以上问题,可以在需要的时候加载内核中。2. 内核模块基本结构基本结构包括,头文件,模块信息,初始化及退出清理模块函数。//hello原创 2012-12-05 22:25:20 · 576 阅读 · 0 评论 -
netfilter例1:禁止访问某ip地址
netfilter的功能很强大,可以提供类似防火墙那样的访问控制,可以更改报文结构,可以新增报文。本模块实现这样一个功能,对禁止访问指定的ip地址(包括ipv6的和ipv4的)。 文件名:block_packet.c/** this programe is working as plugin of netfilter * which block some special ipv6原创 2012-12-06 11:11:36 · 997 阅读 · 1 评论 -
netfilter简介
1. netfilter简介netfilter是在Linux内核中一组钩子,这些钩子允许在网络协议栈中使用内核模块来注册回调函数,可以处理协议栈中经过钩子的每一个报文。因此我们可以利用它来实现很多功能,如过滤报文,修改报文等。和netfilter常常出现在一起的还有iptable,它是在netfilter基础上在Linux内核中内置的防火墙架构,它工作在用户空间,根据我们配置的规则集工作,原创 2012-12-03 21:28:08 · 1421 阅读 · 0 评论 -
Linux的completions同步机制
1. 什么是completions机制?在内核编程中常有这样的场景,在当前线程中创建一个线程,并且等待它完成之后再继续执行。通常可以用信号量来解决它,也可以用completion机制来解决。2. 为什么用completions ,它比信号量好在哪?使用completion比使用信号量简单。使用completion可以一次性唤醒所有等待进程,而用信号量会比较麻烦。 The b原创 2013-08-02 16:08:31 · 808 阅读 · 0 评论