WEB开发网
开发学院网络安全防火墙 iptables 源码分析 阅读

iptables 源码分析

 2007-03-07 12:42:27 来源:WEB开发网   
核心提示: list_entries是规则显示的主要处理函数,Options是显示的标志变量:OPT_VERBOSE:对应-vOPT_NUMERIC:对应-nOPT_EXPANDED:对应-xOPT_LINENUMBERS: -l看来很简单,iptables 源码分析(6),说了这么大一圈子,就是调用

list_entries是规则显示的主要处理函数。

Options是显示的标志变量:

OPT_VERBOSE:对应-v

OPT_NUMERIC:对应-n

OPT_EXPANDED:对应-x

OPT_LINENUMBERS: -l

看来很简单,说了这么大一圈子,就是调用 iptc_init获取表的规则信息,调用list_entries函数显示规则。

1.1 表的查找

再回到iptc_init 函数上来,它根据表名,从内核获取对应的表的相关信息,handle是一个iptc_handle_t类型的指针,在libiptc.c中,有如下定义:

/* Transparent handle type. */

typedef struct iptc_handle *iptc_handle_t;

在Libip4tc中:

#define STRUCT_TC_HANDLE struct iptc_handle

在Libiptc.c中,可以找到STRUCT_TC_HANDLE的定义:

  STRUCT_TC_HANDLE
  {
  /* Have changes been made? */
  int changed;
  /* Size in here reflects original state. */
  STRUCT_GETINFO info;
  struct counter_map *counter_map;
  /* Array of hook names */
  const char **hooknames;
  /* Cached position of chain heads (NULL = no cache). */
  unsigned int cache_num_chains;
  unsigned int cache_num_builtins;
  /* Rule iterator: terminal rule */
  STRUCT_ENTRY *cache_rule_end;
  /* Number in here reflects current state. */
  unsigned int new_number;
  STRUCT_GET_ENTRIES entries;
  };

再来看看iptc_init函数,同样在在Libip4tc中,有如下定义:

#define TC_INIT iptc_init

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:iptables 源码 分析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接