易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux netfilter源码分析(3)

转贴自:http://alexanderlaw.blog.hexun.com/8968782_d.html
三、ipt_table表的注册
 
init()函数初始化时调用了ipt_register_table函数进行表的注册
 
3.1  ip_tables.c 表的注册 ipt_register_table
int ipt_register_table(struct ipt_table *table)
{
       int ret;
       struct ipt_table_info *newinfo;
       static struct ipt_table_info bootstrap
              = { 0, 0, 0, { 0 }, { 0 }, { } };
 
/*宏MOD_INC_USE_COUNT用于模块计数器累加,主要是为了防止模块异常删除,对应的宏MOD_DEC_USE_COUNT就是累减了*/
       MOD_INC_USE_COUNT;  
 
/*为每个CPU分配规则空间*/
       newinfo = vmalloc(sizeof(struct ipt_table_info)
                       + SMP_ALIGN(table->table->size) * smp_num_cpus);
       if (!newinfo) {
              ret = -ENOMEM;
              MOD_DEC_USE_COUNT;
              return ret;
       }
 
/*将规则项拷贝到新表项的第一个cpu空间里面*/
       memcpy(newinfo->entries, table->table->entries, table->table->size);
 
/*translate_table函数将newinfo表示的table的各个规则进行边界检查,然后对于newinfo所指的ipt_talbe_info结构中的hook_entries和underflows赋予正确的值,最后将表项向其他cpu拷贝*/
       ret = translate_table(table->name, table->valid_hooks,
                 &


相关文档:

实战Linux Bluetooth编程 (七) SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

盘点2009:Linux服务器软件发展亮点多

硬件技术一直和软件技术相依相随,随着服务器硬件和芯片技术的进步,推动着服务器操作系统技术的变革。
  芯片技术的发展:从x86到龙芯
  2009年,各大芯片厂商都推出了多款芯片产品:如Intel公司基于Nehalem架构发布的桌面端芯片产品酷睿i7;AMD公司也推出了基
于新Fiorano平台的代号为“伊斯坦布尔”的六 ......

(转载)关于Linux内核学习

常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需:
  1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著,但总要知道分时(time-s ......

Linux netfilter源码分析(2)

转贴自http://alexanderlaw.blog.hexun.com/8968771_d.html
二、ipt_table数据结构和表的初始化
 
2.1  include/linux/netfilter_ipv4/ip_tables.h   struct  ipt_table 表结构
struct ipt_table
{
struct list_head list;
/* 表链 */
char name[IPT_TABLE_MAXNAMELEN];
/* 表名,如"fil ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号